Zookeeper學(xué)習(xí)-04 ZooKeeper實(shí)現(xiàn) Master-Worker協(xié)同

1怒坯、master-worker架構(gòu)

master-work是一個(gè)廣泛使用的分布式架構(gòu)哗总。master-work架構(gòu)中有一個(gè)master負(fù)責(zé)監(jiān)控worker的狀態(tài)朗鸠,并為worker分配任務(wù)秒拔。

  1. 在任何時(shí)刻婿脸,系統(tǒng)中最多只能有一個(gè)master粱胜,不可以出現(xiàn)兩個(gè)master的情況,多個(gè)master共存會(huì)導(dǎo)致腦裂狐树。
  2. 系統(tǒng)中除了處于active狀態(tài)的master還有一個(gè)backup master焙压,如果active master失敗了,backup master可以很快的進(jìn)入active狀態(tài)。
  3. master實(shí)時(shí)監(jiān)控worker的狀態(tài)涯曲,能夠及時(shí)收集worker成員變化的通知野哭。master在收到worker成員變化時(shí),通常重新進(jìn)行任務(wù)的重新分配幻件。


    04-01 worker-master架構(gòu).png

2拨黔、master-worker架構(gòu)實(shí)例- HBase

HBase 采用的是mater-worker的架構(gòu),HMBase是系統(tǒng)中的master绰沥,HRegionServer是系統(tǒng)中的worker篱蝇。
HMBase監(jiān)控HBase Cluster中的worker的成員變化,把region分配給各個(gè)HRegionServer.系統(tǒng)中有一個(gè)HMaster處于active狀態(tài)徽曲,其他HMaster處于備用狀態(tài)零截。


04-04HBase master-worker架構(gòu).png

3、master-worker架構(gòu)實(shí)例-Kafka

一個(gè)Kafka集群是有多個(gè)broker組成疟位,這些broker是系統(tǒng)中的worker瞻润,Kafka會(huì)從這些worker選舉出一個(gè)controller,這個(gè)controller是系統(tǒng)中的master甜刻,負(fù)責(zé)把topic partition分配給各個(gè)broker绍撞。


Kafka master-worker架構(gòu).png

4、master-worker架構(gòu)實(shí)例- HDFS

HDFS采用的也是一個(gè)master-worker的架構(gòu)得院,NameNode是系統(tǒng)中的master,DataNode是系統(tǒng)中的worker傻铣。NameNode用來保存整個(gè)分布式文件系統(tǒng)的metadata,并把數(shù)據(jù)塊分配給cluster中的DataNode進(jìn)行保存。


HDFS master-worker架構(gòu).png

5祥绞、如何使用ZooKeeper實(shí)現(xiàn)master-worker

  1. 使用一個(gè)臨時(shí)節(jié)點(diǎn)/master表示master非洲。master在行駛master的職能之前,首先要?jiǎng)?chuàng)建這個(gè)znode.如果能創(chuàng)建成功蜕径,進(jìn)入active狀態(tài)两踏,開始行駛master職能。否則的話兜喻,進(jìn)入backup狀態(tài)梦染,使用watch機(jī)制監(jiān)控/master。假設(shè)系統(tǒng)中有一個(gè)active master和一個(gè)backup master朴皆,如果active master失敗帕识,它創(chuàng)建的/master就會(huì)被Zookeeper自動(dòng)刪除。這時(shí)backup master就會(huì)收到通知遂铡,通過再次創(chuàng)建/master節(jié)點(diǎn)成為新的active master肮疗。
  2. worker通過在/workers下面創(chuàng)建臨時(shí)節(jié)點(diǎn)來加入集群。
  3. 處于active狀態(tài)的master會(huì)通過watch機(jī)制監(jiān)控/workers下面的znode列表來實(shí)時(shí)獲取worker成員的變化扒接。


    zookeeper實(shí)現(xiàn)master-worker.png

6伪货、通過zkCli.sh模擬實(shí)現(xiàn)master-worker

1) 通過命令 ls -R / 查看znode狀態(tài)


04-05查看節(jié)點(diǎn)狀態(tài).png

2)創(chuàng)建 workers们衙,并退出

create /workers
quit
04-06 create-workers.png

3)創(chuàng)建master1并配置主機(jī)名和端口號(hào)

create -e /master "m1:2223"

創(chuàng)建成功,此時(shí)處于active狀態(tài)超歌,可以行使master職能


創(chuàng)建master104-07.png

4)另啟動(dòng)一個(gè)客戶端砍艾,創(chuàng)建master2并配置主機(jī)名和端口號(hào)

create -e /master "m2:2223"

此時(shí)會(huì)創(chuàng)建失敗,只能處于backup狀態(tài)


04-07m2創(chuàng)建失敗.png

通過stat命令巍举,來監(jiān)控master節(jié)點(diǎn)的變化

stat -w /master
04-08查看master節(jié)點(diǎn)變化.png

5)假設(shè)master1失敶嗪伞(quit退出)


04-09 master1 退出.png

此時(shí)master2 會(huì)收到一個(gè)通知,然后再去創(chuàng)建master的znode節(jié)點(diǎn)懊悯,則會(huì)創(chuàng)建成功

create -e /master "m2:2223"
04-10master2創(chuàng)建成功.png

