分布式事务:
- 问题: 在分布式系统中,一次操作可能涉及到多个服务甚至多个数据库,传统的ACID事务难以保证跨服务的数据一致性。
-
解决方案: 多种分布式事务方案被提出,包括但不限于:
- 两阶段提交(2PC, Two-Phase Commit) 和 三阶段提交(3PC, Three-Phase Commit) 协议,尽管存在性能和可用性问题,但能在一定程度上保证事务的一致性。
- 补偿事务(Saga):通过正向操作和逆向补偿操作来实现最终一致性。
- TCC(Try-Confirm-Cancel) 模式:每个服务提供三个接口,分别尝试执行、确认执行、取消执行。
- 基于消息的事务处理:如阿里巴巴的Seata框架,通过AT、XA、TCC等多种模式解决分布式事务问题,或使用RabbitMQ、Kafka等消息中间件实现消息幂等性和最终一致性。
- 分布式事务协调器:如Google的Percolator和Spanner,通过乐观并发控制结合版本戳的方式来处理分布式事务。