实现主从模式
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
一、主從模式
????? ? 主節(jié)點(diǎn)負(fù)責(zé)以下幾點(diǎn)任務(wù)
????? ? 1.在ZK將自己注冊(cè)為主節(jié)點(diǎn),并設(shè)置監(jiān)聽(tīng),一旦發(fā)現(xiàn)既有主節(jié)點(diǎn)崩潰,重新競(jìng)選主節(jié)點(diǎn)
????? ? 2.監(jiān)聽(tīng)從節(jié)點(diǎn)新增和刪除,如果發(fā)生從節(jié)點(diǎn)刪除,則將從節(jié)點(diǎn)已經(jīng)分配還未執(zhí)行的任務(wù)重新分配
????? ? 3.監(jiān)聽(tīng)任務(wù)節(jié)點(diǎn)新增,如果發(fā)生任務(wù)節(jié)點(diǎn)新增,將新增的任務(wù)隨機(jī)分配給從節(jié)點(diǎn)
????? ? 從節(jié)點(diǎn)負(fù)責(zé)以下幾點(diǎn)任務(wù)
????? ? 1.在ZK注冊(cè)自己,包括可用從節(jié)點(diǎn)/workers/worker-1以及已分配任務(wù)從節(jié)點(diǎn)/assign/worker-1
????? ? 2.監(jiān)聽(tīng)自己的已分配任務(wù)從節(jié)點(diǎn)
????? ? 3.獲取任務(wù)并執(zhí)行
????? ? 任務(wù)節(jié)點(diǎn)負(fù)責(zé)以下幾點(diǎn)任務(wù)
????? ? 1.發(fā)布任務(wù)到任務(wù)節(jié)點(diǎn)下/tasks/task-1
?
????? ? 主從模式ZK結(jié)構(gòu)圖
????????
????? ? /master為臨時(shí)節(jié)點(diǎn),一旦主節(jié)點(diǎn)因正常或異常退出,在此節(jié)點(diǎn)上監(jiān)聽(tīng)的程序會(huì)接收到通知,并發(fā)起競(jìng)選
????? ? /workers為永久節(jié)點(diǎn),其子節(jié)點(diǎn)為臨時(shí)節(jié)點(diǎn),表示可用的從節(jié)點(diǎn)
????? ? /tasks為永久節(jié)點(diǎn),其子節(jié)點(diǎn)也為永久節(jié)點(diǎn),表示發(fā)起的任務(wù)
????? ? /assign/worker-1都為永久節(jié)點(diǎn),其子節(jié)點(diǎn)(任務(wù)/task-1)也為永久節(jié)點(diǎn),表示分配給worker-1的任務(wù)
二、代碼
? ? 完整代碼見(jiàn)https://git.oschina.net/jionsvolk/zookeeper.git
? ? 類(lèi)MasterUnSyn實(shí)現(xiàn)主節(jié)點(diǎn)
? ? 類(lèi)WorkerUnSyn實(shí)現(xiàn)從節(jié)點(diǎn)
? ? 類(lèi)TaskUnSyn發(fā)布任務(wù)
? ? 類(lèi)WorkerCache在主節(jié)點(diǎn)中使用,用于緩存從節(jié)點(diǎn)
?
剛開(kāi)始學(xué)習(xí),代碼肯定還有不完善的地方,請(qǐng)多指教。
轉(zhuǎn)載于:https://my.oschina.net/u/3049601/blog/1053890
總結(jié)
- 上一篇: 安装Kubernetes-Dashboa
- 下一篇: 第十天,重叠的桌子