リシャーディング、スケーリング、並列処理を使用してシャードの数を変更する - Amazon Kinesis Data Streams

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

リシャーディング、スケーリング、並列処理を使用してシャードの数を変更する

リシャーディングによって、ストリームのデータフロー率の変化に合わせて、ストリーム内のシャードカウントを増減できます。通常、リシャーディングはシャードのデータ処理メトリクスを監視する管理アプリケーションによって実行されます。それKCL自体はリシャーディングオペレーションを開始しませんが、リシャーディングによって生じるシャード数の変化に適応するように設計されています。

で説明したようにリーステーブルを使用して、KCLコンシューマーアプリケーションによって処理されたシャードを追跡する、 は Amazon DynamoDB テーブルを使用してストリーム内のシャードKCLを追跡します。リシャーディングの結果として新しいシャードが作成されると、 は新しいシャードKCLを検出し、テーブルに新しい行を入力します。ワーカーは、新しいシャードを自動的に検出して、それらからのデータを処理するためのプロセッサを作成します。KCL また、 は、利用可能なすべてのワーカーとレコードプロセッサにストリーム内のシャードを分散します。

KCL により、リシャーディング前にシャードに存在していたすべてのデータが最初に処理されます。このデータが処理されると、新しいシャードからのデータがレコードプロセッサに送信されます。このようにして、 は、特定のパーティションキーのデータレコードがストリームに追加された順序KCLを保持します。

例: リシャーディング、スケーリング、並列処理

次の例は、 がスケーリングとリシャーディングの処理にどのようにKCL役立つかを示しています。

  • 例えば、アプリケーションが 1 つのEC2インスタンスで実行されており、4 つのシャードを持つ 1 つの Kinesis データストリームを処理している場合です。この 1 つのインスタンスには、1 つのKCLワーカーと 4 つのレコードプロセッサ (シャードごとに 1 つのレコードプロセッサ) があります。これらの 4 つのレコードプロセッサは、同一のプロセス内で並列実行されます。

  • 次に、別のインスタンスを使用するようにアプリケーションをスケールし、4 つのシャードが含まれる 1 つのストリームを 2 つのインスタンスが処理するとします。KCL ワーカーが 2 番目のインスタンスで起動すると、最初のインスタンスと負荷分散されるため、各インスタンスは 2 つのシャードを処理するようになります。

  • その後、4 つのシャードを 5 つのシャードに分割するとします。はインスタンス間でKCL処理を再度調整します。1 つのインスタンスは 3 つのシャードを処理し、もう 1 つのインスタンスは 2 つのシャードを処理します。シャードをマージするときにも、同様の調整が行われます。

通常、 を使用する場合はKCL、インスタンス数がシャードの数を超えないようにする必要があります (障害スタンバイの目的を除く)。各シャードは 1 つのKCLワーカーによって処理され、対応するレコードプロセッサが 1 つだけあるため、1 つのシャードを処理するために複数のインスタンスは必要ありません。ただし、1 つのワーカーで任意の数のシャードを処理できるため、シャードの数がインスタンスの数を超えても問題はありません。

アプリケーションでの処理をスケールアップするには、次のようなアプローチの組み合わせをテストするようにしてください。

  • インスタンスのサイズを大きくする (プロセス内ではすべてのレコードプロセッサが並列実行されるため)

  • インスタンスの数をオープンシャードの最大数まで増やす (シャードは個別に処理できるため)

  • シャードの数を増やす (並列性のレベルを向上させる)

Auto Scaling を使用すると、適切なメトリクスに基づいて自動的にインスタンスを拡張できます。詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」を参照してください。

リシャーディングによってストリーム内のシャードの数が増加すると、対応するレコードプロセッサの数が増加すると、それらをホストしているEC2インスタンスの負荷が増加します。インスタンスが Auto Scaling グループの一部であり、負荷の増加が基準を満たす場合は、Auto Scaling グループがインスタンスを追加して増加した負荷を処理します。新しいインスタンスで追加のワーカーやレコードプロセッサがすぐにアクティブになるように、インスタンスの起動時に Amazon Kinesis Data Streams アプリケーションを起動するように設定してください。

リシャーディングの詳細については、ストリームのリシャードを参照してください。