zookeeper基礎(chǔ)
????ZooKeeper是一個分布式的洋魂,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù)帅掘,是Hadoop和Hbase的重要組件灾部。提供的功能包括:命名服務(wù)珊佣、 配置管理蹋宦、集群管理、分布式鎖咒锻、隊列管理冷冗。
zookeeper是由文件系統(tǒng)和通知機(jī)制組成
????Zookeeper由2n+1臺servers組成,每個server都知道彼此的存在惑艇。每個server都維護(hù)的內(nèi)存狀態(tài)鏡像以及持久化存儲的事務(wù)日志和快照蒿辙。為了保證Leader選舉能過得到多數(shù)的支持,所以ZooKeeper集群的數(shù)量一般為奇數(shù)敦捧。對于2n+1臺server须板,只要有n+1臺(大多數(shù))server可用,整個系統(tǒng)保持可用兢卵。所以Zookeeper集群至少需要3臺servers服務(wù)器习瑰!
1、工作機(jī)制
? ?從設(shè)計模式來講秽荤,它是一個基于觀察者設(shè)計的分布式服務(wù)管理框架甜奄,負(fù)責(zé)存儲和管理有用的數(shù)據(jù),然后接受觀察者的注冊窃款,一旦數(shù)據(jù)狀態(tài)發(fā)生改變课兄,就通知已經(jīng)注冊的觀察者。
2晨继、特點(diǎn)
? ? 1)一個領(lǐng)導(dǎo)者(leader)烟阐,多個跟隨者(follower)
? ? 2)集群需要半數(shù)以上的節(jié)點(diǎn)存活才能夠提供服務(wù)(半數(shù)機(jī)制)
? ? 3)全局?jǐn)?shù)據(jù)一致:每個server保存相同的數(shù)據(jù)副本。
? ? 4)數(shù)據(jù)更新原子性。
? ? 5)實(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)
每個Server在工作過程中有三種狀態(tài):?
????LOOKING:當(dāng)前Server不知道leader是誰,正在搜尋????
????LEADING:當(dāng)前Server即為選舉出來的leader????
????FOLLOWING:leader已經(jīng)選舉出來孵户,當(dāng)前Server與之同步