分布式事务笔记
分布式事务笔记 分布式事务的常见解决方案:
2PC: perpare + commit 3PC: can_commit + pre_commit + do_commit TCC: try + confirm + cancel Saga: Events/Choreography or Command/Orchestration 本地消息表: local + event 2PC 2PC 由协调器通知各个事务参与者,由 perpare 与 commit 两个阶段组成,前者通知所有参与者预备事务,后者通知参与者真实提交事务。如果有参与者在 prepare 阶段失败,那么会通知所有参与者回滚。
优点:
步骤少,简单 缺点:
协调器单点故障 会阻塞其他参与者的事务 commit 阶段可能出现消息丢失 3PC 3PC 在 2PC 的基础上增加了各个参与者的超时时间,如果参与者在超时是时间内没有相应,那么视为失败。3PC 依然没有解决 commit 消息丢失的问题。
TCC TCC 相当于 3PC 的完善,除了超时机制外,还存在 cancel 步骤,意味着可以在 commit 失败后进行补偿。
Saga Saga 是一种长活事务的设计模式( Long-live transaction ),它基于 1987 年的一篇论文,主要有两种实现:Events/Choreography or Command/Orchestration 可以参考:saga-pattern-implement-business-transactions-using-microservices-part、 saga。