![](/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.