分散式系統一致性演算法備註
1. 傳統演算法:quorum NRW, 2pc, 3pc等
2. Paxos演算法
論文:《paxos made simple》, 《The Part-Time Parliament》
微信已經基於paxos開發了一套元件:
phxpaxos框架原始碼, 租約型paxos演算法實現
https://github.com/Tencent/phxpaxos
Phxsql: 基於phxpaxos框架開發的分散式sql資料庫,
https://github.com/Tencent/phxsql
Phxqueue: 基於phxpaxos框架開發的分散式訊息佇列
https://github.com/Tencent/phxqueue
Paxosstore,基於無租約型paxos演算法實現的Nosql分散式資料儲存系統,目前部分開源了演算法的核心部分。
https://github.com/Tencent/paxosstore
paxos活鎖問題:
多個paxos group同時prepare,容易出現活鎖問題,既一段時間內任意一臺機器都不能獲得大多數機器的接受。解決方法是先確定一個master,強一致選主,只有master可以prepare。
2. raft等演算法
較paxos更加容易理解容易實現,強化leader地位,限制日誌id連續性,但是也會一定程度上影響效能。
論文:《In Search of an Understandable Consensus Algorithm (Extended Version)》
較著名的實現有etcd, cockrouchDB,tidb, kubernetes。
etcd原始碼:
https://github.com/etcd-io/etcd
goraft原始碼:
https://github.com/goraft/raft