簡體   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