zk01

zookeeper基礎(chǔ)

????ZooKeeper是一個(gè)分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Hadoop和Hbase的重要組件。提供的功能包括:命名服務(wù)、 配置管理、集群管理、分布式鎖、隊(duì)列管理。

zookeeper是由文件系統(tǒng)和通知機(jī)制組成

官網(wǎng)提供的集群圖

????Zookeeper由2n+1臺servers組成,每個(gè)server都知道彼此的存在。每個(gè)server都維護(hù)的內(nèi)存狀態(tài)鏡像以及持久化存儲的事務(wù)日志和快照。為了保證Leader選舉能過得到多數(shù)的支持,所以ZooKeeper集群的數(shù)量一般為奇數(shù)。對于2n+1臺server,只要有n+1臺(大多數(shù))server可用,整個(gè)系統(tǒng)保持可用。所以Zookeeper集群至少需要3臺servers服務(wù)器!


1、工作機(jī)制

? ?從設(shè)計(jì)模式來講,它是一個(gè)基于觀察者設(shè)計(jì)的分布式服務(wù)管理框架,負(fù)責(zé)存儲和管理有用的數(shù)據(jù),然后接受觀察者的注冊,一旦數(shù)據(jù)狀態(tài)發(fā)生改變,就通知已經(jīng)注冊的觀察者。

2、特點(diǎn)

? ? 1)一個(gè)領(lǐng)導(dǎo)者(leader),多個(gè)跟隨者(follower)

? ? 2)集群需要半數(shù)以上的節(jié)點(diǎn)存活才能夠提供服務(wù)(半數(shù)機(jī)制)

? ? 3)全局?jǐn)?shù)據(jù)一致:每個(gè)server保存相同的數(shù)據(jù)副本。

? ? 4)數(shù)據(jù)更新原子性。

? ? 5)實(shí)時(shí)性:在一定時(shí)間范圍內(nèi),Client能都到最新數(shù)據(jù)(更新請求轉(zhuǎn)發(fā),由leader實(shí)施)。

3、角色

????在ZooKeeper集群當(dāng)中,集群中的服務(wù)器角色有兩種Leader和Learner,Learner角色又分為Observer和Follower,具體功能如下:

????Leader(領(lǐng)導(dǎo)者)為客戶端提供讀和寫的服務(wù),負(fù)責(zé)投票的發(fā)起和決議,更新系統(tǒng)狀態(tài)。

????Follower(跟隨者)為客戶端提供讀服務(wù),如果是寫服務(wù)則轉(zhuǎn)發(fā)給Leader。在選舉過程中參與投票。

????Observe(觀察者)為客戶端提供讀服務(wù)器,如果是寫服務(wù)則轉(zhuǎn)發(fā)給Leader。不參與選舉過程中的投票,也不參與“過半寫成功”策略。在不影響寫性能的情況下提升集群的讀性能。此角色于zookeeper3.3系列新增的角色。

????client(客戶端)連接zookeeper服務(wù)器的使用著,請求的發(fā)起者。獨(dú)立于zookeeper服務(wù)器集群之外的角色。

3.1、Zookeeper 下 Server工作狀態(tài)

每個(gè)Server在工作過程中有三種狀態(tài):?

????LOOKING:當(dāng)前Server不知道leader是誰,正在搜尋????

????LEADING:當(dāng)前Server即為選舉出來的leader????

????FOLLOWING:leader已經(jīng)選舉出來,當(dāng)前Server與之同步

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容