Zookeeper簡(jiǎn)介
????????>開(kāi)源的針對(duì)大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng)
????????> 設(shè)計(jì)目標(biāo):將復(fù)雜且容易出錯(cuò)的分布式式一致性服務(wù)封裝起來(lái)盗温,構(gòu)成一個(gè)高效可靠的原語(yǔ)集袄琳,并以簡(jiǎn)單易用的接口提供給用戶使用葱色。
? ? ? ? >功能:發(fā)布/訂閱亡脸,分布式協(xié)調(diào)/通知怔软,配置管理,集群管理如蚜,主從協(xié)調(diào),分布式鎖等影暴。
Zookeeper特性:
????????最終一致性:保證最終數(shù)據(jù)能夠達(dá)到一致错邦。(重要功能)
? ? ? ? 順序性:從同一個(gè)客戶端發(fā)起的事務(wù)請(qǐng)求,最終會(huì)嚴(yán)格地按照其發(fā)送順序被應(yīng)用到Zookeeper中型宙。
????????可靠性:一旦服務(wù)器成功的應(yīng)用一個(gè)事務(wù)撬呢,并完成了客戶端的響應(yīng),那么該服務(wù)所引起的服務(wù)端狀態(tài)變更將會(huì)被一直保留下去妆兑。
????????實(shí)時(shí)性:Zookeeper不能保證兩個(gè)客戶端能同時(shí)得到剛更新的數(shù)據(jù)魂拦,如果需要最新數(shù)據(jù),應(yīng)該在讀數(shù)據(jù)之前調(diào)用sync()接口搁嗓。
????????原子性:一次數(shù)據(jù)更新要么成功芯勘,要么失敗。
????????單一視圖:無(wú)論客戶端連接到哪個(gè)服務(wù)器腺逛,看到的數(shù)據(jù)模型都是一致的荷愕。
基本架構(gòu):
Zookeeper角色:
? ? ? ? Leader(領(lǐng)導(dǎo)者)
? ??????Follower(跟隨者)
? ??????Observer(觀察者)
選舉方式(分兩種)全新啟動(dòng)期和運(yùn)行期間
全新啟動(dòng)期:
運(yùn)行期間:(更正:步驟2改為(3,123))
數(shù)據(jù)模型Znode
? ? ? ? Zookeeper特有數(shù)據(jù)節(jié)點(diǎn)Znode,視圖類似于linux的文件系統(tǒng)棍矛,是系統(tǒng)中最小的數(shù)據(jù)單元安疗。并且可以保存數(shù)據(jù),通過(guò)掛在子節(jié)點(diǎn)構(gòu)成數(shù)狀層次化空間
節(jié)點(diǎn)類型
? ? ? ? 節(jié)點(diǎn)有三種:
????????????????????????持久節(jié)點(diǎn) ? ? ? 臨時(shí)節(jié)點(diǎn) ? ? ?順序節(jié)點(diǎn)
? ? ? ? 組合節(jié)點(diǎn)類型:
? ? ? ? ? ? ? ??????????持久節(jié)點(diǎn)
????????????????????????持久順序節(jié)點(diǎn)
????????????????????????臨時(shí)節(jié)點(diǎn)
? ? ? ? ? ? ? ? ? ? ? ? 臨時(shí)順序節(jié)點(diǎn)
搭建中遇到的問(wèn)題
? ? ? ? 1够委、軟連接創(chuàng)建之后使用ll查看存在閃爍情況荐类,檢查路徑后使用rm移除錯(cuò)誤的連接重新創(chuàng)建解決問(wèn)題。
? ? ? ? 2茁帽、創(chuàng)建完成后玉罐,在三臺(tái)機(jī)器上面啟動(dòng)zookeeper屈嗤,使用status查看提示進(jìn)程未啟動(dòng),檢查了防火墻狀態(tài)厌小。查看日志發(fā)現(xiàn)報(bào)錯(cuò)大意是myid=5的zookeeper并未啟動(dòng)恢共,原因是因?yàn)樵趜oo.cfg中寫入了5臺(tái)server。在所有機(jī)器的進(jìn)程都啟動(dòng)后璧亚,發(fā)現(xiàn)只有1,2,4,5能查看到當(dāng)前角色讨韭。進(jìn)入node03,查看啟動(dòng)日志癣蟋,發(fā)現(xiàn)myid手誤打成了33透硝,更正后重新啟動(dòng),所有節(jié)點(diǎn)都能正確查看到角色疯搅。
? ? ? ? ? ? 問(wèn)題排除建議:檢查防火墻濒生,檢查myid是否正確創(chuàng)建。遇到問(wèn)題查看日志幔欧,里面或許存在蛛絲馬跡罪治。
?未完待續(xù)....