下面我們來介紹下Kafka rebalance的原理。kafka的consumer group有多個consumer實例,這些consumer實例是怎么分配topic分區(qū)的呢穗泵,這就需要kafka rebalance來實現(xiàn)這個功能。rebalance是怎么觸發(fā)的泡嘴,有3個條件霎肯,可以觸發(fā)kafka的rebalance流程。
1.組成員發(fā)生變更慢哈。當有新的consumer加入組蔓钟,或者已有consumer崩潰時則觸發(fā)rebalance流程。
2.組訂閱的topic數(shù)發(fā)生變更卵贱。當consumer group訂閱了新的topic時奋刽,也會觸發(fā)rebalance流程瓦侮。
3.組訂閱的topic的分區(qū)數(shù)發(fā)生變更。當consumer group訂閱的topic的分區(qū)數(shù)變更時佣谐,也會觸發(fā)rebalance流程肚吏。
最多的情況就是第一個條件發(fā)生時,比如consumer實例崩潰狭魂,或者設置的consumer參數(shù)request.timeout.ms,max.poll.records和max.poll.interval.ms不合理時罚攀,則會觸發(fā)rebalance流程。
rebalance分區(qū)分配時雌澄,使用的是rebalance協(xié)議斋泄,下面介紹一下這個協(xié)議。kafka提供了5個協(xié)議來處理rebalance操作镐牺。
JoinGroup請求: consumer請求加入組炫掐。
SyncGroup請求: group leader把分配方案同步更新到組內(nèi)所有成員中。
LeaveGroup請求: consumer即將離開組的請求睬涧。
DescribeGroup請求: 查看組的所有成員信息募胃,包括成員信息,協(xié)議信息畦浓,分配方案以及訂閱信息等痹束。
Heartbeat請求: consumer發(fā)送心跳請求。
consumer group在執(zhí)行rebalance之前必須確定coordinator所在的broker讶请,并創(chuàng)建與該broker通信的連接祷嘶。成功連接coordinator之后就可以執(zhí)行rebalance操作。目前rebalance主要分為兩步:加入組和同步更新分配方案夺溢。
加入組:這一步中組內(nèi)所有consumer向coordinator發(fā)送JoinGroup請求论巍。當所有JoinGroup請求都發(fā)送完成后,coordinator會從中選擇一個consumer成為group的leader风响,并把所有成員信息以及它們的訂閱信息發(fā)送給leader环壤。
同步更新分配方案。這一步中l(wèi)eader開始制定分配方案钞诡,即根據(jù)分配策略決定每個consumer都負責哪些topic分區(qū)郑现。一旦分配完成,leader會把這個分配方案放入到SyncGroup請求并發(fā)送給coordinator荧降。而coordinator接收到分配方案后把屬于每個consumer的方案放入SyncGroup請求的response返回給consumer接箫。
發(fā)送SyncGroup請求會同步每個consumer的狀態(tài)信息,在所有成員都接受到SyncGroup的response后朵诫,每個成員按照coordinator的方案進行工作辛友。
consumer group的分配方案是在consumer端執(zhí)行的。這樣即使以后分區(qū)策略發(fā)生了變更,也只需要重啟consumer實例即可废累,不需要重啟kafka broker邓梅。
到這里,我們介紹了kafka rebalance的原理邑滨,kafka rebalance的原理我們就講到這里了日缨。
深入理解Kafka(十二) rebalance原理
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刹泄,“玉大人外里,你說我怎么就攤上這事⊙” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵疙咸,是天一觀的道長县匠。 經(jīng)常有香客問我,道長撒轮,這世上最難降的妖魔是什么乞旦? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮题山,結(jié)果婚禮上兰粉,老公的妹妹穿的比我還像新娘。我一直安慰自己顶瞳,他們只是感情好玖姑,可當我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著慨菱,像睡著了一般焰络。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上符喝,一...
- 文/蒼蘭香墨 我猛地睜開眼把夸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了流昏?” 一聲冷哼從身側(cè)響起扎即,我...
- 正文 年R本政府宣布跟啤,位于F島的核電站诽表,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏隅肥。R本人自食惡果不足惜竿奏,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腥放。 院中可真熱鬧泛啸,春花似錦、人聲如沸秃症。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽种柑。三九已至宗雇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間莹规,已是汗流浹背赔蒲。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 7.1 分區(qū)分配策略 在 3.1 節(jié)中講述了消費者與消費組的模型,并且在默認分區(qū)分配策略的背景下通過案例進 行了具...
- 什么是Kafka Kafka是一款分布式消息發(fā)布和訂閱系統(tǒng)椅寺,它的特點是高性能浑槽、高吞吐量。 最早設計的目的是作為Li...
- 1桐玻、Consumer與Consumer Group consumer group是kafka提供的可擴展且具有容...