Seata 在微服务一致性中的探索-季敏

Seata 在微服务一致性中的探索

  • 常见分布式一致性解决方案介绍
  • seata原理介绍
  • seata发展历程与roadmap
  • 用户案例与推荐阅读
展开查看详情

1.Seata 在微服务一致性中的探索 季敏 Seata 开源社区发起人

2.自我介绍 季敏(GitHub ID slievrly),Seata 开源项目负责人。加入阿 里巴巴中间件后主要负责 TXC 、GTS 和 Seata 项目的研发,推 动了项目在集团内业务的落地,实现了专有云和阿里云的对外 技术输出及 Seata 的开源。长期从事于分布式中间件的架构设 计与开发工作,在分布式事务领域有着深厚的技术积累。

3.目录 常见分布式一致性解决方案介绍 Seata 原理介绍 Seata 发展历程与 Roadmap 用户案例与推荐阅读

4.分布式事务现状

5.DTP模型--XA XA是由X/Open组织提出的分布式事务的规范。 XA规范 应用/应用框架/应用服务器(AP) 主要定义了(全局)事务管理器(TM)和(局 部)资源管理器 (RM)之间的接口。主流的关系型 数据库产品都是实现了 5.操作1..n 1.开始全局事务 6.提交事务 3.操作1..n 2.注册资源1 4.注册资源2 XA接口的。 XA接口是双向的系统接口,在事务管理器 (TM)以及 一个或多个资源管理器(RM)之 间形成通信桥梁。 事务管理器 资源管理器 资源管理器 XA之所以需要引入事务管理器是因为,在分布 式系统中, (TM) RM1 RM2 从理论上讲两台机器理论上无法达 到一致的状态,需要 7.准备 引入一个单点进行协调。 8.准备 由全局事务管理器管理和协调的事务,可以跨 越多个资 9.提交 源(如数据库或JMS队列)和进程。 10.提交

6.柔性事务-异步确保型 是否能保证 一致性?

7.异步确保型—本地事件表 Service A Ei consume Service B Ei+1 本地事务 … … 业务 事件 En-1 业务 En recover 事件恢复 send

8.异步确保型—外部事件表 Service A En En-1 … … Ei+1 Ei Service B ② doBiz ① half event 业务 业务 事件消息 事件恢复 ③ confirm/cancel check status 事件系统 事件

9.常用分布式事务-总结 刚性事务: 标准分布式事务(2PC/3PC) 缺点:性能差、资源占用时间长、需要实现XA接口 柔性事务: 异步确保型 缺点:侵入性高、依赖可靠事件服务、实时性差、消费失败状态不可逆 纯补偿性 缺点:侵入性高、开发成本高、一致性差 TCC 缺点:侵入性高、开发成本高 最大努力通知 缺点:侵入性高、开发成本高、实时性差

10.Seata 原理介绍

11.What is Seata Seata: Simple Extensible Autonomous Transaction Architecture 微服务架构下,易用、高效的分布式事务解决方案 技术积累: TXC GTS XTS 愿景: 像使用本地事务一样使用分布式事务

12.Problem VS Solution Business RPC Storage Order Account DB DB DB

13.Solution RPC: Dubbo、Spring Cloud、Motan 和 自定义 RPC 框架 资源: MySQL、Oracle、PostgreSQL、H2 和 RDS系列 等数据库 MQ、NoSQL XA 用户自定义类型资源

14.Seata 原理介绍 一个分布式(全局)事务是由若干本地(分支)事务组成。

15.Seata 原理介绍 Transaction Coordinator(TC): 事务协调器,维护全局事务的运行状态,驱动 Transaction Manager 全局事务的提交或回滚。 Transaction Manager(TM): 控制全局事务的边界,负责开启一个全局事 务,并最终负责发起全局提交或全局回滚。 Resource Resource Managers Managers (RM) Transaction Resource Manager(RM): Resource(RM) Manager Coordinator 控制分支事务,负责分支事务的注册、状态汇 报,并驱动分支(本地)事务的提交和回滚。

16.Seata 原理介绍 Distributed Storage Transaction RM DB Business TM Order TC RM DB Account RM DB

17.Seata 原理介绍 Begin/Commit/Rollback Microservices TM XID Register Branch RM RM Branch Commit/Rollback Microservices TC DB DB RM RM Microservices DB DB RM RM DB DB

18.Seata-AT Local Business Register Branch Transaction Business Table Business Table Before Commit Business Table Undo Log Table Commit RDBMS that Branch Status Support After Local TX RM Report TC ACID Transaction Delete Undo Log asynchronously Branch Commit Branch Commit Branch Rollback Compensate according to Branch Rollback Undo Log

19.Seata-TCC Register Branch Before Try Try Branch Status Report After Try RM TC Confirm Branch Commit Cancel Branch Rollback

20.Seata 发展历程与Roadmap

21.阿里巴巴分布式事务 GTS 公测 (Global Alibaba Fescar TXC 专有云输出 开源版本正式发布 树立了大量的企业、政府、金融等行业 Transaction Service) 的标杆用户 阿里云服务对外公测 2014.11 2015.06 2015.12 2017.02 2018.05 2019.01 TXC v1.0 (Taobao TXC v2.0 GTS 商业化 Transaction Constructor) 支持MT( Manual Transaction )模式,支 阿里系业务分布式事务解决方案,主 阿里云商用版本正式对外提供商用服务 持用户自定义补偿 要应用于集团电商、新零售和物流等 微服务化场景

22.蚂蚁金服分布式事务 ❖三种模式,丰富的应用场景: TCC模式 2015 FMT模式 FMT、XA 2014 金融云 XA模式 2013 LDC 对外输出 ❖极致性能提升 高可用容灾 2009 双十一 ❖高可用容灾 极致性能提升 2007 ❖无侵入解决方案 TCC

23.阿里巴巴 + 蚂蚁金服 社区共建

24.用户案例与推荐阅读

25.用户案例-GTS

26.实例演示 环境要求 JDK 1.8+ MySQL 5.6+ Nacos 0.8+ 演示内容 模拟创建订单、库存和账 Dubbo微服务间的一致性 https://github.com/seata/seata-workshop

27.推荐阅读 1.《 The XA Specification》 2.《 Designing data-intensive applications》-- Martin Kleppmann 3.《数据库事务处理的艺术:事务管理与并发控制数据库技术 》--李海翔等 4.《数据库中间件详解 | 珍藏版》 5.《微服务架构下,解决数据一致性问题的实践》 6.《集成源码深度剖析:Fescar x Spring Cloud》 7.《分布式事务中间件Fescar-全局写排它锁解读》 8.《开发者说:深度剖析开源分布式事务方案 Seata 的事务协调器》 9.《源码|详解分布式事务之 Seata-Client 原理及流程》 10.《详细解读 Github 上发布仅一个月就获得4k+ star 的分布式事务解 决方案》

28.