看了《從paxos到zookeeper》裏面paxos協議的講解,推導過程太複雜。記錄一下paxos協議的內容網絡
協議用於分佈式數據一致性,分爲三種角色,proposer、acceptor、learner。proposer向accepor集合提出議案[Mn, Vn], accepor批准議案,即肯定那個議案爲最終結果,learner主要同步結果, 相似master - slave中的slave分佈式
兩個階段:同步
階段一:ast
1. proposer提出議案[Mn, Vn],發送給prepare大部分的accepor節點zookeeper
2. acceptor節點收到prepare請求,承諾不批准比Mn更小的提案。若是批准其餘提案Vx,返回Vx循環
階段二:請求
1. proposer收到大部分acceptor響應,發送accept請求。若是沒有Vx返回,發送[Mn, Vx]給acceptor。若是有Vx返回,發送[Mn, Vn]通信
2. acceptor收到accept請求,批准提案[Mn, Vn]或者[Mn, Vx]數據
備註,爲了不死循環能夠使用主proposer給acceptor發送提案協議
learner同步提案
方式一:
全部的acceptor m個給learner n個發送提案, 網絡通訊次數m * n
方式二:
全部的acceptor給主learner發送提案, 主learn同步給其餘learner, m + n - 1(單點故障)
方式三:
全部acceptor m給一個learner x集合同步提案, 集合learner在給剩餘learn同步 m * x + x * (n - x) = x * ( m + n - x)