新聞中心
1 Zookeeper介紹
Zookeeper是一個(gè)開(kāi)源分布式應(yīng)用協(xié)調(diào)服務(wù)。
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、新巴爾虎左網(wǎng)絡(luò)推廣、小程序定制開(kāi)發(fā)、新巴爾虎左網(wǎng)絡(luò)營(yíng)銷、新巴爾虎左企業(yè)策劃、新巴爾虎左品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供新巴爾虎左建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
簡(jiǎn)單來(lái)說(shuō),zookeeper = 通知機(jī)制 + 文件系統(tǒng)
zookeeper 為什么是奇數(shù)
zookeeper有這樣一個(gè)特性:集群中只要有過(guò)半的機(jī)器是正常工作的,那么整個(gè)集群對(duì)外就是可用的。也就是說(shuō)如果有2個(gè)zookeeper,那么只要有1個(gè)死了zookeeper就不能用了,因?yàn)?沒(méi)有過(guò)半,所以2個(gè)zookeeper的死亡容忍度為0;同理,要是有3個(gè)zookeeper,一個(gè)死了,還剩下2個(gè)正常的,過(guò)半了,所以3個(gè)zookeeper的容忍度為1。
1.1 主要角色
來(lái)自服務(wù)器端的
>> 領(lǐng)導(dǎo)者(leader),負(fù)責(zé)進(jìn)行投票的發(fā)起和決議,更新系統(tǒng)狀態(tài)(數(shù)據(jù)同步),發(fā)送心跳。
>> 學(xué)習(xí)者(learner),包括跟隨者(follower)和觀察者(observer)。
>> 跟隨者(follower),用于接受客戶端請(qǐng)求、向客戶端返回結(jié)果,在選主過(guò)程中參與投票。
>> 觀察者(Observer),可以接受客戶端請(qǐng)求,將寫請(qǐng)求轉(zhuǎn)發(fā)給leader,但observer不參加投票過(guò)程,只同步leader的狀態(tài),observer的目的是為了擴(kuò)展系統(tǒng),提高讀取速度。
1)leader失效后會(huì)在follower中重新選舉新的leader
2)每個(gè)follower都和leader有連接,接受leader的數(shù)據(jù)更新操作
3)客戶端可以連接到每個(gè)server,每個(gè)server的數(shù)據(jù)完全相同
4)每個(gè)節(jié)點(diǎn)的服務(wù)Server,記錄事務(wù)日志和快照到持久存儲(chǔ)
1.2 工作原理
Zookeeper的核心是原子廣播,這個(gè)機(jī)制保證了各個(gè)Server之間的同步。實(shí)現(xiàn)這個(gè)機(jī)制的協(xié)議叫做Zab協(xié)議。
Zab協(xié)議有兩種模式,它們分別是恢復(fù)模式(選主)和廣播模式(同步)。當(dāng)服務(wù)啟動(dòng)或者在領(lǐng)導(dǎo)者崩潰后,Zab就進(jìn)入了恢復(fù)模式,恢復(fù)模式不接受客戶端請(qǐng)求,當(dāng)領(lǐng)導(dǎo)者被選舉出來(lái),且大多數(shù)Server完成了和leader的狀態(tài)同步以后,恢復(fù)模式就結(jié)束了。狀態(tài)同步保證了leader和Server具有相同的系統(tǒng)狀態(tài)。
1.2.1 Zookeeper節(jié)點(diǎn)數(shù)據(jù)操作流程
1)寫操作
發(fā)起提案 proposal
quorum 法定人數(shù)
1)在Client向Follwer 或 Observer 發(fā)出一個(gè)寫的請(qǐng)求;
2)Follwer 或 Observer 把請(qǐng)求發(fā)送給Leader;
3)Leader接收到以后向所有follower發(fā)起提案;
4)Follwer收到提案后執(zhí)行寫操作,然后把操作結(jié)果發(fā)送給Leader;
5)當(dāng)多數(shù)follower返回提案結(jié)果后,leader會(huì)commit該提議,通知其他Follower 和 Observer 同步信息;
6)Follwer 或Observer把請(qǐng)求結(jié)果返回給Client。
2)讀操作
1)在Client向Follwer 或 Observer 發(fā)出一個(gè)讀的請(qǐng)求;
2)Follwer 或 Observer 把請(qǐng)求結(jié)果返回給Client;
1.3 數(shù)據(jù)模型
1)ZooKeeper本質(zhì)上是一個(gè)分布式的小文件存儲(chǔ)系統(tǒng);
2)Zookeeper表現(xiàn)為一個(gè)分層的文件系統(tǒng)目錄樹結(jié)構(gòu)(不同于文件系統(tǒng)的是,節(jié)點(diǎn)可以有自己的數(shù)據(jù),而文件系統(tǒng)中的目錄節(jié)點(diǎn)只有子節(jié)點(diǎn)),每個(gè)節(jié)點(diǎn)可以存少量的數(shù)據(jù)。
3)每個(gè)節(jié)點(diǎn)稱做一個(gè)ZNode。每個(gè)ZNode都可以通過(guò)其路徑唯一標(biāo)識(shí)。
4)圓形節(jié)點(diǎn)可以含有子節(jié)點(diǎn),多邊形節(jié)點(diǎn)不能含有子節(jié)點(diǎn)。一個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)應(yīng)用,節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)就是應(yīng)用需要的信息,比如HA狀態(tài)active、standby。
1.4 主要特點(diǎn)
最終一致性:client不論連接到哪個(gè)Server,展示給它都是同一個(gè)視圖,這是zookeeper最重要的特性;
可靠性:具有簡(jiǎn)單、健壯、良好的性能,如果消息被某一臺(tái)服務(wù)器接受,那么它將被所有的服務(wù)器接受;
實(shí)時(shí)性:Zookeeper保證客戶端將在一個(gè)時(shí)間間隔范圍內(nèi)獲得服務(wù)器的更新信息,或者服務(wù)器失效的信息。 但由于網(wǎng)絡(luò)延時(shí)等原因,Zookeeper不能保證兩個(gè)客戶端能同時(shí)得到剛更新的數(shù)據(jù),如果需要最新數(shù)據(jù),應(yīng)該在讀數(shù)據(jù)之前調(diào)用sync()接口;
等待無(wú)關(guān)(wait-free):慢的或者失效的client,不得干預(yù)快速的client的請(qǐng)求,使得每個(gè)client都能有效的等待;
原子性:更新只能成功或者失敗,沒(méi)有中間狀態(tài);
順序性:按照客戶端發(fā)送請(qǐng)求的順序更新數(shù)據(jù);
1.5 應(yīng)用場(chǎng)景
數(shù)據(jù)發(fā)布與訂閱
應(yīng)用配置集中到節(jié)點(diǎn)上,應(yīng)用啟動(dòng)時(shí)主動(dòng)獲取,并在節(jié)點(diǎn)上注冊(cè)一個(gè)watcher,每次配置更新都會(huì)通知到應(yīng)用。
發(fā)布訂閱模式
命名空間服務(wù)
分布式命名服務(wù),創(chuàng)建一個(gè)節(jié)點(diǎn)后,節(jié)點(diǎn)的路徑就是全局唯一的,可以作為全局名稱使用。
分布式通知/協(xié)調(diào)
不同的系統(tǒng)都監(jiān)聽(tīng)同一個(gè)節(jié)點(diǎn),一旦有了更新,另一個(gè)系統(tǒng)能夠收到通知。
分布式鎖
Zookeeper能保證數(shù)據(jù)的強(qiáng)一致性,用戶任何時(shí)候都可以相信集群中每個(gè)節(jié)點(diǎn)的數(shù)據(jù)都是相同的。一個(gè)用戶創(chuàng)建一個(gè)節(jié)點(diǎn)作為鎖,另一個(gè)用戶檢測(cè)該節(jié)點(diǎn),如果存在,代表別的用戶已經(jīng)鎖住,如果不存在,則可以創(chuàng)建一個(gè)節(jié)點(diǎn),代表?yè)碛幸粋€(gè)鎖。
[][][]
集群管理
每個(gè)加入集群的機(jī)器都創(chuàng)建一個(gè)節(jié)點(diǎn),寫入自己的狀態(tài)。監(jiān)控父節(jié)點(diǎn)的用戶會(huì)收到通知,進(jìn)行相應(yīng)的處理。離開(kāi)時(shí)刪除節(jié)點(diǎn),監(jiān)控父節(jié)點(diǎn)的用戶同樣會(huì)收到通知。
本文題目:Zookeeper理解
當(dāng)前網(wǎng)址:http://fisionsoft.com.cn/article/ghjpje.html