科技>计算机>网络与互联网
正本清源分布式事务之Seata(全彩)

正本清源分布式事务之Seata(全彩)"

作者:姜宇,冯艳娜
ISBN:9787121421648
定价:¥109.0
字数:269千字
页数:224
出版时间:2021-10
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

在微服务架构下,分布式事务一直是痛点和难点。Seata是阿里巴巴开源的分布式事务中间件,致力于以高效且对业务无侵入的方式,解决在微服务场景下面临的分布式事务问题。 本书作者是阿里巴巴GTS创始人和Seata作者,结合其多年在分布式事务领域设计、研发和应用的经验,深入浅出地阐述了分布式事务技术基础、Seata AT模式、TCC模式、RPC设计、事务协调器技术的原理,并给出了两个开发实例(AT模式和TCC模式)。 本书可以为微服务系统架构师、研发人员解决核心业务实际问题提供思路,也适合分布式技术相关专业的学生阅读,帮助他们建立分布式事务的知识框架。

前言

我在2014年年初加入阿里巴巴集团时,分布式事务仍然是一个世界性难题,主流的技术方案或者对业务侵入性很强,或者性能太差,满足不了业务需求。 当时集团业务已经大规模采用了微服务架构,微服务之间的分布式事务基本都采用了以下技术方案之一:TCC柔性事务方案、基于消息的最终一致性方案、业务补偿方案。 这3种方案有一个共同的问题:对业务侵入性很强,业务开发人员需要做大量的业务改造工作,而且很容易出错。 我主动承担了一个极具挑战性的任务(产品内部编号TXC):构建一个对业务无侵入的、高性能的、高可用的分布式事务中间件,让业务与事务分离,业务不需要关心事务,事务由框架自动完成。 很长一段时间,无人看好这个项目,因为这是一个已经存在几十年的世界级技术难题,整个业界从来没有过接近于这个目标的产品,甚至没有人提出过这种“不可能”的目标。我们凭什么能做到? 幸运的是,我得到了主管小邪的支持,他让我放手去干。在此要特别感谢小邪!小邪“大神”把我招进阿里巴巴,并委以重任,让我有机会做出世界级、颠覆性的产品。业务无侵入的分布式事务技术是我个人百分之百原创的。笔者在阿里和华为共完成了26个高质量发明专利。 用了一年多,我设计、研发的TXC正式发布,实现了产品的从0到1,并广泛应用于阿里巴巴集团内部业务。随后,TXC云上版本发布,改名为GTS,用于公有云和私有云的众多大型客户核心交易系统。GTS性能卓越,真正实现了对业务的零侵入,拥有金融级的高可用性,在很多大型核心交易系统中证明了其实用价值。越来越多的人意识到GTS AT模式(非侵入模式)是分布式事务技术的发展方向。 GTS在2019年发布了开源版本,名称为Fescar,后来又改名为Seata。Seata开源仅两年多,截至2021年8月已经有两万多的“star”数和六千多的“fork”数,成为国内外最火的几个Java开源项目之一。 在一个技术领域做颠覆性创新,一定会碰到很多“坑”,这些“坑”必须一个个“绕过”。如果有一个“大坑”绕不去,整个项目可能就失败了。在TXC/GTS研发过程中当然也碰到了很多“坑”,我凭着突出的个人能力和走一步看十步的技术预判能力,把所有“坑”都解决掉或完美避开了。 本书深入分析了Seata技术原理,包括AT模式、TCC模式、RPC设计、事务协调器等关键技术,并对源码进行了深入的剖析,可以帮助读者做到“知其然,知其所以然”。我也希望通过这本书分享自己在设计、编码时的一些心得体会和思考方式。 书中还提供了两个实例,一个是AT模式的,另一个是TCC模式的。通过这两个可运行的实例,可以帮助读者快速学会 Seata 的使用,通过实战加深对分布式事务技术的理解。 第2、3、7、8章由冯艳娜编写,其余章由姜宇编写。 在此,特别感谢以前我在TXC/GTS项目组的同事们。张松树、张伟、申海强、季敏、厉启鹏,感谢你们与我并肩作战,完成一个伟大的产品。 姜宇 2021年8月

目录

第1篇 分布式事务技术基础 ★第1章 事务与分布式事务 1.1 事务及ACID四大特性 1.1.1 原子性(Atomicity) 1.1.2 一致性(Consistency) 1.1.3 隔离性(Isolation) 1.1.4 持久性(Durability) 1.2 XA两阶段提交协议 1.2.1 两阶段提交协议的执行过程 1.2.2 两阶段提交协议的缺点 1.3 分布式基础之CAP和BASE理论 1.3.1 CAP理论 1.3.2 BASE理论 1.4 TCC柔性事务 1.5 基于消息的最终一致性 1.5.1 问题示例 1.5.2 解决方案 第2篇 Seata原理详解 ★第2章 Seata简介 2.1 Seata发展历史 2.2 Seata总体架构 2.2.1 模块组成 2.2.2 逻辑结构 2.3 Seata 事务模式 2.3.1 AT模式 2.3.2 TCC模式 2.3.3 Saga模式 2.3.4 XA模式 ★第3章 Seata AT模式 3.1 AT模式的基本原理 3.1.1 工作流程示例 3.1.2 事务日志表 3.1.3 事务日志管理器 3.2 Seata的数据源代理 3.2.1 数据源代理类 3.2.2 资源管理器 3.2.3 数据库连接代理 3.2.4 StatementProxy 与PreparedStatementProxy 3.3 AT模式的两阶段提交 3.3.1 一阶段处理 3.3.2 二阶段的提交处理 3.3.3 二阶段的回滚处理 ★第4章 Seata TCC模式 4.1 TCC模式介绍 4.1.1 TCC模式与 AT模式对比 4.1.2 TCC模式的设计方法 4.2 TCC模式的实现原理 4.2.1 TCC模式的注解 4.2.2 TCC模式的资源注册 4.2.3 TCC模式的事务发起 ★第5章 Seata RPC设计 5.1 网络通信 5.2 事务消息类型 5.3 消息序列化 5.3.1 资源管理器注册消息的编/解码 5.3.2 分支事务注册消息的编/解码 5.3.3 合并消息的编/解码 第6章 Seata事务协调器 6.1 服务端的启动流程 6.2 默认的事务协调器 6.3 事务的消息处理 6.3.1 全局事务开始事件GlobalBeginRequest 的处理过程 6.3.2 全局事务提交事件GlobalCommitRequest 的处理过程 6.4 事务的二阶段推进 6.5 全局锁的原理 6.5.1 文件锁管理器的添加全局锁 6.5.2 文件锁管理器的释放全局锁 第3篇 Seata开发实战 ★第7章 Seata AT模式开发实例 7.1 AT模式样例简介 7.2 准备工作 7.3 运行样例工程 7.4 验证AT模式分布式事务 ★第8章 Seata TCC模式开发实例 8.1 TCC模式样例简介 8.1.1 扣钱业务的TCC模式实现 8.1.2 加钱业务的TCC模式实现 8.1.3 转账业务的全局事务 8.2 运行样例工程 8.2.1 测试全局事务提交 8.2.2 测试全局事务回滚 8.3 缺陷分析

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个