發(fā)生的情況:
1.消費(fèi)組訂閱了新的主題
2.消費(fèi)組增加或減少了消費(fèi)者
3.消費(fèi)組訂閱的主題修改了分區(qū)數(shù)量
如何判斷有沒有發(fā)生Rebalance呢?
檢查消費(fèi)組對(duì)應(yīng)的broker日志,有沒有類似于"(Re)join group" 之類的日志
如何給消費(fèi)者分配分區(qū)呢
1.每個(gè)broker都有一個(gè)協(xié)調(diào)者組件汇在,由協(xié)調(diào)者組件來分配蓖墅,分配的策略可以配置在消費(fèi)者參數(shù)里。
2.根據(jù)消費(fèi)組id的hashcode來對(duì)位移主題分區(qū)數(shù)取余弟灼,得到的分區(qū)所在的broker即為這個(gè)消費(fèi)組的協(xié)調(diào)者惰爬。
當(dāng)kafka有第一個(gè)消費(fèi)者時(shí)會(huì)自動(dòng)創(chuàng)建位移主題:__consumer_offsets
broker端參數(shù):
- Kafka 自動(dòng)創(chuàng)建的分區(qū)數(shù)
offsets.topic.num.partitions 默認(rèn)50- Kafka 自動(dòng)創(chuàng)建的副本數(shù)
offsets.topic.replication.factor 默認(rèn)3如果是自動(dòng)提交位移,enable.auto.commit = true帅涂;consumer會(huì)根據(jù) auto.commit.interval.ms這個(gè)配置一直寫消息。會(huì)有一個(gè)Log Cleaner的線程去定期的Compact這些消息尤蛮,即只保留最新的偏移量媳友。