首頁技術(shù)文章正文

Python提高筆記整理(二)

更新時間:2018-07-30 來源:黑馬程序員 瀏覽量:

2.Zookeeper 集群 
2.1 Zookeeper 集群簡介 
2.1.1 為什么搭建 Zookeeper 集群 
大部分分布式應(yīng)用需要一個主控、協(xié)調(diào)器或者控制器來管理物理分布的子進程。目前,
大多數(shù)都要開發(fā)私有的協(xié)調(diào)程序,缺乏一個通用機制,協(xié)調(diào)程序的反復(fù)編寫浪費,且難以形 成通用、伸縮性好的協(xié)調(diào)器,zookeeper 提供通用的分布式鎖服務(wù),用以協(xié)調(diào)分布式應(yīng)用。 所以說 zookeeper 是分布式應(yīng)用的協(xié)作服務(wù)。 
zookeeper 作為注冊中心,服務(wù)器和客戶端都要訪問,如果有大量的并發(fā),肯定會有等 待。所以可以通過 zookeeper 集群解決。 
下面是 zookeeper 集群部署結(jié)構(gòu)圖: 
1532913170508_1.jpg2.1.2 了解 Leader 選舉 
Zookeeper 的啟動過程中 leader 選舉是非常重要而且最復(fù)雜的一個環(huán)節(jié)。那么什么是 leader選舉呢?zookeeper為什么需要leader選舉呢?zookeeper的leader選舉的過程又是什 么樣子的? 
首先我們來看看什么是 leader 選舉。其實這個很好理解,leader 選舉就像總統(tǒng)選舉一樣, 每人一票,獲得多數(shù)票的人就當(dāng)選為總統(tǒng)了。在 zookeeper 集群中也是一樣,每個節(jié)點都會 投票,如果某個節(jié)點獲得超過半數(shù)以上的節(jié)點的投票,則該節(jié)點就是 leader 節(jié)點了。 
以一個簡單的例子來說明整個選舉的過程.   假設(shè)有五臺服務(wù)器組成的 zookeeper 集群,它們的 id 從 1-5,同時它們都是最新啟動的,也 就是沒有歷史數(shù)據(jù),在存放數(shù)據(jù)量這一點上,都是一樣的.假設(shè)這些服務(wù)器依序啟動,來看看會 發(fā)生什么 。 
   1) 服務(wù)器 1 啟動,此時只有它一臺服務(wù)器啟動了,它發(fā)出去的報沒有任何響應(yīng),所以它的 選舉狀態(tài)一直是 LOOKING 狀態(tài)   
   2) 服務(wù)器 2 啟動,它與最開始啟動的服務(wù)器 1 進行通信,互相交換自己的選舉結(jié)果,由于 兩者都沒有歷史數(shù)據(jù),所以id 值較大的服務(wù)器2勝出,但是由于沒有達到超過半數(shù)以上的服務(wù) 器都同意選舉它(這個例子中的半數(shù)以上是 3),所以服務(wù)器 1,2 還是繼續(xù)保持 LOOKING 狀態(tài).   
   3) 服務(wù)器 3 啟動,根據(jù)前面的理論分析,服務(wù)器 3 成為服務(wù)器 1,2,3 中的老大,而與上面不 同的是,此時有三臺服務(wù)器選舉了它,所以它成為了這次選舉的 leader.   
   4) 服務(wù)器 4 啟動,根據(jù)前面的分析,理論上服務(wù)器 4 應(yīng)該是服務(wù)器 1,2,3,4 中最大的,但是 由于前面已經(jīng)有半數(shù)以上的服務(wù)器選舉了服務(wù)器 3,所以它只能接收當(dāng)小弟的命了.   



作者:黑馬程序員人工智能+python培訓(xùn)學(xué)院
首發(fā):http://python.itheima.com/
分享到:
在線咨詢 我要報名
和我們在線交談!