成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Zookeeper的選舉算法和腦裂問題深度講解

開源 算法
ZK是微服務解決方案中擁有服務注冊發現最為核心的環境,是微服務的基石。作為服務注冊發現模塊,并不是只有ZK一種產品,目前得到行業認可的還有:Eureka、Consul。

 ZK介紹

  1. ZK = zookeeper 

ZK是微服務解決方案中擁有服務注冊發現最為核心的環境,是微服務的基石。作為服務注冊發現模塊,并不是只有ZK一種產品,目前得到行業認可的還有:Eureka、Consul。

[[284109]]

這里我們只聊ZK,這個工具本身很小zip包就幾兆,安裝非常傻瓜,能夠支持集群部署。

背景

在集群環境下ZK的leader&follower的概念,已經節點異常ZK面臨的問題以及如何解決。ZK本身是java語言開發,也開源到Github上但官方文檔對內部介紹的很少,零散的博客很多,有些寫的很不錯。

提問:

  • zookeeper選舉算法中的過半票數才提供正常服務,這是什么邏輯?

ZK集群單節點狀態(每個節點有且只有一個狀態),ZK的定位一定需要一個leader節點處于lading狀態。

  • looking:尋找leader狀態,當前集群沒有leader,進入leader選舉流程。
  • following:跟隨者狀態,接受leading節點同步和指揮。
  • leading:領導者狀態。
  • observing:觀察者狀態,表名當前服務器是observer。

ZK投票處理策略

投票信息包含 :所選舉leader的Serverid,Zxid,SelectionEpoch

  • Epoch判斷,自身logicEpoch與SelectionEpoch判斷:大于、小于、等于。
  • 優先檢查ZXID。ZXID比較大的服務器優先作為Leader。
  • 如果ZXID相同,那么就比較myid。myid較大的服務器作為Leader服務器。

過半選舉算法

ZK中有三種選舉算法,分別是LeaderElection,FastLeaderElection,AuthLeaderElection,FastLeaderElection和AuthLeaderElection是類似的選舉算法,唯一區別是后者加入了認證信息, FastLeaderElection比LeaderElection更高效,后續的版本只保留FastLeaderElection。

理解:

在集群環境下多個節點啟動,ZK首先需要在多個節點中選出一個節點作為leader并處于Leading狀態,這樣就面臨一個選舉問題,同時選舉規則是什么樣的。“過半選舉算法”:投票選舉中獲得票數過半的節點勝出,即狀態從looking變為leading,效率更高。

以5臺服務器講解思路:

服務器1啟動,此時只有它一臺服務器啟動了,它發出去的Vote沒有任何響應,所以它的選舉狀態一直是LOOKING狀態;

服務器2啟動,它與最開始啟動的服務器1進行通信,互相交換自己的選舉結果,由于兩者都沒有歷史數據,所以id值較大的服務器2勝出,但是由于沒有達到超過半數以上的服務器都同意選舉它(這個例子中的半數以上是3),所以服務器1,2還是繼續保持LOOKING狀態.

服務器3啟動,根據前面的理論,分析有三臺服務器選舉了它,服務器3成為服務器1,2,3中的老大,所以它成為了這次選舉的leader.

服務器4啟動,根據前面的分析,理論上服務器4應該是服務器1,2,3,4中最大的,但是由于前面已經有半數以上的服務器選舉了服務器3,所以它只能接收當小弟的命了.

服務器5啟動,同4一樣,當小弟.

假設5臺中掛了2臺(3、4),其中leader也掛掉:

leader和follower間有檢查心跳,需要同步數據 Leader節點掛了,整個Zookeeper集群將暫停對外服務,進入新一輪Leader選舉

1)服務器1、2、5發現與leader失聯,狀態轉為looking,開始新的投票 2)服務器1、2、5分別開始投票并廣播投票信息,自身Epoch自增; 3) 服務器1、2、5分別處理投票,判斷出leader分別廣播 4)根據投票處理邏輯會選出一臺(2票過半) 5)各自服務器重新變更為leader、follower狀態 6)重新提供服務

腦裂問題

腦裂問題出現在集群中leader死掉,follower選出了新leader而原leader又復活了的情況下,因為ZK的過半機制是允許損失一定數量的機器而扔能正常提供給服務,當leader死亡判斷不一致時就會出現多個leader。

方案:

ZK的過半機制一定程度上也減少了腦裂情況的出現,起碼不會出現三個leader同時。ZK中的Epoch機制(時鐘)每次選舉都是遞增+1,當通信時需要判斷epoch是否一致,小于自己的則拋棄,大于自己則重置自己,等于則選舉;

歸納

在日常的ZK運維時需要注意以上場景在極端情況下出現問題,特別是腦裂的出現,可以采用:

過半選舉策略下部署原則:

  1. 服務器群部署要單數,如:3、5、7、...,單數是最容易選出leader的配置量。
  2. ZK允許節點最大損失數,原則就是“保證過半選舉正常”,多了就是浪費。

詳細的算法邏輯是很復雜要考慮很多情況,其中有個Epoch的概念(自增長),分為:LogicEpoch和ElectionEpoch,每次投票都有判斷每個投票周期是否一致等等。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2020-10-27 11:50:53

運維Zookeeper腦裂

2024-12-19 17:09:55

Redis哨兵模式數據庫

2024-04-18 08:00:00

腦裂問題Redis哨兵模式

2024-06-17 08:24:09

2017-09-02 16:23:45

AWSAZ群集

2025-01-13 00:00:00

配置Redis腦裂

2021-10-08 20:30:12

ZooKeeper選舉機制

2010-02-07 15:29:41

Android問題

2022-06-20 05:25:54

裂腦Oracle RAC數據庫

2024-10-28 15:57:34

Python函數

2022-07-28 19:19:21

Zookeeper中心化架構

2021-07-29 06:56:36

分布式系統腦裂

2024-09-29 08:47:55

2021-03-11 07:27:19

ZooKeeper選舉機制

2020-12-04 06:40:46

Zookeeper選舉機制

2009-10-10 09:03:00

網絡布線

2010-06-11 17:15:18

rsync重啟

2022-07-07 07:51:00

數據中心存儲層腦裂

2024-07-01 13:58:07

2018-01-25 19:01:47

Zookeeper分布式數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线免费观看亚洲 | 亚洲国产精选 | 久久精品综合 | 午夜影视免费片在线观看 | 亚洲免费精品一区 | 国产精品久久久久久久岛一牛影视 | 伊人焦久影院 | 91av在线免费 | 国产一区二区三区免费 | 日韩一级免费电影 | 国产精品国产成人国产三级 | 成人在线网 | 久久精品一区二区三区四区 | 亚洲精品日韩综合观看成人91 | 国产一区免费视频 | 成人亚洲一区 | 国产精品不卡 | 精品www| 亚洲国产黄 | 在线免费看毛片 | 成人av一区二区三区 | 精品乱子伦一区二区三区 | 高清欧美性猛交 | 天天操天天摸天天爽 | 岛国毛片在线观看 | 色悠悠久 | 国产精品成人品 | 精品国产欧美日韩不卡在线观看 | 精品一二区 | 三区四区在线观看 | 宅男噜噜噜66一区二区 | av日韩在线播放 | 中文字幕在线观看成人 | 中文字幕一区二区三区不卡 | 国产黄色免费网站 | 91精品国产综合久久久久蜜臀 | 国产免费播放视频 | 日韩精品一区二区三区 | 色综合一区二区三区 | 国产激情视频在线免费观看 | 2一3sex性hd |