您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“zookeeper實(shí)現(xiàn)主從結(jié)構(gòu)原理”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“zookeeper實(shí)現(xiàn)主從結(jié)構(gòu)原理”吧!
為了避免主節(jié)點(diǎn)/從節(jié)點(diǎn)和zk的節(jié)點(diǎn)概念看著亂,以下就用Master/Slave稱呼了。 ### 1 選Master 系統(tǒng)啟動后,所有slave都會嘗試在zk樹上創(chuàng)建/master節(jié)點(diǎn),創(chuàng)建成功的節(jié)點(diǎn)成為Master角色。 然而Master可能會崩潰,所以其他slave要繼續(xù)監(jiān)視/master節(jié)點(diǎn)。當(dāng)Master掛掉后,slave重新選舉出新的Master(這里的選舉就是搶占)。這就要求服務(wù)節(jié)點(diǎn)掛掉后,/master節(jié)點(diǎn)隨之刪除,以便能讓其他slave接到通知,所以master為必須為臨時(shí)節(jié)點(diǎn)。
創(chuàng)建三個(gè)父節(jié)點(diǎn)/works 、/tasks、 /assign 。(也可以由一個(gè)引導(dǎo)程序建) 這三個(gè)父節(jié)點(diǎn)都是永久節(jié)點(diǎn),且不包含任何數(shù)據(jù),作為目錄節(jié)點(diǎn)存在。其子節(jié)點(diǎn)分別用于存儲可用的slave、任務(wù)信息、向從節(jié)點(diǎn)分配任務(wù)。 創(chuàng)建完成后,Master要監(jiān)視/works和/tasks兩個(gè)節(jié)點(diǎn),以便能感知到由哪些slave當(dāng)前可用,當(dāng)前有新任務(wù)需要分配。
slave向zk注冊自己的信息,讓zk通知Master“我上線了,有新任務(wù)分配給我!” 同樣,Master也需要及時(shí)知道有哪些slave掛了,所以slave在/works目錄下創(chuàng)建的必須是臨時(shí)節(jié)點(diǎn)。 然后,slave還需要在/assign目錄下創(chuàng)建一個(gè)節(jié)點(diǎn)/work1,并監(jiān)視這個(gè)節(jié)點(diǎn)等待任務(wù)分配。
create -e /assign/work1 "work1_ip" ls /assign/work1 true
客戶端在/assign下創(chuàng)建一個(gè)節(jié)點(diǎn),包含任務(wù)信息,即發(fā)布一個(gè)任務(wù)。 并監(jiān)視該節(jié)點(diǎn),獲取任務(wù)完成情況
create -s /task/task- "cmd" ls /task/task-000 true
任務(wù)發(fā)布后,監(jiān)視了/assign的Master就會收到新任務(wù)通知。 然后Master查看/works下的可用slave,從中選一個(gè)分配給任務(wù)(在slave的目錄下新增一個(gè)任務(wù)節(jié)點(diǎn))
create -e /assign/work1/task-000
slave收到新任務(wù)分配通知后,就開始執(zhí)行任務(wù)。
ls /assign/work/task-000 //查看任務(wù)信息
然后完成后,添加執(zhí)行狀態(tài),通知客戶端。
create /tasks/task-000/status "done" ### 7 客戶驗(yàn)收結(jié)果
客戶端查看任務(wù)節(jié)點(diǎn)信息,查看任務(wù)狀態(tài)
get /tasks/task-000
以上! 只是描述了用zk實(shí)現(xiàn)主從結(jié)構(gòu)的一般原理。
畫圖挺累的,轉(zhuǎn)載請說明出處。要原圖郵箱吧。 ``` 內(nèi)容整理自《O'REILLY Zookeeper》一書
到此,相信大家對“zookeeper實(shí)現(xiàn)主從結(jié)構(gòu)原理”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。