您好,登錄后才能下訂單哦!
小編給大家分享一下Zookeeper選取機制的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Zookeeper 是一個分布式服務框架,主要是用來解決分布式應用中遇到的一些數據管理問題如:統一命名服務、狀態同步服務、集群管理、分布式應用配置項的管理等。我們可以簡單把 Zookeeper 理解為分布式家庭的大管家,那么管家團隊是如何選出Leader的呢?
LEADING:說明此節點已經是leader節點,處于領導者地位的狀態,差不多就是一般集群中的master。但在zookeeper中,只有leader才有寫權限,其他節點(FOLLOWING)是沒有寫權限的,可以讀
LOOKING:選舉中,正在尋找leader,即將進入leader選舉流程中
FOLLOWING:跟隨者,表示當前集群中的leader已經選舉出來了,主要具備以下幾個功能點
向leader發送請求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息)
接收leader消息并進行處理;
接收client發送過來的請求,如果為寫請求,會發送給Leader進行投票處理,然后返回client結果。
OBSERVING:OBSERVING和FOLLOWING差不多,但不參加投票和選舉,接受leader選舉后的結果
假如有以下5臺機器server1、server2、server3、server4、server5 圖是網上扒的
每個server 自身都有一票,在初始化或者server崩潰數過半的時候,每個server都有一個自身的myid(zookeeper配置文件),這里按1、2、3、4、5算
在選舉過程中主要是依據zxid和myid來進行輪訓server然后比較統計投票
zxid (ZooKeeper Transaction Id,每次請求對應一個唯一的zxid,如果zxid a
選舉分為兩種情況,初始化和leader掛掉的時候,要進行leader選舉,至少需要2臺機器,集群機器臺數基本是奇數
當啟動初始化集群的時候,server1的myid為1,zxid為0 server2的myid為2,zxid同樣是0,以此類推。此種情況下zxid都是為0。先比較zxid,再比較myid
當選舉機器過半的時候,已經選舉出leader后,后面的就跟隨已經選出的leader,所以4和5跟隨成為leader的server3
所以,在初始化的時候,一般到過半的機器數的時候誰的myid最大一般就是leader
按照上述初始化的情況,server3成為了leader,在運行期間處于leader的server3掛了,那么非Observer服務器server1、server2、server4、server5會將自己的節點狀態變為LOOKING狀態
1、開始進行leader選舉。現在選舉同樣是根據myid和zxid來進行
2、首先每個server都會給自己投一票競選leader。假設server1的zxid為123,server2的zxid為124,server4的zxid為169,server5的zxid為188
3、同樣先是比較zxid再比較,server1、server2、server4比較server4根據優先條件選舉為leader。然后server5還是跟隨server4,即使server5的zxid最大,但是當選舉到server4的時候,機器數已經過半。不再進行選舉,跟隨已經選舉的leader
zookeeper集群為保證數據的一致性所有的操作都是由leader完成,之后再由leader同步給follower。重點就在這兒,zookeeper并不會確保所有節點都同步完數據,只要有大多數節點(即n/2+1)同步成功即可。
咱們假設有一個寫操作成功那么現在數據只存在于節點leader,之后leader再同步給其他follower。這時候宕掉3個機器,已經過半的機器無法進行投票選舉,剩余2臺不足過半,無法選舉=無法提供任何服務。再啟動一個機器恢復服務。所以宕掉的機器不要過半,過半就會導致無法正常服務。
在leader選舉的時候會有30s-120s的過程,在這期間也是無法提供服務的。如果用zookeeper要作為服務發現是個弊端,基本無法忍受,zookeeper本身是一個CP系統,保證數據的一致性,在恢復的時候再提供服務,并沒有多好高可用的方案。如果leader發生故障選舉時無法提供服務發現對一個大型應用來說可能是致命的。它可以為同在一個分布式系統中的其他服務提供:統一命名服務、配置管理、分布式鎖服務、集群管理等功能)是個偉大的開源項目,很成熟
以上是“Zookeeper選取機制的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。