我有一个Amazon Kinesis流,包含多个分片。碎片的数量以及消费者的数量并不是一个常数。Amazon-Kinesis:将记录放到每个分片
我想在广告流上向每个消费者广播一个不常见类型的事件。
制作人是否有办法广播一个记录,即发现碎片并在每个记录上放置记录?
我有一个Amazon Kinesis流,包含多个分片。碎片的数量以及消费者的数量并不是一个常数。Amazon-Kinesis:将记录放到每个分片
我想在广告流上向每个消费者广播一个不常见类型的事件。
制作人是否有办法广播一个记录,即发现碎片并在每个记录上放置记录?
记录在输入kinesis(即Kinesis API端点)时进入单个入口点。然后将数据放置在流中关于其分区键的分片上。
您无法确定数据直接进入哪个确切的分片;但是如果您选择相同的分区键(只要不调整流的大小),则可以将不同的记录放在同一分片中。由于分片算法,提供的partition_key被散列,然后拾取所有可用碎片中的一个。
例如;
但如果你真的坚持做“1个复用记录每一个碎片”,有一种方法;
所以,现在你知道在发送数据到一个特定的碎片要使用的分区键,你可以在发送这些特殊的“要复用”的记载使用该地图...
这是哈克和蛮力,但它会奏效。
也看到有关分区键和碎片以前的答案:https://stackoverflow.com/a/31377477/1622134
希望这有助于。 PS:如果您使用低级Kinesis API并创建自定义PutRecord请求,则在响应中您可以找到数据放置在哪个分片上。 PutRecordResponse包含shardId信息;
http://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html
您的问题中的“消费者”一词含糊不清。你的意思是“每个消费者应用程序”或“每个工作者线程在一个应用程序中聆听分片”? – az3