1. 傳統算法:quorum NRW, 2pc, 3pc等git
2. Paxos算法github
論文:《paxos made simple》, 《The Part-Time Parliament》算法
微信已經基於paxos開發了一套組件:sql
phxpaxos框架源碼, 租約型paxos算法實現數據庫
https://github.com/Tencent/phxpaxos微信
Phxsql: 基於phxpaxos框架開發的分佈式sql數據庫,框架
https://github.com/Tencent/phxsql分佈式
Phxqueue: 基於phxpaxos框架開發的分佈式消息隊列性能
https://github.com/Tencent/phxqueuespa
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