

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

# 決定重新分片的策略
<a name="kinesis-using-sdk-java-resharding-strategies"></a>

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

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

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

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

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

Kinesis Data Streams 使用 [MD5](http://en.wikipedia.org/wiki/MD5)，從分割區索引鍵運算雜湊索引鍵。由於您會指定記錄的分割區索引鍵，您可以使用 MD5 來運算該記錄的雜湊索引鍵鍵值，並記錄它。

您也可以記錄資料記錄獲指派的碎片 ID。您可以使用 `getShardId` 方法傳回的 `putRecordResults` 物件的 `putRecords` 方法，以及 `putRecordResult` 方法傳回的 `putRecord` 物件，來取得碎片 ID。

```
String shardId = putRecordResult.getShardId();
```

有了碎片 ID 和雜湊索引鍵值，您可以判斷哪些碎片和雜湊索引鍵正接收最多或最少的流量。然後，您可以使用重新分片來提供更多或更少的容量，視這些索引鍵的需要而定。