我正在尝试通过Amazon Kinesis传输大量数据(每秒约10,000个点)。
为了最大化每秒钟通过我的分片的记录数,我想要在分片上轮询我的请求(我的应用程序逻辑不关心单个消息进入哪个分片)。
看起来我可以在发送到PutRecords端点的列表中的消息的ExplicitHashKey参数中完成此操作 - 但是Amazon文档实际上没有描述如何使用ExplicitHashKey,除了先知般的声明:
http://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html
Records数组中的每个记录都可以包括一个可选参数ExplicitHashKey,该参数覆盖分区键到分片映射。此参数允许数据生产者明确确定记录存储的分片。有关详细信息,请参见Amazon Kinesis Streams开发人员指南中的使用PutRecords添加多个记录。
(上述文档中的语句链接到另一节文档,该文档根本不讨论ExplicitHashKeys)。
是否有一种方法可以使用ExplicitHashKey在分片之间轮询数据?
参数的有效值是什么?
1、14、27、40、53、66、79、92、105、118
进入分区1,无论以何种顺序处理,其他分区也是如此。你似乎在正确的轨道上,设置自己的分区键而不是MD5哈希。 - prayagupastr( int( (( N%NUM_SHARDS )+0.5) * ( 2**128 / NUM_SHARDS ) ) )
,但它看起来很有趣。 - prayagupa