1. 程式人生 > >分散式系統一致性演算法備註

分散式系統一致性演算法備註

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