阿里技術大講堂OceanBase專場中曾有專門一場講座介紹OB本身實現的分佈式選舉算法:《分佈式選舉-破解數據庫高可用性難題》算法
這裏簡單列一下這個選舉算法和raft論文中提到的選舉算法的區別。數據庫
以下都是以OB的立場說的:網絡
1)OB使用的選舉算法,選舉開始點靠timer對齊,保證網絡中的參與者都是「同時」發起選舉的;而Raft是一個非同步發起的選舉,每每是先開始選舉的candidate贏得選舉;運維
2)OB選舉算法有一個預投票階段,能夠保證根據特定業務邏輯選主;Raft沒法實現特定選主;分佈式
3)OB每一個選舉週期內的投票不持久化,經過實例啓動後第一個lease週期內不投票的方式,保證任何一個實例在一個lease週期內都不會重複投票;而Raft每輪的投票是持久化的;htm
4)OB因爲選舉起始點須要靠timer對齊,所以對機房的時鐘偏差有要求;基本假設是最大誤差不超過100ms;Raft論文中明確提出其對timing無依賴;get
5)OB容許有主狀態下根據指令進行改選,便於運維;同步
感受最主要的區別就是如上幾點。it