Kinesis如何在工人中分发碎片?

时间:2016-01-21 19:02:06

标签: amazon-web-services amazon-kinesis amazon-kcl

是否有任何尝试在将多个工作人员分散到多个工作人员时将其保持在一起?在文档示例中,它以1个worker / instance和4个分片开头。然后发生自动缩放并启动第二个工作人员/实例。 KCL自动将两个分片移动到工作者2.在自动缩放时是否有任何尝试将相邻分片与工作者保持在一起?拆分碎片时怎么办?

由于

2 个答案:

答案 0 :(得分:2)

随机

如果您的意思是" Kinesis Consumer Application" as" Worker",那么具有最多分片的消费者应用程序会丢失1个分片给另一个分片较少的应用程序。

"契"这里是正确的术语,它描述了一个消费者应用程序&碎片协会。并没有接受租约的邻接检查,这是纯随机的。

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

答案 1 :(得分:0)

  

是否有任何尝试在将多个分片分散到多个工作人员时将它们保持在一起?

我怀疑是这样的。我的理解是,仅在单个键的边界内维持顺序,并且单个键的边界属于单个分片。

想象一下,我有两个密钥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-a的2个事件总是会在同一个分片中结束。由于这是保证,因此不必在分片之间保持顺序。