前面一篇文章中提到,選主本質上就是分布式共識問題,可以用基本paxos解決,下面就raft選主演算法與基本paxos的對應關係來說明。
關於raft選主的詳細描述可以參考原**
所以選主本質上是可以通過基本paxos演算法來保證的,選主沒有完全使用paxos演算法,可以看作使用了paxos演算法的某個子演算法解決了比容錯分布式一致問題限制稍微小的問題。當然,我們可以在選主時加上額外的限制條件,只要能保證可能選出乙個主。
選出新的leader後,它至少要負責做兩件事情,一件是確定下一次客戶請求應該用哪個日誌槽位或者說項,另一件是確定整個集群的機器過去已經提交過的最近的項(或者說日誌),確定這兩個值的過程實際上就是日誌恢復的過程,下面對兩種演算法具體分析。這裡補充一點之前文章漏掉的東西,基本paxos演算法實際上有三個階段,最後乙個階段是提交階段,只是通常leader-based演算法為了優化網路開銷,將第三階段和第二階段合併了,而在每次執行第二階段是帶上leader已經提交過的日誌號,所以新leader還需要確定最近被提交過的日誌,而這種優化也引入了另外的複雜性。
對於multi-paxos來說
對比上面兩者恢復的過程,我們可以看到raft是怎麼簡化multi-paxos的。一旦新的leader確定了上面那兩件事情,就可以進入正常的log replication階段了,也就僅僅是多數派的事情了。
這一節為後面的文章做個鋪墊,對於log replication實際上不會涉及太多狀態的reason,所以也就比較容易理解,基本上是類似簡化的兩階段提交,後面會介紹下raft的log replication。對於客戶端互動,leader什麼時候返回結果,客戶端怎麼超時重試,以及怎麼保證請求的冪等,membership management,以及leader lease等一些優化手段。
el tree只能勾選已選同層
最近有個需求,樹結構選項,如果有已勾選節點了,後續只能勾選同一層級節點資料。感覺可以記錄下。實現思路 1.同一層級的上一節點 父節點 肯定是相同的。所以判斷當前勾選的節點的父節點是否相同 2.如果沒有已選節點則可以隨意勾選節點 orgtreeref node key dataid check cha...
centos7 配置各從節點與主節點時間同步
chrony是乙個ntp協議的實現程式,既可以當做服務端,也可以充當客戶端 它專為間歇性網際網路連線的系統而設計,當然也能良好應用於持久網際網路連線的環境 chrony有三個時間參考 硬體時鐘 實時時鐘以及手動同步。yum install chrony yvim etc chrony.conf暫時只...
同餘與模算術
a b mod p a mod p b mod p mod p a b mod p a mod p b mod p mod p a b mod p a mod p b mod p p mod p a b mod p a mod p b mod p 結合率 a b mod p c mod p a b ...