zookeeper基礎(chǔ)
????ZooKeeper是一個(gè)分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Hadoop和Hbase的重要組件。提供的功能包括:命名服務(wù)、 配置管理、集群管理、分布式鎖、隊(duì)列管理。
zookeeper是由文件系統(tǒng)和通知機(jī)制組成

????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與之同步