1趾痘、rebalance
在發(fā)生:
(1)一個新的消費者加入群組
(2)一個消費者被關閉或者崩潰離開group
(3)topic的partition數增加
會發(fā)生觸發(fā)rebalance,分區(qū)的消費所有權會從一個消費者轉移到另一個消費者上偎肃。
2科吭、Group Coordinator
1昏滴、Group Coordinator本質上是broker,一個group對應一個Group Coordinator,就是對應_consumer__offset所在的partition的leader所在的broker对人。(_consumer__offset = Math.abs((GROUPID.hash() % 50)))
2谣殊、consumer通過發(fā)送心跳到Group Coordinator上維持和group的從屬關系以及對分區(qū)消費的所有權。
3牺弄、Group leader
1姻几、第一個加入group的consumer是這個Group的Group leader,所有Group leader的本質是一個consumer。
2蛇捌、當發(fā)生rebalance時抚恒,Group leader能從Group Coordinator拿到最新活躍的consumer列表,并從consumer上報的分配策略中依據多數原則選擇分配策略(共有兩種分配策略RoundRobinAssignor與RangeAssignor)络拌,決定partition與consumer的歸屬關系柑爸。決定以后把這份分配信息發(fā)回給Group Coordinator,再由Group Coordinator發(fā)回給所有的consumer盒音。