繁体   English   中英

Kinesis如何在工人之间分配碎片?

[英]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-akey-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM