分布式协议中最重要的两个协议: 两阶段提交 paxos
=============================================================================================
两阶段提交协议
两阶段提交一般有两类节点 一协调者 二事务的参与者(一般有多个事务参与者),
事务参与者完成系统相关业务成功后,通知协调者状态,当所有的事务参与者业务状态都成功后,协调者才发出提交指令,参与者提交或者取消事务
两阶段提交包括两个阶段
1 请求阶段,协调者通知事务参与者准备提交或取消事务,然后进入表决过程,在表决过程中,参与者将告知协调者自己的决策,同意或者取消
2 提交阶段 在提交阶段,协调者将根据第一阶段的决策结果,提交或者取消,当且仅当所有参与者都同意,协调者才通知所有的参与者提交或者取消事务,
================================================================================================
paxos 协议
paxos协议是为了解决多个节点之间的一致性问题等多资源争夺是的数据库一致性,例如分布式存储系统,多个节点之间是通过操作日志同步数据的,如果只有一个节点为主节点,那么,很容易确保多个节点之间操作日志的一致性,但是主节点可能会发生故障,这时候就需要选举出新的主节点,paxos协议就是用来实现这种需求的,只要保证了多个节点之间操作日志的一致性,就能够在这些节点上构建高可用的全局服务,例如分布式锁,全局命名,配置服务
为了实现高可用性,主节点往往将数据以操作日志的方式同步到备份节点,如果主节点发生故障,备节点会提议自己成为主节点,paxos协议保证即使存在多个提议者,也能够保证所有节点最终保持一致,选出唯一的主节点
paxos协议过程如下:
1 批准 proposer发送accept消息要求所有节点接收某一个提议值,acceptor可以同意或者拒绝
2 确认如果超过一半的节点接收提议,提议就可以生效,proposer发送ack通知所有的节点提议生效,这个时候也允许acceptor反悔刚才的意见,反悔的时候,将新的提议者给proposer,并承诺不再接受比当前提议值小的请求
当出现网络异常或者其异常时,系统可能存在多个proposer,他们各自发出不同的提议,如果proposer发出的提议没有被多数节点同意,则要继续再来一轮