Amazon Kinesis Data Streams
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

重新分片策略

重新分片的目的在于使您的流能够适应数据流量的变化。拆分分片将增加流的容量(和费用)。合并分片将减少流的费用(和容量)。

一种重新分片方式可以是简单地拆分流中的每个分片 - 这将使流的容量增加一倍。但是,这提供的容量可能比您实际需要的要多,从而产生不必要的费用。

您还可使用指标确定您的“冷”或“热”分片(即,将接收的数据多于预期或少于预期的分片)。之后您可选择性地拆分热分片以增加面向这些分片的哈希键的容量。同样,您可合并冷分片以更好地利用其未使用的容量。

您可从 Kinesis Data Streams 发布的 CloudWatch 指标中获取流的部分性能数据。但是,您也可收集您自己的一些关于流的指标。一种方式是记录由您的数据记录的分区键生成的哈希键值。记住,您在向流添加记录时指定了分区键。

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

Kinesis Data Streams 使用 MD5 计算分区键中的哈希键。由于您为记录指定了分区键,因此可使用 MD5 计算该记录的哈希键值并将此值记录下来。

您还可记录您的数据记录分配到的分片的 ID。分片 ID 是通过使用 putRecordResults 对象(由 putRecords 方法返回)和对 putRecordResult 对象(由 putRecord 方法返回)的 getShardId 方法提供的。

String shardId = putRecordResult.getShardId();

利用分片 ID 和哈希键值,您可确定将接收最多流量或最少流量的分片和哈希键。您之后可使用重新分片操作来增加或减少容量(视这些键的情况而定)。