分布式協調與同步之分布式選舉

2022-08-09 09:03:08 字數 1790 閱讀 6745

分布式系統中需要乙個主節點,該節點用於負責對其他節點進行協調和管理。同時主節點的存在能夠保證分布式集群資料的一致性。

選舉原則:偏向於讓id更大的節點作為集群的leader

前提條件:假設集群中所有節點都知道其他節點的id

訊息型別/節點狀態

election訊息,用於發起選舉

alive訊息,用於對election訊息的應答

victory訊息,競選成功的主節點向其他節點傳送宣誓主權的訊息

選舉過程

觸發條件: id比當前主節點大的節點加入集群,主節點故障

具體過程: 

(1) 每個節點判斷自己的id是否最大,最大則直接傳送victory訊息

(2) 如果id不是最大的,則向比自己id大的節點傳送election訊息

(3) 在給定時間範圍內,本節點沒有收到其他節點回覆的alive訊息,則認為自己是主節點,並向其他節點傳送victory訊息;若收到alive訊息,則等待其他節點的victory訊息

(4) 收到比本節點id小的節點傳送的election訊息則回覆乙個alive訊息

優缺點

優點: 選舉速度快,演算法複雜度低,簡單易實現

缺點:每個節點額外儲存資訊較多,任意乙個id比前主節點大的節點加入時都會觸發重新選舉過程

軟體舉例: mongodb

選舉原則:獲得多數投票的集群節點成為leader

前提條件:假設集群中所有節點之間都能相互通訊

訊息型別/節點狀態

leader: 主節點

candidate:候選者,每個節點都可以成功候選者

follower:leader的跟隨者

選舉過程

觸發條件: leader任期到了,新節點加入集群或者主節點故障

具體過程: 

(1) 初始化所有節點為follower,開始選舉時有follower轉化為candidate,並向其他節點傳送選舉訊息

(2) 收到訊息的節點進行投票,票數超過一半的節點成為主節點,其他節點由candidate降為follower

優缺點

優點: 選舉速度快,演算法複雜度低,簡單易實現,當有新節點加入或者節點故障恢復時不會觸發真正的切主

缺點:每個節點之間都需要相互通訊,所以通訊量較大

軟體舉例: etcd

選舉原則:少數服從多數,節點id大的或者資料最新的優先成為主節點

訊息型別/節點狀態

投票資訊

leader: 主節點

follower:leader的跟隨者

observer: 觀察者,無投票權

looking,following,leading,observing

優缺點

優點: 穩定性較好,效能較好

缺點:容易出現廣播風暴,投票時間較長,複雜度較高

軟體舉例:zookeeper

本文是極客時間付費課程《分布式技術原理與演算法解析》筆記

分布式協調與同步之分布式鎖

實現方式 建立一張鎖表對臨界資源做唯一約束,鎖住資源時增加一條記錄,釋放時刪除該記錄 優點 容易理解 缺點 容易出現單點故障,死鎖等問題,實現複雜,效能低可靠性低 應用場景 併發量低,效能要求低的場景 優點 效能高,無單點故障問題,易於實現 缺點 鎖失效時間的控制不穩定,可靠性不如zookeeper...

分布式協調與同步之分布式事務

包含一系列操作的,乙個有邊界的工作序列,有明確的開始和結束標誌,且要麼被完全執行,要麼完全失敗 分布式系統中執行的事務,有多個本地事務組合而成 原子性,一致性,隔離性和永續性 剛性事務 遵循acid原則,具有強一致性 柔性事務 根據不同的業務場景使用不同的方法實現最終一致性,可以容忍一定時間內的資料...

分布式協調與同步之分布式共識

在多個節點均可獨自操作或記錄的情況下,使得所有節點針對某個狀態達到一致的過程,通過共識機制可以使得分布式系統中多個節點的資料達成一致。分布式共識技術其實就是區塊鏈共識機制的核心 一致性強調的是結果,共識強調的是達成一致的過程 獲得記賬權和所有節點達成一致 機制 以每個節點或伺服器的計算能力來競爭記賬...