Kafka入門之consumer--rebalance流程


 

重平衡(rebalance)

舊版本Kafka依托於Zk進行rebalance,新版本consumer使用了Kafka內置的一個全新的組協調協議。對於每個組而言,Kafka的某個broker會被選舉為組協調者(coordinator)。

觸發條件:

1.組成員發生變更。

2.組訂閱topic數發生變更。比如使用基於正則表達式的訂閱,當匹配正則表達式的新topic被創建時則會觸發rebalance

3.組訂閱topic的分區數發生變更。比如使用命令行腳本增加了訂閱topic的分區數。

分區策略:

range,round-robin,sticky策略

rebalance generation:

表示rebalance之后的一屆成員,在consumer中它是一個整數,從0開始。主要是為了保護consumer group,特別是防止無效的offset提交,比如上一屆的consumer成員由於某些原因延遲提交了offset,但rebalance之后該group產生了新一屆group成員,而這次新延遲的offset提交攜帶的是舊generation信息,因此這次提交會被consumer group拒絕。

rebalance協議:

JoinGroup請求:consumer請求加入組

SyncGroup請求:group leader把分配方案同步到組內所有成員中

Heartbeat請求:consumer定期向coordinator匯報心跳表明自己依然存活

LeaveGroup請求:consumer主動通知coordinator該conumer即將離組。

DescribeGroup請求:供管理員使用,查看組的所有信息,包括成員信息,協議信息,分配方案以及訂閱信息等

在成功rebalance之后,組內所有consumer都需要定期向coordinator發送Heartbeat請求,而每個consumer也是根據Heartbeat請求的響應中是否包含REBALANCE_IN_PROGRESS來判斷當前group是否開啟了新一輪rebalance

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM