分布式事务小记

  1. CAP理论

CAP: C-一致性 A-可用性 P-分区容错性

  1. BASE理论: BA-基本可用 S-软状态 E-最终一致性

  2. 几种分布式事务的协议

3.1. 两阶段提交协议 2PC

分布式系统中有一个协调者(Coordinator) 其他节点是参与者(Cohorts) 所有节点都日志先行。

第一阶段: 协调者节点向所有参与者节点询问是否可以执行提交操作(vote) 并等待各参与者的响应。参与者节点执行询问发起为止的所有事务操作, 写undo和redo日志,如果成功的话其实所有参与者已经执行了事务操作。每个参与者节点响应协调者发起的询问,如果参与者节点的事务操作执行成功,则 返回“同意”消息,如果参与者的事务操作执行失败,则返回“中止”消息。这个阶段是vote阶段

第二阶段: 如果所有参与者返回的消息都是“同意”, 则协调者节点向所有参与者发出 正式提交 的请求,参与者节点正式完成操作,并释放整个事务期间占用的资源。参与者 节点向协调者发送 完成 消息。协调者收到所有参与者的 完成 消息后,完成事务 这是成功的时候

而如果参与者中有失败或者超时,则协调者向所有参者发出回滚操作,参与者利用undo log回滚,并释放事务期间占用的资源。参与者向协调者发出 回滚完成 的消息。 协调者收到所有参与者发出的 回滚完成 的消息后 取消事务

2PC的缺点– 执行过程中,所有参与者的节点都是事务阻塞的;参与者有故障时,协调者需要给每个参与者额外指定超时机制,超时后整个事务失败。协调者发生故障时,参与者一直 阻塞下去。如果协调者在发出commit消息之后宕机,而唯一收到该消息的参与者也宕机了,则改事务的状态就不确定了。

Written on April 12, 2020