重新分片策略 - Amazon Kinesis Data Streams

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

重新分片策略

在 Amazon Kinesis Data Streams 中重新分片的目的是,使流能够适应数据流的速率的变化。拆分分片将增加流的容量(和费用)。合并分片将减少流的费用(和容量)。

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

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

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

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

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

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

String shardId = putRecordResult.getShardId();

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