亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Zookeeper選取機制的示例分析

發布時間:2022-02-19 13:48:00 來源:億速云 閱讀:150 作者:小新 欄目:開發技術

小編給大家分享一下Zookeeper選取機制的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Zookeeper 是一個分布式服務框架,主要是用來解決分布式應用中遇到的一些數據管理問題如:統一命名服務、狀態同步服務、集群管理、分布式應用配置項的管理等。我們可以簡單把 Zookeeper 理解為分布式家庭的大管家,那么管家團隊是如何選出Leader的呢?

Zookeeper選取機制的示例分析

zookeeper節點的4種狀態:

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 圖是網上扒的

Zookeeper選取機制的示例分析
img

每個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

  • 服務器1啟動,給自己投票,然后發投票信息,由于其它機器還沒有啟動所以它收不到反饋信息,服務器1的狀態一直屬于Looking(選舉狀態)。
  • 服務器2啟動,給自己投票,同時與之前啟動的服務器1交換結果,由于服務器2的myid大所以服務器2勝出,但此時投票數沒有大于半數,所以兩個服務器的狀態依然是LOOKING。
  • 服務器3啟動,給自己投票,同時與之前啟動的服務器1,2交換信息,由于服務器3的myid最大所以服務器3勝出,此時投票數正好大于半數,所以服務器3成為領導者,服務器1,2成為小弟。
  • 服務器4啟動,給自己投票,同時與之前啟動的服務器1,2,3交換信息,盡管服務器4的myid大,但之前服務器3已經勝出,所以服務器4只能成為小弟。
  • 服務器5啟動,后面的邏輯同服務器4成為小弟

當選舉機器過半的時候,已經選舉出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選取機制的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

锡林浩特市| 临高县| 保靖县| 衡山县| 宜君县| 崇信县| 甘德县| 延长县| 武冈市| 射阳县| 右玉县| 高雄县| 巴东县| 湖州市| 泸西县| 玉山县| 略阳县| 太仓市| 简阳市| 巢湖市| 玛沁县| 汪清县| 揭西县| 台东市| 泊头市| 双鸭山市| 兴山县| 北川| 石柱| 介休市| 广灵县| 盖州市| 丰城市| 永川市| 濮阳县| 遂平县| 苍南县| 固阳县| 蒲江县| 胶南市| 扎鲁特旗|