zookeeper--分佈式可靠協調系統

一、整體介紹
1)角色:在zookeeper集羣中,會有三種角色,leader、 follower、 observer分別對應着領導者、議員、觀察者。
2)機制:zookeeper採用半數以上的投票經過機制。
3)工做方式:不管訪問到了哪臺zookeeper服務器,最終都會被轉發給leader服務器,再由leader服務器分給zookeeper集羣中全部follower服務器去投票,半數投票經過就被認爲操做可執行,不然不可執行。 observer與follower服務器最大的不一樣在於observer沒有投票權,在客戶端發起的請求或操做中,leader服務器是不會把消息傳遞給observer服務器讓其投票的,只負責執行結果。
二、zookeeper集羣節點爲單數個
其根本爲zookeeper的半數投票經過機制。
1)容錯:
舉例說明--
臺服務器,至少2臺正常運行才行,正常運行1臺服務器都不容許掛掉;3臺服務器,至少2臺正常運行才行,正常運行能夠容許1臺服務器掛掉;4臺服務器,至少3臺正常運行才行,正常運行能夠容許1臺服務器掛掉;......
經過以上能夠發現,3臺服務器和4臺服務器都最多容許1臺服務器掛掉,5臺服務器和6臺服務器都最多容許2臺服務器掛掉,可是明顯4臺服務器成本高於3臺服務器成本,6臺服務器成本高於5服務器成本。這是因爲半數以上投票經過決定的。
2)防腦裂:一個zookeeper集羣中,能夠有多個follower、observer服務器,可是必需只能有一個leader服務器。若是leader服務器掛掉了,剩下的服務器集羣會經過半數以上投票選出一個新的leader服務器。
舉例說明--
一個集羣3臺服務器,所有運行正常,可是其中1臺裂開了,和另外2臺沒法通信。3臺機器裏面2臺正常運行過半票能夠選出一個leader。
一個集羣4臺服務器,所有運行正常,可是其中2臺裂開了,和另外2臺沒法通信。4臺機器裏面2臺正常工做沒有過半票以上達到3,沒法選出leader正常運行。
一個集羣5臺服務器,所有運行正常,可是其中2臺裂開了,和另外3臺沒法通信。5臺機器裏面3臺正常運行過半票能夠選出一個leader。
一個集羣6臺服務器,所有運行正常,可是其中3臺裂開了,和另外3臺沒法通信。6臺機器裏面3臺正常工做沒有過半票以上達到4,沒法選出leader正常運行。
三、配置說明
1)zoo.cfg文件
clientPort=2181
#client port,顧名思義,就是客戶端鏈接zookeeper服務的端口。這是一個TCP port。
server.1=127.0.0.1:20881:30881
server.2=127.0.0.1:20882:30882
server.3=127.0.0.1:20883:30883
#上面的配置中有兩個TCP port。後面一個是用於Zookeeper選舉用的,而前一個是Leader和Follower或Observer交換數據使用的。server.後面的數字,就是myid。
2)myid介紹
在dataDir裏會放置一個myid文件,裏面就一個數字,用來惟一標識這個服務。這個id是很重要的,必定要保證整個集羣中惟一。zookeeper會根據這個id來取出server.x上的配置。好比當前id爲1,則對應着zoo.cfg裏的server.1的配置。
並且在後面leader選舉的時候,這個id的大小也是有意義的。
相關文章
相關標籤/搜索