什么是分布式事务
分布式事务是指在分布式系统中,需要多个节点协同完成一个事务,而这些节点之间可能会存在网络延迟、故障等问题,因此需要一种解决方案来保证事务的原子性、一致性、隔离性和持久性(ACID)。 简单的来说就是: 保证处理一个事情,多个数据库(或者多个服务操作一个数据库)一致性,要么一起成功,要么一起失败
解决方案
- 两阶段提交(Two-Phase Commit,2PC):2PC 是最早也是最常见的分布式事务解决方案。它通过协调者节点来协调参与者节点完成一个分布式事务。在 2PC 中,协调者先向参与者发送 prepare 请求,等待参与者的响应,如果所有参与者都成功响应,协调者再向所有参与者发送 commit 请求,否则向所有参与者发送 abort 请求。2PC 的缺点是存在阻塞和单点故障等问题。
- TCC(Try-Confirm-Cancel):TCC 是一种基于补偿机制的分布式事务解决方案,通过将分布式事务拆分为 Try、Confirm 和 Cancel 三个阶段,来实现分布式事务。在 TCC 中,每个参与者先尝试执行操作,如果所有参与者都能成功执行,则进行 Confirm 操作,否则进行 Cancel 操作。TCC 可以容忍网络故障和节点故障,但需要实现补偿逻辑,实现复杂度较高
- 消息队列+本地事件表+定时任务