![](/img/trans.png)
[英]How are shards from a Kinesis stream assigned to multiple instances of a Kinesis consumer?
[英]How does Kinesis distribute shards among workers?
将相邻的分片散布到多个工作人员上时,是否有尝试将它们保持在一起? 在文档示例中,它以1个工作人员/实例和4个碎片开始。 然后发生自动缩放,并启动了第二个工作人员/实例。 KCL自动将2个分片移动到工作程序2。自动缩放时,是否有任何尝试将相邻分片与工作程序保持在一起的尝试? 分割碎片怎么办?
谢谢
随机。
如果您将“ Kinesis消费者应用程序”表示为“工作人员”,则分片数量最多的消费者应用程序将失去一个分片,而另一个分片数量较少的应用程序将丢失一个分片。
“租约”在这里是正确的术语,它描述了消费者应用程序与分片的关联。 而且没有进行租赁的邻接检查,它是纯随机的。
参见源代码,选择chooseLeaseToSteal
方法: https : //github.com/awslabs/amazon-kinesis-client/blob/c6e393c13ec348f77b8b08082ba56823776ee48a/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseTaker.java#L414
将相邻的分片散布到多个工作人员上时,是否有尝试将它们保持在一起?
我怀疑是这样。 我的理解是,仅在单个键的边界内维护顺序,并且单个键的边界在单个碎片内。
想象一下,我有两个键,分别是key-a
和key-b
,并且发生了以下事件:
["event-1-key-a", "event-2-key-b", "event-3-key-a"]
现在我们为key-a
提供了2个事件: ["event-1-key-a", "event-3-key-a"]
和key-b
1个事件: ["event-2-key-b"]
请注意,分片操作与上述操作完全相同-key key-a
的2个事件将始终以同一分片结束。 有了这种保证,就不必维持分片之间的顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.