リシャーディング戦略を決定する - Amazon Kinesis Data Streams

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

リシャーディング戦略を決定する

Amazon Kinesis Data Streams におけるリシャーディングの目的は、ストリームをデータの流量の変化に適応させることです。シャードを分割すると、ストリームの容量 (およびコスト) が増えます。シャードを結合すると、ストリームのコスト (および容量) が減ります。

リシャーディングへの 1 つのアプローチとして考えられるのは、ストリーム内のすべてのシャードを分割することです。これにより、ストリームの容量は倍増します。ただし、実際に必要になるよりも多くの容量が追加されるため、不要なコストが生じる可能性があります。

メトリクスを使用して、シャードがホットであるかコールドであるか、つまり、想定より過多なデータを受け取っているか、過少なデータを受け取っているかを判断できます。ホットシャードは分割して、それらのハッシュキーに対応した容量を増やすことができます。同様に、コールドシャードは結合して、未使用の容量をより有効に活用できます。

Kinesis Data Streams が発行する Amazon CloudWatch メトリクスから、ストリームのパフォーマンスデータを取得できます。ただし、ストリームについて独自のメトリックを収集することもできます。1 つのアプローチとして考えられるのは、データレコードのパーティションキーによって生成されたハッシュキー値をログに記録することです。ストリームにレコードを追加するときにパーティションキーを指定していることを思い出してください。

putRecordRequest.setPartitionKey( String.format( "myPartitionKey" ) );

Kinesis Data Streams では、MD5 を使用してパーティションキーからハッシュキーを計算します。レコードのパーティションキーを指定しているため、MD5 を使用してそのレコードのハッシュキー値を計算し、ログに記録できます。

また、データレコードが割り当てられているシャードの ID をログに記録することもできます。シャード ID は、getShardId メソッドによって返される putRecordResults オブジェクトおよび putRecords メソッドによって返される putRecordResult オブジェクトの putRecord メソッドを使用することによって利用できます。

String shardId = putRecordResult.getShardId();

シャード ID とハッシュキー値を使用すると、最も多いまたは少ないトラフィックを受け取っているシャードとハッシュキーを特定できます。その後、リシャーディングによりこれらのハッシュキーに対応した容量を増やすか減らすことができます。