6)如果master創(chuàng)建成功蜓谋,通過命令

ls -w /workers 

來監(jiān)控workers目錄下znode 節(jié)點(diǎn)的變化


04-11 查看workers目錄變化.png

7)另啟動(dòng)客戶端,在workers目錄下創(chuàng)建一個(gè)znode節(jié)點(diǎn)

create -e /workers/w1 "w1:2224"

此時(shí)master會(huì)收到一個(gè)通知:type:NodeChildrenChanged path:/workers


04-12創(chuàng)建w1成功.png

04-13查看works狀態(tài).png

8)在master中炭分,再次監(jiān)控workers目錄變化:

ls -w /workers
04-14查看workers目錄.png

9)另啟動(dòng)客戶端桃焕,再創(chuàng)建一個(gè)workers節(jié)點(diǎn)

create -e /workers/w2 "w2:2224"

此時(shí)master又收到一個(gè)通知:type:NodeChildrenChanged path:/workers


04-15創(chuàng)建w2.png
04-16 master收到通知.png

10)在master中,通過命令:

ls -w /workers

查看workers目錄下的節(jié)點(diǎn)狀況


04-17 查看workers目錄.png

11)此時(shí)退出(quit)w2節(jié)點(diǎn)來假設(shè)w2節(jié)點(diǎn)失敗捧毛,此時(shí)master節(jié)點(diǎn)也會(huì)收到一個(gè)通知:
type:NodeChildrenChanged path:/workers


04-18 退出w2.png
04-19master收到通知.png

12)在master中观堂,通過命令

ls -w /workers

查看workers目錄下節(jié)點(diǎn)情況


04-20 查看workers目錄.png

以上說明master可以實(shí)時(shí)監(jiān)控workers目錄下節(jié)點(diǎn)的變化,從而來做出相應(yīng)的反應(yīng)呀忧。

7师痕、 其他問題

1)ZooKeeper的watch是one-time trigger。一個(gè)Watch收一次通知而账。
2)ls -w 和 stat -w 的區(qū)別胰坟。
ls列出一個(gè)znode下的子znode列表,stat是返回一個(gè)znode的stat信息泞辐。
-w選項(xiàng)是用來一個(gè)設(shè)置一個(gè)watch笔横,適用于ls和stat。
3)
1.為什么第一個(gè)創(chuàng)建的znode:m1會(huì)成為master咐吼?這跟創(chuàng)建順序有關(guān)系嗎吹缔?
2.如果創(chuàng)建了兩個(gè)znode來監(jiān)聽/workers下的worker,兩個(gè)znode都收到了監(jiān)聽消息锯茄,是否跟唯一master監(jiān)聽worker相悖了涛菠?
在ZooKeeper上面創(chuàng)建/master這個(gè)znode,如果/master這個(gè)znode已經(jīng)存在撇吞,這個(gè)創(chuàng)建就會(huì)失敗。只有一個(gè)節(jié)點(diǎn)創(chuàng)建/master節(jié)點(diǎn)成功了礁叔,它才可以確認(rèn)自已成了master牍颈。因?yàn)閙aster1節(jié)點(diǎn)先做的創(chuàng)建,所以它的創(chuàng)建成功了琅关,它就成了master煮岁。因?yàn)閙aster2后做的創(chuàng)建讥蔽,它的創(chuàng)建就會(huì)失敗,它就知道自己沒能成為master画机。
多個(gè)節(jié)點(diǎn)必須遵循先成功創(chuàng)建/master這個(gè)znode冶伞,再監(jiān)聽/workers下的worker才能能保證master的唯一性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載步氏,如需轉(zhuǎn)載請通過簡信或評(píng)論聯(lián)系作者响禽。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市荚醒,隨后出現(xiàn)的幾起案子芋类,更是在濱河造成了極大的恐慌,老刑警劉巖界阁,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侯繁,死亡現(xiàn)場離奇詭異,居然都是意外死亡泡躯,警方通過查閱死者的電腦和手機(jī)贮竟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來较剃,“玉大人咕别,你說我怎么就攤上這事≈馗叮” “怎么了顷级?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長确垫。 經(jīng)常有香客問我弓颈,道長,這世上最難降的妖魔是什么删掀? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任翔冀,我火速辦了婚禮,結(jié)果婚禮上披泪,老公的妹妹穿的比我還像新娘纤子。我一直安慰自己,他們只是感情好款票,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布控硼。 她就那樣靜靜地躺著,像睡著了一般艾少。 火紅的嫁衣襯著肌膚如雪卡乾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天缚够,我揣著相機(jī)與錄音幔妨,去河邊找鬼鹦赎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛误堡,可吹牛的內(nèi)容都是我干的古话。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼锁施,長吁一口氣:“原來是場噩夢啊……” “哼陪踩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起沾谜,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤膊毁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后基跑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體婚温,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年媳否,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了栅螟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡篱竭,死狀恐怖力图,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掺逼,我是刑警寧澤吃媒,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站吕喘,受9級(jí)特大地震影響赘那,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氯质,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一募舟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧闻察,春花似錦拱礁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钉嘹,卻和暖如春填抬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背隧期。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國打工飒责, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仆潮。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓宏蛉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親性置。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拾并,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容