1聘萨、概念:
Zookeeper是一個(gè)開源的分布式的咕别,為分布式應(yīng)用提供協(xié)調(diào)服務(wù)的Apache項(xiàng)目。
2、工作機(jī)制:
從設(shè)計(jì)模式的角度理解:是一個(gè)基于觀察者模式設(shè)計(jì)的分布式服務(wù)管理框架防嗡,它負(fù)責(zé)存儲(chǔ)和管理大家關(guān)心的數(shù)據(jù),然后接受觀察者的注冊(cè)侠坎,一旦這些數(shù)據(jù)的狀態(tài)發(fā)生變化蚁趁,Zookeeper就將負(fù)責(zé)通知已經(jīng)在zookeeper上注冊(cè)的那些觀察者并作出相應(yīng)的反應(yīng)。
3实胸、zookeeper的特點(diǎn):
1他嫡、Zookeeper集群:一個(gè)領(lǐng)導(dǎo)者(Leader),多個(gè)跟隨者(Follower)組成集群庐完。
2钢属、集群中只要半數(shù)以上節(jié)點(diǎn)存活,zookeeper集群就能正常服務(wù)门躯。
3淆党、全局?jǐn)?shù)據(jù)一致:每個(gè)Server保存一份相同的數(shù)據(jù)副本,Client無(wú)論連接到哪個(gè)Server,數(shù)據(jù)都是一致的染乌。
4山孔、更新請(qǐng)求順序進(jìn)行,來(lái)自同一個(gè)Client的更新請(qǐng)求按其發(fā)送請(qǐng)求的順序荷憋,有序進(jìn)行台颠。
5、數(shù)據(jù)更新的原子性勒庄,一次數(shù)據(jù)更新要么成功串前,要么失敗婶希。
6费韭、實(shí)時(shí)性,在一定時(shí)間范圍內(nèi)界轩,Client能讀到最新的數(shù)據(jù)(各服務(wù)見同步數(shù)據(jù)非逞涡耄快)玩荠。
4、Zookeeper的數(shù)據(jù)結(jié)構(gòu):
5贼邓、應(yīng)用場(chǎng)景:
提供的服務(wù)包括:統(tǒng)一命名服務(wù)阶冈、統(tǒng)一配置管理、統(tǒng)一集群管理塑径、服務(wù)器節(jié)點(diǎn)動(dòng)態(tài)上下線女坑、軟負(fù)載均衡。
1)統(tǒng)一命名服務(wù):
在分布式環(huán)境下统舀,經(jīng)常需要對(duì)應(yīng)用/服務(wù)進(jìn)行統(tǒng)一命名匆骗,便于識(shí)別。(例如IP不容易記住誉简,兒域名容易記椎锞汀)
2)統(tǒng)一配置管理:
3)統(tǒng)一集群管理:
4)服務(wù)器節(jié)點(diǎn)動(dòng)態(tài)上下線:
5)軟負(fù)載均衡:
在Zookeeper中記錄每臺(tái)服務(wù)器的訪問(wèn)數(shù),會(huì)讓訪問(wèn)數(shù)最少的服務(wù)器去處理最新的客戶端請(qǐng)求闷串。
6瓮钥、內(nèi)部原理:
6.1、選舉機(jī)制:
- 半數(shù)機(jī)制:集群中半數(shù)以上的機(jī)器存活烹吵,集群可用碉熄。所以Zookeeper適合安裝奇數(shù)臺(tái)服務(wù)器
- Zookeeper雖然沒有在配置文件中沒有指定Master和Slave。但是Zookeeper工作時(shí)是有一個(gè)節(jié)點(diǎn)為Leader肋拔,其他則為Follower锈津。Leader是通過(guò)內(nèi)部的選舉機(jī)制臨時(shí)產(chǎn)生的。
選舉過(guò)程