分布式事务的几种实现方式

发布时间:2026/6/24 5:43:48
分布式事务的几种实现方式 基础理论CAP理论一致性Consistency 在分布式系统中所有的数据备份在同一时刻都保持一致状态如无法保证状态一致直接返回错误可用性Availability在集群中一部分节点故障也能保证客户端访问系统并得到正确响应允许一定时间内数据状态不一致分区容错性Partition tolerance分布式系统在遇到任何网络分区故障时仍然能保证对外提供满足一致性和可用性的服务除非整个网络环境都发生故障本地事务四大特性ACID事务应该是具备原子性、一致性、隔离性和持久性简称 ACID。原子性Atomicity可以理解为一个事务内的所有操作要么都执行要么都不执行。一致性Consistency可以理解为数据是满足完整性约束的也就是不会存在中间状态的数据事务前后数据的完整性必须保持一致。。隔离性Isolation指的是多个事务并发执行的时候不会互相干扰即一个事务内部的数据对于其他事务来说是隔离的。持久性Durability指的是一个事务完成了之后数据就被永远保存下来之后的其他操作或故障都不会对事务的结果产生影响。BASE理论基本可用Basically Available分布式系统在出现故障时保证核心可用允许损失部分可用性。响应时间上的损失、功能上的损失软状态Soft State系统中的数据允许存在中间状态中间状态不影响系统的整体可用性。支付中、处理中等最终一致性Eventually Consistent系统中的数据不可一直处于软状态必须在有时间期限在期限过后应当保证数据的一致性。支付中变为支付成功相比于本地事务的ADIC强一致性模型BASE理论提出通过牺牲一定的强一致性来获得可用性不同业务单元和业务组件对数据一致性的要求不一样因此分布式系统中BASE理论和ACID特性会结合使用。幂等性设计幂等Idempotent是一个数学与计算机学中的概念。f(n) 1^n 无论n等于多少f(n)永远值等于1在程序中使用相同参数执行同一个方法每一次执行结果都是相同的即具有幂等性以订单状态处理为例的幂等性设计不论执行多少次orderProcess()方法都只会扣减一次库存并且返回true。分布式事务分类二段提交2PCTwo-Phase-Commit|三段提交3PC Three-Phase-Commit三阶段提交引入两个机制1、 引入超时机制。同时在协调者和参与者中都引入超时机制。2、在第一阶段和第二阶段中插入一个准备阶段。保证了在最后提交阶段之前各参与节点的状态是一致的。主要解决的问题避免了参与者在长时间无法与协调者节点通讯协调者挂掉了的情况下无法释放资源的问题因为参与者自身拥有超时机制会在超时后自动进行本地commit从而进行释放资源。而这种机制也侧面降低了整个事务的阻塞时间和范围。缺点性能较差会存在长时间的锁表。补偿事务-TCCTry-Confirm-Cancel|SagaTCC 与Saga其实就是采用的补偿机制其核心思想是针对每个操作都要注册一个与其对应的确认和补偿撤销操作。确认和补偿都有采用幂等性设计。缺点代码量大可维护性差。消息事务消息一致性方案是通过消息中间件保证上、下游应用数据操作的一致性。基本思路是将本地操作和发送消息放在一个事务中保证本地操作和消息发送要么两者都成功或者都失败。下游应用向消息系统订阅该消息收到消息后执行相应操作。消息方案从本质上讲是将分布式事务转换为两个本地事务然后依靠下游业务的重试机制达到最终一致性。代表产品RocketMQ分布式事务产品框架京东jdts服务通过lb连到集群中任何一个节点均能保证业务正确执行某一个节点异常时集群可正常提供服务同时支持集群横向、纵向扩展。Seata一款开源的分布式事务解决方案致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式为用户打造一站式的分布式解决方案。全局事务服务GTS用于实现分布式环境下特别是微服务架构下的高性能事务一致性。可以与RDS、MySQL、PostgreSQL等数据源Spring Cloud、Dubbo、HSF及其他RPC框架MQ消息队列等中间件产品配合使用轻松实现分布式数据库事务、多库事务、消息事务、服务链路级事务及各种组合。作者京东零售 谷伟