前面已经学习了分布式事务的基础理论,以理论为基础,针对不同的分布式场景业界常见的解决方案有2PC、TCC、可靠消息最终一致性、最大努力通知这几种。TM 向 TC 发起针对 XID 的全局提交或回滚决议。
分布式事务的定义什么是分布式事务?把这个概念拆开来讲有2个小概念,分布式系统+事务。分布式系统它是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。事务是具备原子性、一致性、隔离性和持久性(简称 ACID)4个特性的多个连续操作。
分布式事务基础理论1.1 本地事务1.2 分布式事务1.3 CAP1.4 BASE1.5 刚柔并济。 分布式事务实践2.1 XA2.2 3PC2.3 TCC2.4 SAGA2.5 本地消息表2.6 消息事务2.7 最大努力通知。
随着互联网的快速发展,软件系统由原来的单体应用转变为分布式应用,分布式系统会把一个应用系统拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务,例如用户注册送积分事务、创建订单减库存事务,银行转账事务等都是分布式事务。
例如一个下单业务中,假设由「扣减库存、新增订单」两个操作组成,在单库中通过MySQL提供的事务机制,能够确保该事务中任意操作执行出现问题时,另一个操作变更的数据可以回滚,从而确保整库数据的一致性,避免产生库存扣了,但订单却未增加的情况出现。
这便是 Seata AT 模式的大致执行过程,在这个过程中我们发现 Seata AT 模式设计的巧妙之处,Seata 为了能做到无侵入的自动实现全局事务提交与回滚,它在 TM端利用了类似于“Spring 声明式事务”的设计,在进入 TM 方法前通知 TC 开启全局事务,在成功执行后自动提交全局事务,执行失败后进行全局回滚。