下面我們來說一下Kafka的集群管理。我們知道Kafka的高可用是通過集群的方式實(shí)現(xiàn)的皿渗,那么集群管理是怎么實(shí)現(xiàn)的呢斩芭?簡單來說轻腺,Kafka的集群管理就是通過Zookeeper實(shí)現(xiàn)的。Kafka通過zookeeper來實(shí)現(xiàn)集群的分布式協(xié)調(diào)服務(wù)划乖,leader選舉等功能贬养,每個(gè)broker會(huì)在Zookeeper上注冊(cè)一個(gè)Znode,并在該節(jié)點(diǎn)注冊(cè)一個(gè)監(jiān)聽器,當(dāng)節(jié)點(diǎn)信息變更時(shí)琴庵,leader可以通過監(jiān)聽器獲取到事件并進(jìn)行處理误算。broker向Zookeeper注冊(cè)的信息包括節(jié)點(diǎn)的通信協(xié)議,主機(jī)名迷殿,端口等儿礼。下面我們來詳細(xì)說一下Kafka集群管理的幾個(gè)方面。
(1)ISR設(shè)計(jì)
Kafka的replica有兩種角色:leader和follower庆寺。leader負(fù)責(zé)管理集群的分區(qū)等配置蚊夫,當(dāng)leader掛掉后,Kafka集群會(huì)啟動(dòng)新一輪的選舉懦尝,從follower中選出一個(gè)新的leader知纷,是不是所有的follower都有機(jī)會(huì)參加選舉呢,其實(shí)不是的陵霉,下面我們就來介紹一下Kafka的ISR機(jī)制琅轧。
ISR也叫in-sync replica,就是同步副本集撩匕,當(dāng)Kafka集群中的副本同步落后整個(gè)集群一定的進(jìn)度后鹰晨,就會(huì)將該副本移除ISR,當(dāng)該副本追上整個(gè)集群的同步進(jìn)度時(shí)止毕,會(huì)將該副本重新加回ISR中模蜡,只有在ISR中的副本才有資格參加leader的選舉,其實(shí)很好理解扁凛,如果你這個(gè)副本都落后整個(gè)集群進(jìn)度那么多了忍疾,將這個(gè)副本選舉成leader肯定是有問題的。Kafka就是通過ISR機(jī)制實(shí)現(xiàn)集群的管理的谨朝。
(2)controller設(shè)計(jì)
在Kafka集群中卤妒,會(huì)有一個(gè)broker被選舉出來作為controller,這個(gè)controller負(fù)責(zé)管理和協(xié)調(diào)Kafka集群中的所有節(jié)點(diǎn)字币。當(dāng)創(chuàng)建topic時(shí)则披,controller會(huì)負(fù)責(zé)分配partition,并為partition分配相應(yīng)的副本和ISR洗出,選出副本的leader并將所有副本放到ISR中士复,然后將配置存到Zookeeper中。當(dāng)副本和ISR分配好后,controller會(huì)將副本的信息同步到所有的broker上阱洪。下面我們來看一下controller的職責(zé)有哪些便贵。
1.獲取集群元數(shù)據(jù)信息
controller會(huì)維護(hù)集群的元數(shù)據(jù)信息,當(dāng)元數(shù)據(jù)信息發(fā)生改變時(shí)冗荸,controller會(huì)通知其他節(jié)點(diǎn)元數(shù)據(jù)信息改變并將最新的元數(shù)據(jù)信息同步到所有的broker上承璃。
2.創(chuàng)建topic
controller會(huì)在zookeeper上創(chuàng)建一個(gè)監(jiān)聽器,當(dāng)broker有新的topic創(chuàng)建時(shí)蚌本,controller會(huì)收到通知盔粹,并更新元數(shù)據(jù)信息,將元數(shù)據(jù)信息同步到所有的broker上程癌,controller還會(huì)在新創(chuàng)建的topic節(jié)點(diǎn)下注冊(cè)一個(gè)監(jiān)聽器玻佩,以方便當(dāng)topic信息改變時(shí)可以收到通知。
3.刪除topic
controller會(huì)在topic刪除的路徑上設(shè)置一個(gè)監(jiān)聽器席楚,當(dāng)刪除topic時(shí)咬崔,controller會(huì)收到通知,并更新元數(shù)據(jù)信息及進(jìn)行同步烦秩。
4.分區(qū)重分配
Kafka集群會(huì)在重新分配集群的時(shí)候在指定的路徑下新建一個(gè)Znode垮斯,并擴(kuò)展分區(qū)上的節(jié)點(diǎn),controller會(huì)重新對(duì)分區(qū)上的副本盡心分配只祠,并更新元數(shù)據(jù)的信息兜蠕。
5.broker加入集群
當(dāng)broker啟動(dòng)時(shí)會(huì)在指定路徑下創(chuàng)建一個(gè)Znode,controller會(huì)監(jiān)聽該路徑下節(jié)點(diǎn)的事件抛寝,這樣實(shí)現(xiàn)了動(dòng)態(tài)的管理集群節(jié)點(diǎn)熊杨。然后controller會(huì)更新元數(shù)據(jù)信息并同步。
6.leader選舉
當(dāng)集群啟動(dòng)時(shí)盗舰,會(huì)選舉一個(gè)leader來管理集群晶府,就是在Zookeeper的指定路徑下創(chuàng)建一個(gè)Znode,所有的broker都會(huì)來搶著注冊(cè)這個(gè)Znode钻趋,但是只有一個(gè)可以注冊(cè)成功川陆,controller會(huì)為節(jié)點(diǎn)注冊(cè)一個(gè)監(jiān)聽器,方便管理該節(jié)點(diǎn)狀態(tài)的改變蛮位。
下面我們來說一下controller是由哪幾個(gè)部分組成的较沪。
1.ControllerContext
這個(gè)是controller數(shù)據(jù)的緩存,保存了所有Zookeeper中元數(shù)據(jù)的信息失仁,也是controller的核心尸曼。
2.基礎(chǔ)組件
基礎(chǔ)組件包括了ZkClient,及Zookeeper的監(jiān)聽器萄焦,還有選舉器控轿,通過選舉器在集群啟動(dòng)和節(jié)點(diǎn)發(fā)生改變時(shí)選舉最新的leader,是controller提供管理功能的基礎(chǔ)組件。
到這里解幽,我們分析了Kafak集群的管理,來總結(jié)一下烘苹,Kafka集群通過Zookeeper保存了所有broker的節(jié)點(diǎn)信息躲株,并通過controller管理集群,controller會(huì)在集群啟動(dòng)時(shí)為每個(gè)節(jié)點(diǎn)注冊(cè)一個(gè)監(jiān)聽器镣衡,當(dāng)節(jié)點(diǎn)發(fā)生改變時(shí)可以動(dòng)態(tài)的管理節(jié)點(diǎn)霜定,在管理副本時(shí),Kafka通過ISR機(jī)制管理副本同步廊鸥,還會(huì)選舉出leader來管理整個(gè)集群的數(shù)據(jù)和同步配置信息望浩。
Kafka的集群管理就介紹到這里了。
深入理解Kafka(四) 集群管理
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門授滓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琳水,“玉大人,你說我怎么就攤上這事般堆≡谛ⅲ” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵淮摔,是天一觀的道長浑玛。 經(jīng)常有香客問我,道長噩咪,這世上最難降的妖魔是什么顾彰? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮胃碾,結(jié)果婚禮上涨享,老公的妹妹穿的比我還像新娘。我一直安慰自己仆百,他們只是感情好厕隧,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般吁讨。 火紅的嫁衣襯著肌膚如雪滔悉。 梳的紋絲不亂的頭發(fā)上畸陡,一...
- 文/蒼蘭香墨 我猛地睜開眼拴曲,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼争舞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起澈灼,我...
- 序言:老撾萬榮一對(duì)情侶失蹤竞川,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后叁熔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體流译,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年者疤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了福澡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
- 正文 年R本政府宣布,位于F島的核電站泳姐,受9級(jí)特大地震影響效拭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胖秒,卻給世界環(huán)境...
- 文/蒙蒙 一缎患、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阎肝,春花似錦挤渔、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽嫉父。三九已至,卻和暖如春眼刃,著一層夾襖步出監(jiān)牢的瞬間绕辖,已是汗流浹背。 一陣腳步聲響...
- 正文 我出身青樓篮条,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吩抓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涉茧,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 1 概述 Kakfa起初是由LinkedIn公司開發(fā)的一個(gè)分布式的消息系統(tǒng),后成為Apache的一部分疹娶,它使用Sc...
- kafka數(shù)據(jù)可靠性深度解讀 Kafka起初是由LinkedIn公司開發(fā)的一個(gè)分布式的消息系統(tǒng)伴栓,后成為Apache...
- 1 概述 Kakfa起初是由LinkedIn公司開發(fā)的一個(gè)分布式的消息系統(tǒng),后成為Apache的一部分雨饺,它使用Sc...
- 過去三年,OPPO在中國可謂狠狠刷了一把存在感移斩。從北上廣深等超級(jí)城市到十八線小縣城再到廣大農(nóng)村肚医,鋪天蓋地都...