日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

服务器启动时的leader选举

發布時間:2024/4/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器启动时的leader选举 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每個節點啟動的時候狀態都是LOOKING,處于觀望狀態,接下來就開始進行選主流程?

若進行Leader選舉,則至少需要兩臺機器,這里選取3臺機器組成的服務器集群為例。在集群初始化階段,當有一臺服務器Server1啟動時,其單獨無法進行和完成Leader選舉,當第二臺服務器Server2啟動時,此時兩臺機器可以相互通信,每臺機器都試圖找到Leader,于是進入Leader選舉過程。選舉過程如下

(1) 每個Server發出一個投票。由于是初始情況,Server1和Server2都會將自己作為Leader服務器來進行投票,每次投票會包含所推舉的服務器的myid和ZXID、epoch,使用(myid, ZXID,epoch)來表示,此時Server1的投票為(1, 0),Server2的投票為(2, 0),然后各自將這個投票發給集群中其他機器。

(2) 接受來自各個服務器的投票。集群的每個服務器收到投票后,首先判斷該投票的有效性,如檢查是否是本輪投票(epoch)、是否來自LOOKING狀態的服務器。

(3) 處理投票。針對每一個投票,服務器都需要將別人的投票和自己的投票進行PK,PK規則如下?

i. 優先比較epoch

ii. 其次檢查ZXID。ZXID比較大的服務器優先作為Leader?

iii. 如果ZXID相同,那么就比較myid。myid較大的服務器作為Leader服務器。

對于Server1而言,它的投票是(1, 0),接收Server2的投票為(2, 0),首先會比較兩者的ZXID,均為0,再比較myid,此時Server2的myid最大,于是更新自己的投票為(2, 0),然后重新投票,對于Server2而言,其無須更新自己的投票,只是再次向集群中所有機器發出上一次投票信息即可。

(4) 統計投票。每次投票后,服務器都會統計投票信息,判斷是否已經有過半機器接受到相同的投票信息,對于Server1、Server2而言,都統計出集群中已經有兩臺機器接受了(2, 0)的投票信息,此時便認為已經選出了Leader。

(5) 改變服務器狀態。一旦確定了Leader,每個服務器就會更新自己的狀態,如果是Follower,那么就變更為FOLLOWING,如果是Leader,就變更為LEADING。

?

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的服务器启动时的leader选举的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。