簡體   English   中英

如果使用KCL與AWS Kinesis流時,工作人員數量>分片數會發生什么?

[英]What happens if the number of workers is > number of shards when using KCL with AWS Kinesis streams?

AWS Kinesis流文檔提到

通常,在使用KCL時,應確保實例數不超過分片數

如果實例數超過分片數,會有什么后果? 我打算每個Web服務器運行一個worker(單獨的線程)。 所以我想知道在啟動新的Web服務器實例時是否需要檢查和比較分片數和正在運行的工作程序。 或者如果工人數量超過分片數量,那么就可以啟動另一個工人而沒有任何副作用。

TL; DR:每個碎片只能有一個工人。 任何額外的工人將閑置。

如果您有一個帶有兩個分片的Kinesis流,並且您在利用KCL的單個實例上運行應用程序,則該應用程序將在不同的線程中運行兩個工作程序 - 每個分片一個工作程序(每個線程)。

如果你運行兩個實例,你的應用程序將在一個線程中的每個實例上運行一個Worker - 兩個實例,每個實例一個; 一個Kinesis流,兩個碎片。

每個工作人員對流中的分片進行租約,因此同一應用程序的其他工作人員不能讀取相同的分片。 Worker將租約信息存儲在Dynamo DB中,以便其他Worker可以讀取它。

如果您在此方案中運行3個實例,則其中一個實例將等待其他一個實例上的Worker丟失其租約。 一旦其他工人失去租約,第三名工人就可以拿起流並開始處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM