raft協議
㈠ OceanBase的一致性協議為什麼選擇 paxos而不是raft
基於Raft的分布式一致性協議實現的局限及其對資料庫的風險普通伺服器具有良好的性價比,因此在互聯網等行業得到了廣泛的應用。但普通伺服器也不得不面對2%-4%的年故障率([1]),於是必須高可用的傳統資料庫只得很悲催地使用性價比低得可憐的高可靠伺服器。分布式一致性協議(distributed consensus protocol)是迄今為止最有效的解決伺服器不可靠問題的途徑,因為它使得一組伺服器形成一個相互協同的系統,從而當其中部分伺服器故障後,整個系統也能夠繼續工作。而Paxos協議([2])則幾乎成了分布式一致性協議的代名詞。然而,Paxos協議的難以理解的名聲似乎跟它本身一樣出名。為此,Stanford大學的博士生Diego Ongaro甚至把對Paxos協議的研究作為了博士課題。他在2014年秋天正式發表了博士論文:「CONSENSUS: BRIDGING THEORY AND PRACTICE」,在這篇博士論文中,他給出了分布式一致性協議的一個實現演算法,即Raft。由於這篇博士論文很長(257頁),可能是為了便於別人閱讀和理解,他在博士論文正式發表之前,即2014年初,把Raft相關的部分摘了出來,形成了一篇十多頁的文章:「In Search of an Understandable Consensus Algorithm」,即人們俗稱的Raft論文。Raft演算法給出了分布式一致性協議的一個比較簡單的實現,到目前為止並沒有人挑戰這個演算法的正確性。然而,OceanBase卻沒有採用Raft演算法,這並非是OceanBase團隊同學不懂Raft,而是Raft的一個根本性的局限對資料庫的事務有很大的風險。Raft有一個很強的假設是主(leader)和備(follower)都按順序投票,為了便於闡述,以資料庫事務為例:·主庫按事務順序發送事務日誌·備庫按事務順序持久化事務和應答主庫