0

当将相邻的分片分散到多个工人身上时,是否有任何尝试将它们保持在一起?在文档示例中,它从 1 个工作人员/实例和 4 个分片开始。然后发生了自动缩放并启动了第二个工作人员/实例。KCL 自动将 2 个分片移动到 worker 2。在自动缩放时是否尝试将相邻的分片与 worker 保持在一起?分片的时候怎么办?

谢谢

4

2 回答 2

2

随机的。

如果您将“Kinesis 消费者应用程序”表示为“Worker”,那么拥有最多分片的消费者应用程序会失去 1 个分片给另一个拥有较少分片的应用程序。

“租赁”在这里是正确的术语,它描述了消费者应用程序和分片关联。并且没有进行租约的邻接检查,它是纯随机的。

见源码,chooseLeaseToSteal方法:https ://github.com/awslabs/amazon-kinesis-client/blob/c6e393c13ec348f77b8b08082ba56823776ee48a/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseTaker.java#L414

于 2016-01-25T13:47:35.713 回答
0

当将相邻的分片分散到多个工人身上时,是否有任何尝试将它们保持在一起?

我怀疑情况是否如此。我的理解是,顺序只在单个键的边界内保持,单个键的边界在单个分片内。

想象一下,我有 2 个键key-akey-b,并且发生了以下事件:

["event-1-key-a", "event-2-key-b", "event-3-key-a"]

现在我们有 2 个事件key-a["event-1-key-a", "event-3-key-a"]

和 1 个事件key-b["event-2-key-b"]

请注意,分片的发生与上述完全相同 - 的 2 个事件key-a将始终在同一个分片中结束。有了这个保证,就不需要维护分片之间的顺序了。

于 2016-01-21T19:58:21.973 回答