Zookeeper 選舉機(jī)制
1)半數(shù)機(jī)制:集群中半數(shù)以上機(jī)器存活,集群可用。所以Zookeeper適合安裝奇數(shù)臺(tái)服務(wù)器。
2)Zookeeper雖然在配置文件中并沒有指定Master和Slave。但是,Zookeeper工作時(shí),是有一個(gè)節(jié)點(diǎn)為Leader,其他則為Follower,Leader是通過內(nèi)部的選舉機(jī)制臨時(shí)產(chǎn)生的。
3)以一個(gè)簡單的例子來說明整個(gè)選舉的過程。
假設(shè)有五臺(tái)服務(wù)器組成的Zookeeper集群,它們的id從1-5,同時(shí)它們都是最新啟動(dòng)的,也就是沒有歷史數(shù)據(jù),在存放數(shù)據(jù)量這一點(diǎn)上,都是一樣的。如圖所示:

(1)服務(wù)器1啟動(dòng),此時(shí)只有它一臺(tái)服務(wù)器啟動(dòng)了,它發(fā)出去的報(bào)文沒有任何響應(yīng),所以它的選舉狀態(tài)一直是LOOKING狀態(tài)。
(2)服務(wù)器2啟動(dòng),它與最開始啟動(dòng)的服務(wù)器1進(jìn)行通信,互相交換自己的選舉結(jié)果,由于兩者都沒有歷史數(shù)據(jù),所以id值較大的服務(wù)器2勝出,但是由于沒有達(dá)到超過半數(shù)以上的服務(wù)器都同意選舉它(這個(gè)例子中的半數(shù)以上是3),所以服務(wù)器1、2還是繼續(xù)保持LOOKING狀態(tài)。
(3)服務(wù)器3啟動(dòng),根據(jù)前面的理論分析,服務(wù)器3成為服務(wù)器1、2、3中的老大,而與上面不同的是,此時(shí)有三臺(tái)服務(wù)器選舉了它,所以它成為了這次選舉的Leader。
(4)服務(wù)器4啟動(dòng),根據(jù)前面的分析,理論上服務(wù)器4應(yīng)該是服務(wù)器1、2、3、4中最大的,但是由于前面已經(jīng)有半數(shù)以上的服務(wù)器選舉了服務(wù)器3,所以它只能接收當(dāng)小弟的命了。
(5)服務(wù)器5啟動(dòng),同4一樣當(dāng)小弟。
Zookeeper 的監(jiān)聽原理是什么
- 首先要有一個(gè) main() 線程;
- 在 main() 線程中創(chuàng)建 Zookeeper 客戶端,這時(shí)就會(huì)創(chuàng)建兩個(gè)線程,一個(gè)負(fù)責(zé) 網(wǎng)絡(luò)連接通信(connet) , 一個(gè)負(fù)責(zé)監(jiān)聽(listener) .
- 通過 connet 線程將注冊(cè)的監(jiān)聽事件發(fā)送給 Zookeeper.
- 在 Zookeeper 的注冊(cè)監(jiān)聽器列表中將注冊(cè)的監(jiān)聽事件添加到列表中 .
- Zookeeper 監(jiān)聽到有數(shù)據(jù)或路徑變化,就會(huì)將這個(gè)消息發(fā)送到 listener 線程 .
- listener 線程內(nèi)部調(diào)用了 process() 方法 .
ZooKeeper的部署方式有哪幾種?集群中的角色有哪些?集群最少需要幾臺(tái)機(jī)器?
(1)部署方式單機(jī)模式、集群模式
(2)角色:Leader和Follower
(3)集群最少需要機(jī)器數(shù):3
Paxos算法(擴(kuò)展)
這個(gè)很少有公司會(huì)問到
Paxos算法一種基于消息傳遞且具有高度容錯(cuò)特性的一致性算法。
分布式系統(tǒng)中的節(jié)點(diǎn)通信存在兩種模型:共享內(nèi)存(Shared memory)和消息傳遞(Messages passing)?;谙鬟f通信模型的分布式系統(tǒng),不可避免的會(huì)發(fā)生以下錯(cuò)誤:進(jìn)程可能會(huì)慢、被殺死或者重啟,消息可能會(huì)延遲、丟失、重復(fù),在基礎(chǔ) Paxos 場(chǎng)景中,先不考慮可能出現(xiàn)消息篡改即拜占庭錯(cuò)誤的情況。Paxos 算法解決的問題是在一個(gè)可能發(fā)生上述異常的分布式系統(tǒng)中如何就某個(gè)值達(dá)成一致,保證不論發(fā)生以上任何異常,都不會(huì)破壞決議的一致性。
講一講什么是CAP法則?Zookeeper符合了這個(gè)法則的哪兩個(gè)?(擴(kuò)展)
CAP法則:強(qiáng)一致性、高可用性、分區(qū)容錯(cuò)性;
Zookeeper符合強(qiáng)一致性、高可用性!
本文由博客群發(fā)一文多發(fā)等運(yùn)營工具平臺(tái) OpenWrite 發(fā)布