決定重新分片的策略 - Amazon Kinesis Data Streams

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

決定重新分片的策略

Amazon Kinesis Data Streams 中重新分片的目的是讓您的串流適應資料流程速率的變化。您分割碎片,以增加串流的容量 (和成本)。您合併碎片,以減少串流的成本 (和容量)。

重新分片的其中一個方法可能是分割串流中的每個碎片,這樣會讓串流的容量加倍。不過,這可能會提供超過您實際所需額外的容量,因此產生不必要的成本。

您也可以使用指標來判斷哪些是您的碎片,也就是說,較預期接收非常多資料或非常少資料的碎片。然後您可以選擇性地分割熱碎片,以增加以這些碎片為目標之雜湊索引鍵的容量。同樣地,您可以合併冷碎片以更明智利用其未使用的容量。

您可以從 Kinesis 資料串流發佈的 Amazon CloudWatch 指標取得串流的一些效能資料。不過,您也可以為串流收集一些自己的指標。其中一個方法會是記錄分割區索引鍵為資料記錄產生的雜湊索引鍵值。回想您在將記錄新增到串流時指定的分割區索引鍵。

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

Kinesis Data Streams 用MD5於從分割區索引鍵計算雜湊金鑰。因為您指定記錄的磁碟分割索引鍵,因此您可以使用MD5來計算該記錄的雜湊索引鍵值並加以記錄。

您還可以記錄數據記錄分配給的碎片。IDs您可以使用 getShardId 方法傳回的 putRecordResults 物件的 putRecords 方法,以及 putRecordResult 方法傳回的 putRecord 物件,來取得碎片 ID。

String shardId = putRecordResult.getShardId();

使用碎片IDs和散列鍵值,您可以確定哪些碎片和哈希鍵正在接收最多或最少的流量。然後,您可以使用重新分片來提供更多或更少的容量,視這些索引鍵的需要而定。