第2章 一致性协议

目录

2.1  2pc和3pc

2.2  paxos算法

2.1  2pc和3pc

2PC两阶段提交,分为两个阶段;

阶段一:协调者(coordinator)发起提议,收集参与者(participants)的反馈(vote),根据反馈结果决定是提交(commit)还是中断(abort)事务。


第2章 一致性协议_第1张图片

阶段二: coordinator根据participant的反馈,提交或中止事务,如果participant全部同意则提交,只要有一个participant不同意就中止。


2pc的缺点:

1coordinator宕机

coordinator在阶段一发起提议后如果宕机了,那么participant会进入阻塞状态,一直等到coordinator回应。

2coordinator宕机后 ,participant也宕机

此时其他participant 即不能提交也不能回滚,处于阻塞状态

在2PC中一个participant的状态只有它自己和coordinator知晓,假如coordinator提议后自身宕机,在watchdog启用前一个participant又宕机,

其他participant就会进入既不能回滚、又不能强制commit的阻塞状态,直到participant宕机恢复。这引出两个疑问:

能不能去掉阻塞,使系统可以在commit/abort前回滚(rollback)到决议发起前的初始状态

当次决议中,participant间能不能相互知道对方的状态,又或者participant间根本不依赖对方的状态

3PC

阶段一:CanCommit

协调者向参与者询问是否可以执行事务提交

阶段二: PreCommit

协调者收到参与者的回应如果都是yes,则进行预提交,否则中断事务

阶段三:

在获取参与者的ack确认后进行,提交,否则中断事务


第2章 一致性协议_第2张图片

三阶段的优点在于,降低了参与者的阻塞范围,缺点在于可能会导致数据的不一致性(参与者接到preCommit之后如果和协调者连接中断依然会提交)

2.2 paxo 算法

参考知乎上的回答

https://www.zhihu.com/question/19787937

你可能感兴趣的:(第2章 一致性协议)