Paxos算法

来源:互联网 发布:知豆可以开多少公里 编辑:程序博客网 时间:2024/06/06 17:28

区块链核心算法解析 第二章

容错问题和paxos算法

定义2.1 计算机网络中所有计算机均为节点(在c/s模式下,两者均为节点)

模型2.2 节点可以本地运算,也可以向其他节点发送消息

算法2.3 朴素的客户端/服务器算法:客户端每次向服务器发送一条命令

模型2.4 存在消息丢失,不保证消息传给接收者

算法2.5 带确认的客户端/服务器算法:客户端发送命令后,服务器每收到一条命令,都发送一条确认信息,若客户端在合理时间内未收到服务器确认信息,则重新发送命令

模型2.6 消息传输花费时间不同

定理2.7 算法2.5在多个服务器和多个客户端运行,服务器接收到的命令顺序可能是不同的,这会导致不一致的状态

定义2.8 对于一组节点所有节点以相同顺序执行一个命令序列,则这组节点实现了状态复制

算法2.9 所有客户端向串行化器发送命令,一次一条;串行化器将命令逐条发给所有服务器;一旦串行化器收到所有确认信息,通知客户端命令被执行;

(风险:串行化器必须保持通畅)

算法2.10 2PL和2PC

(风险:所有服务器都要畅通)

paxos:

定义2.11 票:即弱化的锁,可重新发布可以过期

算法2.12 朴素的基于票的协议

算法2.13 paxos

引理2.14 若已存在一个被选中的propose(t,c),则对于后续的每一个propose(t',c'),c'=c

(用反证法可以证明,设t'为所有在t之后发布的提案中最小的票号,只有一种情况客户端不采纳c,即有服务器接受了另一提案propose(t*,c*),但由于t<t*<t',t'不为所有在t之后发布的提案中最小的票号,即不成立)

定理2.15 如果一条命令被某些服务器执行,那么所有服务器都会执行c




原创粉丝点击