Megastore中的paxos
除去輕量級的chubby,megastore可能是最早的商用paxos系統,這裡主要回顧下megastore的paxos機制
概覽,megastore中的paxos特性如下
1、每個服務都有一個Coordinator,Coordinator記錄整個實體組(在megastore中,數據被分為多個實體組,每個實體組為一個單元,獨立管理)中哪些副本記錄了所有的數據更新。
2、沒有獨立的master,編號為n的日誌記錄了當前決議和日誌n+1的leader。n+1的請求必須向該leader發起
當一個客戶端需要讀時,讀流程:
1、 查詢coordinator本地數據是否是最新
2、 確定已寫入的最高日誌位置編號,然後選擇一個副本,讀取該編號日誌,此時分為兩種情況
(1) 第一步中,若是最新,則本地讀,
(2) 否則讀取一個大多數
3、 在本地副本上做catch-up
(1) 對於本地副本不知道的決議,從其他副本讀取
(2) 對於不知道是否提交的決議,發起一個noop操作
(3) 提交這些決議
4、 若client要讀本地副本不是最新的,client向coordinator發起驗證
5、 向本地的讀取數據