系統設計入門: Leader Election

ChunJen Wang
jimmy-wang
Published in
Apr 25, 2022

當需要介接第三方服務時,我們會設置middle servers,避免外部服務可以直接對我們開發的db直接改寫資料,為確保執行過程資料一致性,而有middle servers的leader election。

推動畫看leader election過程:
http://thesecretlivesofdata.com/raft/

Leader Election

在演算法中,透過投票選出單一執行個體作為領導者(leader),負責管理其他執行個體(follower),並協調分散式系統中的所有執行的動作。

好處:

  1. 確保執行個體彼此不會衝突
  2. 避免造成共用資源爭用
  3. 干擾其他執行個體正在執行工作

但要如何選出 Leader?

Paxos & Raft

為兩種不同的consensus algorithm。以下範例以易懂的Raft介紹:

角色依據投票分為跟隨者(Follower)、候選人(Candidate)、領導者(Leader),每隔一段時間都將由候選人發起投票。

透過每隔一段時間,由最先timeout的server發出投票,並由其他server回應,回應票數如果過半,發出者就是leader。

而當如果今天有任一server故障,仍不影響投票機制,但可能改變leader。
如下圖,當Node C故障,則依據timeout再繼續下一輪投票。

Leader負責與Client溝通,並將資訊同步到其他node server(followers)

回顧目的在於
處理故障容錯,在節點故障或是因為網路問題導致node間溝通中斷時,如何讓整個集群的狀態維持一致。

Raft 於在 2013 年與指導教授 John Ousterhout 共同發表《In Search of an Understandable Consensus Algorithm》,該篇文章更於 2014 年獲得 Best Paper Award (USENIX Annual Technical Conference) 。

--

--

jimmy-wang
jimmy-wang

Published in jimmy-wang

一位經過400日金融業商業分析師的洗禮,決心出走,再次朝向資料分析路前行,希望有天能和它成為好朋友。

ChunJen Wang
ChunJen Wang

Written by ChunJen Wang

嗨,歡迎你的到來,我目前在銀行擔任DS。過去曾做過銀行大型專案BA,也曾在轉職科技業DE中踢了鐵板,相信每一個人都有自己要走的路,而努力的過程,可以讓我們離心中理想更接近,如果我的文章能帶給你一些啟發與幫助,別忘了幫我在文章底下按下拍手~^^