分布式事务是源于微服务的,服务之间的存在调用,且整个调用链路上存在多处写数据库表的行为,那么,分布式事务就是保证这些操作要么全部成功,要么全部失败。
分布式事务追求的一致性(业务特性
- 强一致性:任何一次读都能读到某个数据的最近一次写的数据(要求最高)
- 弱一致性:数据更新后,如果能容忍后续访问只能访问到部分或者全部访问不到,则是弱一致性(绝大多数的业务场景都是不允许的)
- 最终一致性:不保证在任意时刻数据都是完整的(状态一致),但是,随着时间的推移,数据总是会达到一致的状态。(异步操作)
常用的分布式事务的解决方案:
-
两阶段提交:指的是分两步提交:存在一个中央协调器负责协调各个分支的事务 -
本地消息表:是将需要分布式处理的任务通过消息日志的方式来异步执行
2.分布式事务解决方案 Seata AT 模式
2.1 概述
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务,官网 http://seata.io/zh-cn/
2.2 Seata的过程模型
-
Seata 中三个重要的角色:TC、TM、RM
2.3 Seata的事务模型
2.4 Seata AT 模式的整体机制
- AT对业务代码完全无侵入性,使用非常简单,改造成本低,我们只需要关注自己的业务sql,Seata会通过分析我们的业务sql,反向生成回滚数据
2.5 Seata AT模式工作示例
|