一個(gè)分布式修改數(shù)據(jù)的一致性算法。
主要角色
決策者:是否批準(zhǔn)修改申請(qǐng)。對(duì)一個(gè)資源一次只能批準(zhǔn)一個(gè)修改申請(qǐng),不能做墻頭草。
申請(qǐng)者:提出修改申請(qǐng)。
學(xué)習(xí)者:記錄被批準(zhǔn)的修改。
主要過(guò)程
多個(gè)申請(qǐng)者向多個(gè)決策者提出修改申請(qǐng),獲得多數(shù)派批準(zhǔn)的申請(qǐng)將交給學(xué)習(xí)者進(jìn)行學(xué)習(xí)。
這個(gè)民主的過(guò)程將經(jīng)過(guò)兩輪表決,在第2輪表決中獲得多數(shù)派批準(zhǔn)的申請(qǐng)可以被整體接受,保障數(shù)據(jù)在各個(gè)節(jié)點(diǎn)上的一致性。
- 申請(qǐng)者要決策者做第一輪表決,嘗試獲得多數(shù)派決策者的支持,同時(shí)獲得已經(jīng)進(jìn)入第二輪表決的修改申請(qǐng)內(nèi)容。
- 申請(qǐng)者根據(jù)收集到的其他申請(qǐng)者的申請(qǐng)內(nèi)容的數(shù)量,在他們的修改申請(qǐng)和自己的修改申請(qǐng)中選一個(gè)最可能通過(guò)的申請(qǐng)內(nèi)容,發(fā)起第二輪表決。
決策者服務(wù)
決策者的工作實(shí)際和申請(qǐng)者,學(xué)習(xí)者之間沒(méi)有太多關(guān)系,決策者對(duì)一個(gè)修改申請(qǐng)無(wú)非要求以下內(nèi)容:
- 申請(qǐng)者ID
- 申請(qǐng)編號(hào)
- 資源ID
- 修改內(nèi)容
因此決策者這個(gè)角色可以做成一個(gè)相對(duì)獨(dú)立的服務(wù),為各種類型的申請(qǐng)者提供一致性支持。
另外由于多個(gè)學(xué)習(xí)者的學(xué)習(xí)可能出現(xiàn)不一致,所以學(xué)習(xí)編號(hào)可以由決策者這邊通過(guò)唯一數(shù)據(jù)庫(kù)遞增管理。
看過(guò)上文但又不是很懂的就不要多看幾次了。google一下能找到很多人的心得,但是中文的心得普遍不容易理解。所以推薦閱讀英文原版論文
paxos simple
posted on 2012-02-24 20:36
LOGOS 閱讀(3031)
評(píng)論(0) 編輯 收藏 引用