0%

两阶段提交协议

两阶段提交协议

两阶段提交协议(Two-phase Commit)经常用来实现分布式事务,在两阶段协议中,一般包含两类节点:一类为协调者,一个系统中只有一个;一类为事务参与者。协议中每个节点都会记录操作日志并进行持久化

执行过程

  • 阶段一:请求阶段,协调者通知事务参与者准备提交或取消事务,然后进入表决过程,在表决过程中,参与者将告知协调者自己的决策:同意(事务参与者本地执行成功)或者取消(事务参与者本地执行失败)
  • 阶段二:提交阶段,协调者基于第一阶段的投票结果进行决策:提交或者取消,当且仅当所有参与者同意提交事务,协调者才通知所有参与者提交事务,否则协调者通知所有参与者取消事务

可能存在的问题

  • 事务参与者发生故障,可能很久都不会回复。需要给每个事务设置一个超时时间,如果某个事务参与者一直不响应,到达超时时间后整个事务失败
  • 协调者发生故障,协调者需要将事务相关信息记录到操作日志并同步到备用协调者,加入协调者发生故障,备用协调者可以接替完成后续工作

欢迎关注我的其它发布渠道