# 久等了,冰河的《深入理解分布式事务:原理与实战》终于出版了

大家好,我是冰河~~

继出版《海量数据处理与大数据技术实战》和《MySQL技术大全:开发、优化与运维实战》之后,冰河联合猫大人一起推出了另一部硬核书籍《深入理解分布式事务:原理与实战》。

随着互联网的不断发展,互联网企业的业务在飞速变化,推动着系统架构也在不断地发生变化。总体来说,系统架构大致经历了单体应用架构→垂直应用架构→分布式架构→SOA架构→微服务架构的演变。

如今微服务技术越来越成熟,很多企业都采用微服务架构来支撑内部及对外的业务,尤其是在高并发大流量的电商业务场景下,微服务更是企业首选的架构模式。

微服务的普及也带来了新的问题。原本单一的应用架构只需要连接一台数据库实例即可完成所有业务操作,业务方法的逻辑在一个事务中即可完成,涉及的所有数据库操作要么全部提交,要么全部不提交,很容易实现数据的一致性。

而在微服务架构下,原本单一的应用被拆分为一个个很小的服务,每个服务都有其独立的业务和数据库,服务与服务之间的交互通过接口或者远程过程调用(Remote Procedure Call,RPC)的方式进行,此时,服务与服务之间的数据一致性问题就变得棘手了。

因为微服务这种架构模式本质上就是多个应用连接多个数据库共同完成一组业务逻辑,所以数据一致性问题就凸显出来了。除此之外,多个应用连接同一个数据库和单个应用连接多个数据库也会产生数据一致性问题。可以这么说,在互联网行业,任何企业都会或多或少地遇到数据一致性问题。业界将这种数据一致性问题称为分布式事务问题

为了解决分布式事务问题,业界提出了一些著名的理论,比如CAP理论和Base理论,并针对这些理论提出了很多解决方案,比如解决强一致性分布式事务的DTP模型、XA事务、2PC模型、3PC模型,解决最终一致性分布式事务的TCC、可靠消息最终一致性、最大努力通知型等模型。不少企业和开源组织,甚至个人都基于这些模型实现了比较通用的分布式事务框架。

深入掌握分布式事务已然成为互联网行业中每个中高级开发人员和架构师必须掌握的技能,而熟练掌握分布式事务产生的各种场景和解决方案也成为各大互联网公司对应聘者的基本要求。

《深入理解分布式事务:原理与实战》从实际需求出发,全面且细致地介绍了有关分布式事务的基础知识、解决方案、实现原理和源码实战



5 个维度全面展开

20 位大厂专家力荐

10 个框架的分布式事务实现

6 种通用分布式事务解决方案

8 种分布式事务原理解析

4 个生产环境综合案例

100 余幅原理图和流程图

# 1本书特色

# 5个维度展开,分布式事务从0到100

NO.1 基础知识维度

事务和分布式事务的概念和基础知识,MySQL和Spring的事务实现原理

NO.2 解决方案维度

强一致性分布式事务解决方案、Z终一致性分布式事务解决方案

NO.3 原理分析维度

XA强一致性分布式事务、TCC分布式事务、可靠消息Z终一致性分布式事务、Z大努力通知型分布式事务的原理

NO.4 源码实现维度

Atomikos,Narayana框架实现XA强一致性分布式事务解决方案,Hmily分布式事务框架实现TCC分布式事务

NO.5 工程实践维度

XA强一致性分布式事务、TCC分布式事务、可靠消息Z终一致性分布式事务和Z大努力通知型分布式事务的工程实践方法

# 大量图解和开发案例,学习事半功倍

为了方便读者理解,每章根据需要配有相关的原理图和流程图,并提供完整的实战案例源码。书中的每个解决方案都经过了高并发大流量生产环境的考验,可以直接拿来解决实际生产环境中的分布式事务问题。

图 1-2 本地事务的执行流程


图 8-4 XA 分布式事务流程图


图 10-3 独立消息服务实现的分布式事务

小伙伴们可以参考本书的案例进行学习,并运行本书的案例代码,以更深入地理解和掌握分布式事务。这些案例代码和图解的draw.io源文件收录于随书资料里,读者可以从下面的链接获取相关内容。

GitHub:https://github.com/dromara/distribute-transaction (opens new window)

Gitee:https://gitee.com/dromara/distribute-transaction (opens new window)

# 2本书主要内容

本书分为如下四个部分。

第一部分 分布式事务基础(第1~5章)

首先介绍事务的基本概念,然后介绍MySQL事务和Spring事务的实现原理,最后介绍分布式事务的基本概念和理论知识。

第二部分 分布式事务解决方案(第6~7章)

以大量图解的方式详细介绍了分布式事务的各种解决方案,包括强一致性分布式事务解决方案和最终一致性分布式事务解决方案。

第三部分 分布式事务原理(第8~11章)

以大量图解的方式详细讲解了分布式事务的原理,包括XA强一致性分布式事务、TCC分布式事务、可靠消息最终一致性分布式事务和最大努力通知型分布式事务。

第四部分 分布式事务源码与实战(第12~17章)

首先详细讲解了业界比较知名的ShardingSphere框架实现XA分布式事务的源码,然后详细剖析了Dromara开源社区的Hmily分布式事务框架实现TCC分布式事务的源码,最后分别对XA强一致性分布式事务、TCC分布式事务、可靠消息最终一致性分布式事务和最大努力通知型分布式事务进行了实战案例讲解。

# 3读者对象

本书适合以下几类读者阅读:

  • 互联网从业者,如中高级开发人员、架构师、技术经理、技术专家;
  • 需要系统学习分布式事务的开发人员;
  • 需要提高分布式事务开发水平的人员;
  • 需要时常查阅分布式事务技术资料和开发案例的人员。

# 4作者简介

肖宇

分布式事务架构专家

Apache ShenYu(incubating)网关创始人,Dromara开源组织创始人,Hmily、RainCat、Myth等分布式事务框架的作者。Apache ShardingSphere Committer。

热爱开源,追求优雅代码。有丰富的微服务架构经验,尤其擅长微服务技术栈中的分布式事务、微服务架构,分布式数据库、API网关等解决方案。

冰河

互联网高级技术专家、MySQL技术专家、分布式事务架构专家。

多年来,一直致力于分布式系统架构、微服务、分布式数据库、分布式事务与大数据技术的研究,在高并发、高可用、高可扩展性、高可维护性和大数据等领域拥有丰富的架构经验。

可视化多数据源数据异构中间件mykit-data作者;《海量数据处理与大数据技术实战》和《MySQL技术大全:开发、优化与运维实战》作者;“冰河技术”微信公众号维护者。

# 5专家推荐

来自京东、阿里、腾讯、蚂蚁金服、滴滴、饿了么、58集团、IBM等互联网大厂及Apache软件基金会的近20位专家高口碑力荐。

本书从分布式的原理和实践两个维度出发,立体而全面地讲解了分布式事务的基础理论、主流数据库对分布式事务的支持情况、主流分布式框架对分布式事务的实现,并重点解析了Hmily开源分布式事务框架项目的核心源码,让读者可以从不同维度了解分布式事务的理论与实现。我衷心希望看到这本书的读者能有巨大的收获,也希望肖宇持之以恒,安心编码,热心著书。

——刘启荣 京东科技技术总监

本书结合了作者在多个开源分布式事务框架项目上积累的经验,详细且全面地阐述了分布式事务的概念、实现原理和最佳实践。建议对这方面感兴趣的读者阅读。

——史少锋 Apache Member、Apache Kylin PMC主席

本书结合了作者在多个开源分布式事务框架项目上积累的经验,详细且全面地阐述了分布式事务的概念、实现原理和最佳实践。建议对这方面感兴趣的读者阅读。——史少锋 Apache Member、Apache Kylin PMC主席本书源于企业级真实实践,覆盖完整的分布式事务解决方案。书中通过企业级真实案例,深入浅出地剖析分布式事务的架构设计,是分布式事务领域的实践类好书,推荐阅读。

——孙玄 奈学教育创始人/CEO、前58集团技术委员会主席

本书涵盖了分布式事务的概念与理论、分布式事务在不同业务场景中的解决方案与最佳实践以及分布式事务的原理与源码实战,是分布式事务领域不可多得的一本好书。如果要系统性地了解分布式事务,我强烈推荐肖宇和冰河的这本书。

——沈剑  互联网架构专家、快狗打车CTO

如今,对于分布式事务的讨论已经很多了,虽然有多个分布式事务项目已经开源,但仍在早期的思想框架内。本书对分布式事务做了全面的梳理和总结,值得推荐。

——于君泽 某互联网大厂资深技术专家,《深入分布式缓存》联合作者

在分布式应用系统中,特别是在金融相关的场景下,分布式事务是大家都关注的核心技术,同样也是系统的技术难点。本书从数据库和服务的分布式基础开始,由浅入深阐述了分布式事务的原理、解决方案。这种以框架开发者视角分享的分布式事务实现的源码和实践用例,对于应用架构师和开发者都有极大的价值。

——郑灏 京东科技高级技术总监

分布式事务是伴随分布式数据库架构发展而衍生出的关键技术,是影响分布式数据库市场竞争力的关键。本书深入浅出地讲解了分布式事务的基本原理和应用实践,具有很好的指导意义,适合数据库研发人员、数据库架构师和DBA。

——高新刚 京东科技数据库研发负责人

本书深入浅出、通俗易懂,不论是对入门型还是进阶型的微服务爱好者都有一定的指导和借鉴意义。

——沈建林 京东科技中间件团队负责人

如今,越来越多的企业开始面向广阔的数字生态搭建企业应用,而对这些需要升级技术底座的企业来说,分布式事务成为要解决的关键性技术问题,相信这本书一定能很好地帮读者答疑解惑!

——付晓岩 IBM副合伙人、资深企业级业务架构专家、

《企业级业务架构设计:方法论与实践》和《银行数字化转型》作者

本书从事务的基本概念、数据强一致性模型的2PC与3PC实现,到Base补偿式事务等方面,详细描述了分布式事务的应用场景以及多种分布式系统架构的演进。这是一本深入讲解分布式事务原理和丰富应用的很好的参考书。

——刘勋 滴滴大数据高级技术专家,Apache Hadoop/Zeppelin提交者、

Submarine提交者及PMC

本书由浅入深地介绍了各分布式事务的优缺点和适用场景,理论结合实践,大大减少了事务相关资料阅读与理解的难度,对于想深入学习事务的读者来说非常值得入手!

——代立冬 Apache DolphinScheduler PMC主席、Apache Incubator PMC

本书以开源分布式框架作者的视角,全面总结了事务的核心技术,内容涵盖了广泛使用的MySQL和Spring的事务机制、业界分布式事务架构理论以及源码与实战,适合希望深入理解事务机制、提升软件设计与架构经验的读者阅读。

——杨晓峰 腾讯专家工程师、腾讯硬件委员会执委、开源联盟主委会成员、

大数据专家团成员、OpenJDK提交者

专门以事务为主题的图书并不常见。本书系统地梳理了事务的概念,针对数据库到中间件和框架类的事务实现,带领读者抽丝剥茧,帮助读者从全景到细节,建立对事务的深入理解,是工程师深度探索技术的优质读物。

——张亮 Apache ShardingSphere PMC主席、SphereEx CEO

本书由浅入深、由点到面,完整地将分布式事务相关理论、解决方案以及源码实战呈现在读者面前。推荐给正在寻求突破和快速成长的技术人。

——曾波(波姐) 资深互联网架构师、《Java性能优化实践》译者

本书不仅包含了肖宇和冰河积累多年的实战经验,更从多种场景出发,详解可落地方案,而且从多种分布式事务框架的使用和原理入手,带领读者一步步揭开分布式事务的面纱。这本书非常不错,强烈推荐大家阅读学习。

——程超 《高可用可伸缩微服务架构》作者

本书作者在微服务领域深耕多年,拥有深厚的分布式事务开发经验,不仅在公司主导一线开发,同时也是开源分布式事务框架Hmily项目的作者。本书字里行间蕴含着作者对分布式事务独到的见解,内容上不仅有原理和业界主流的解决方案,还包含了一线项目的实战和源码解析。无论是刚入门的开发者,还是从事开发和研究工作多年的资深工程师,本书都会让你受益匪浅。

——张永伦 Apache ShardingSphere PMC/ Apache ShenYu PPMC

本书从MySQL InnoDB引擎的事务实现讲起,逐步扩展到分布式事务场景,从原理到工程实践,理论结合实践,是分布式事务领域的经典之作,无论是对分布式事务的初学者还是具有一定开发实践经验的工程师或架构师,都有一定的参考和借鉴意义。

——于雨 蚂蚁金服dubbo go项目负责人

冰河是一个对技术非常严谨和有追求的人,尤其对分布式领域的分布式事务有着深刻的理解和丰富的架构经验。本书把分布式事务的基础、原理、解决方案和实战都讲得非常透彻,强烈推荐每一位程序员阅读。

——程军 公众号“军哥手记”维护者,前饿了么技术总监

无论是传统的单体架构,还是目前主流的分布式架构,事务都是绕不开的技术难题。本书从基本概念到原理介绍,再到主流的解决方案,系统地梳理了分布式事务的核心知识,既有理论,又有实战,对于微服务设计有很好的指导意义,也是市面上围绕这一主题少见的有深度的好书。

——骆俊武 京东新零售业务机构负责人

# 6目录

推荐语

序

前言

第一部分 分布式事务基础

第1章 事务的基本概念2

1.1 事务的特性2

1.1.1 原子性3

1.1.2 一致性3

1.1.3 隔离性3

1.1.4 持久性3

1.2 事务的类型4

1.2.1 扁平事务4

1.2.2 带有保存点的扁平事务4

1.2.3 链式事务5

1.2.4 嵌套事务5

1.2.5 分布式事务5

1.3 本地事务5

1.3.1 基本概念6

1.3.2 本地事务的执行流程6

1.3.3 本地事务的优缺点7

1.4MySQL事务基础7

1.4.1 并发事务带来的问题7

1.4.2MySQL事务隔离级别9

1.4.3MySQL中各种事务隔离级别的区别10

1.4.4MySQL事务隔离级别最佳实践11

1.4.5MySQL中锁的分类19

1.4.6 死锁的产生和预防23

1.4.7MySQL中的死锁问题24

1.4.8InnoDB中的MVCC原理25

1.5 本章小结28

第2章 MySQL事务的实现原理29

2.1Redo Log29

2.1.1Redo Log基本概念29

2.1.2Redo Log基本原理30

2.1.3Redo Log刷盘规则30

2.1.4Redo Log刷盘最佳实践32

2.1.5Redo Log写入机制34

2.1.6Redo Log的LSN机制35

2.1.7Redo Log相关参数36

2.2Undo Log36

2.2.1Undo Log基本概念36

2.2.2Undo Log存储方式37

2.2.3Undo Log基本原理37

2.2.4Undo Log实现MVCC机制37

2.2.5Undo Log相关参数40

2.3BinLog41

2.3.1BinLog基本概念41

2.3.2BinLog记录模式41

2.3.3BinLog文件结构42

2.3.4BinLog写入机制43

2.3.5BinLog组提交机制43

2.3.6BinLog与Redo Log的区别45

2.3.7BinLog相关参数45

2.4MySQL事务流程46

2.4.1MySQL事务执行流程46

2.4.2MySQL事务恢复流程47

2.5MySQL中的XA事务48

2.5.1XA事务的基本原理48

2.5.2MySQL XA事务语法49

2.5.3JDBC操作MySQL XA事务52

2.6 本章小结54

第3章 Spring事务的实现原理55

3.1Spring事务原理55

3.1.1JDBC直接操作事务55

3.1.2 使用Spring管理事务56

3.1.3Spring事务分类57

3.1.4Spring事务超时57

3.1.5Spring事务回滚规则57

3.2Spring事务三大接口57

3.2.1PlatformTransactionManager接口57

3.2.2TransactionDefinition接口58

3.2.3TransactionStatus接口60

3.3Spring事务隔离级别61

3.4Spring事务传播机制62

3.4.17种事务传播机制类型62

3.4.2 常用的事务传播类型65

3.5Spring事务嵌套最佳实践65

3.5.1 环境准备66

3.5.2 最佳实践场景一71

3.5.3 最佳实践场景二72

3.5.4 最佳实践场景三73

3.5.5 最佳实践场景四74

3.5.6 最佳实践场景五75

3.5.7 最佳实践场景六76

3.5.8 最佳实践场景七77

3.6Spring事务失效的场景79

3.6.1 数据库不支持事务79

3.6.2 事务方法未被Spring管理79

3.6.3 方法没有被public修饰79

3.6.4 同一类中的方法调用80

3.6.5 未配置事务管理器80

3.6.6 方法的事务传播类型不支持事务81

3.6.7 不正确地捕获异常81

3.6.8 标注错误的异常类型82

3.7 本章小结83

第4章 分布式事务的基本概念84

4.1 分布式系统架构84

4.1.1 产生的背景84

4.1.2 架构目标和架构原则85

4.2 分布式系统架构演进86

4.2.1 单体应用架构86

4.2.2 垂直应用架构87

4.2.3 分布式架构88

4.2.4SOA架构89

4.2.5 微服务架构89

4.3 分布式事务场景90

4.3.1 跨JVM进程90

4.3.2 跨数据库实例91

4.3.3 多服务访问单数据库91

4.4 数据一致性92

4.4.1 数据的一致性问题92

4.4.2 数据一致性解决方案93

4.5 本章小结93

第5章 分布式事务的理论知识94

5.1CAP理论94

5.1.1 一致性94

5.1.2 可用性95

5.1.3 分区容忍性95

5.1.4CAP的组合96

5.2Base理论97

5.3 本章小结98

第二部分 分布式事务解决方案

第6章 强一致性分布式事务解决方案100

6.1 强一致性事务概述100

6.1.1 典型方案100

6.1.2 适用场景101

6.1.3 优缺点101

6.2DTP模型101

6.2.1DTP模型的重要概念101

6.2.2DTP模型的执行流程102

6.32PC模型102

6.3.12PC模型的执行流程103

6.3.2 事务执行成功的流程103

6.3.3 事务执行失败的流程104

6.3.42PC模型存在的问题105

6.43PC模型105

6.4.1 事务执行成功的流程105

6.4.2 事务执行失败的流程106

6.4.33PC模型中存在的问题108

6.5 本章小结108

第7章 最终一致性分布式事务解决方案109

7.1 最终一致性分布式事务概述109

7.1.1 典型方案109

7.1.2 适用场景110

7.1.3 优缺点110

7.2 服务模式110

7.2.1 可查询操作111

7.2.2 幂等操作111

7.2.3TCC操作112

7.2.4 可补偿操作113

7.3TCC解决方案113

7.3.1 适用场景114

7.3.2 需要实现的服务模式114

7.3.3 方案的执行流程114

7.3.4 方案的优缺点115

7.3.5 需要注意的问题116

7.4 可靠消息最终一致性解决方案117

7.4.1 适用场景117

7.4.2 需要实现的服务模式117

7.4.3 方案的执行流程118

7.4.4 方案的优缺点119

7.4.5 需要注意的问题120

7.5 最大努力通知型解决方案120

7.5.1 适用场景120

7.5.2 需要实现的服务模式121

7.5.3 方案的执行流程121

7.5.4 方案的优缺点122

7.5.5 需要注意的问题122

7.5.6 最大努力通知与可靠消息最终一致性的区别123

7.6 本章小结123

第三部分 分布式事务原理

第8章 XA强一致性分布式事务原理126

8.1X/Open DTP模型与XA规范126

8.1.1DTP模型126

8.1.2XA规范127

8.1.3JTA规范127

8.1.4XA二阶段提交128

8.2MySQL对XA规范的支持129

8.2.1MySQL XA事务的语法129

8.2.2MySQL XID详解129

8.2.3MySQL XA事务的状态130

8.2.4MySQL XA的问题131

8.3XA规范的问题思考132

8.3.1XA规范的缺陷132

8.3.2XA流程的优化与异常思考133

8.3.3 解决XA数据不一致的问题134

8.3.4 解决事务管理器的单点故障问题135

8.4 主流的解决方案135

8.5 本章小结136

第9章 TCC分布式事务原理137

9.1TCC核心思想137

9.2TCC实现原理139

9.2.1TCC核心组成139

9.2.2TCC核心原理140

9.3TCC核心流程142

9.3.1 业务场景介绍142

9.3.2Try阶段流程143

9.3.3Confirm阶段流程144

9.3.4Cancel阶段流程145

9.4TCC关键技术146

9.5 本章小结147

第10章 可靠消息最终一致性分布式事务原理148

10.1 基本原理148

10.2 本地消息表149

10.2.1 实现原理149

10.2.2 优缺点150

10.3 独立消息服务151

10.3.1 实现原理151

10.3.2 优缺点152

10.4RocketMQ事务消息153

10.4.1 实现原理153

10.4.2RocketMQ本地事务监听接口154

10.5 消息发送的一致性155

10.5.1 消息发送与确认机制155

10.5.2 消息发送的不一致性156

10.5.3 如何保证消息发送的一致性157

10.6 消息接收的一致性158

10.6.1 消息接收与确认机制158

10.6.2 消息接收的不一致性159

10.6.3 如何保证消息接收的一致性159

10.7 消息的可靠性161

10.7.1 消息发送的可靠性161

10.7.2 消息存储的可靠性161

10.7.3 消息消费的可靠性162

10.8 本章小结162

第11章 最大努力通知型分布式事务原理163

11.1 适用场景163

11.2 方案特点164

11.3 基本原理164

11.4 异常处理165

11.5 本章小结166

第四部分 分布式事务源码与实战

第12章 XA强一致性分布式事务解决方案源码解析168

12.1 分布式数据一致性场景的搭建168

12.1.1 构建环境168

12.1.2 准备环境169

12.1.3 修改配置169

12.1.4 启动171

12.1.5 验证171

12.2ShardingSphere对XA分布式事务方案的整合172

12.2.1ShardingTransactionManager接口172

12.2.2XATransactionManager接口174

12.2.3DataSourceSwapper类174

12.2.4XAConnectionWrapper接口175

12.2.5XA事务初始化175

12.2.6XA资源注册176

12.3ShardingSphere对Atomikos方案的实战与源码解析178

12.3.1Atomikos-XA分布式事务初始化流程178

12.3.2Atomikos-XA分布式事务Begin流程183

12.3.3Atomikos-XA分布式事务资源注册原理185

12.3.4Atomikos-XA分布式事务Commit流程186

12.3.5Atomikos-XA分布式事务Rollback流程191

12.3.6Atomikos-XA分布式事务恢复流程193

12.4ShardingSphere对Narayana方案的实战与源码解析198

12.4.1Narayana环境搭建198

12.4.2Narayana-XA分布式事务初始化流程199

12.4.3Narayana-XA分布式事务Begin流程206

12.4.4Narayana-XA分布式事务资源注册208

12.4.5Narayana-XA分布式事务Commit流程208

12.4.6Narayana-XA分布式事务Rollback流程211

12.4.7Narayana-XA分布式事务恢复流程212

12.5 本章小结216

第13章 Hmily-TCC分布式事务解决方案源码解析217

13.1Hmily-TCC分布式场景的搭建217

13.1.1 准备环境218

13.1.2 下载源码并编译220

13.1.3 修改配置220

13.1.4 启动程序222

13.1.5 验证223

13.2Hmily框架初始流程源码解析223

13.2.1 加载配置225

13.2.2 初始化事务日志存储229

13.2.3 初始化事务恢复调度器234

13.2.4 初始化事件分发器235

13.2.5 初始化Metrics监控信息236

13.3Hmily-TCC分布式事务源码解析238

13.3.1Try流程源码解析239

13.3.2Confirm流程源码解析253

13.3.3Cancel流程源码解析258

13.4Hmily对RPC框架的支持261

13.4.1 对Dubbo框架的支持261

13.4.2 对Spring Cloud框架的支持263

13.4.3 对BRPC框架的支持265

13.4.4 对Motan框架的支持267

13.4.5 对gRPC框架的支持268

13.4.6 对Sofa-RPC框架的支持270

13.4.7 对Tars框架的支持272

13.5Hmily-TCC事务恢复源码解析273

13.5.1 逻辑处理274

13.5.2 事务恢复275

13.6 本章小结276

第14章 XA强一致性分布式事务实战277

14.1 场景说明277

14.2 程序模块说明278

14.3 数据库表设计278

14.4 程序实现279

14.4.1 项目搭建279

14.4.2 持久层的实现287

14.4.3 业务逻辑层的实现288

14.4.4 接口层的实现289

14.4.5 项目启动类的实现290

14.5 测试程序290

14.6 本章小结292

第15章 TCC分布式事务实战293

15.1 场景说明293

15.2 程序模块说明294

15.3 数据库表设计295

15.4 实现项目公共模块297

15.4.1 项目搭建297

15.4.2 持久层的实现300

15.4.3Dubbo接口的定义304

15.5 实现转出银行微服务305

15.5.1 项目搭建305

15.5.2 业务逻辑层的实现311

15.5.3 接口层的实现313

15.5.4 项目启动类的实现313

15.6 实现转入银行微服务314

15.6.1 业务逻辑层的实现314

15.6.2 项目启动类的实现315

15.7 测试程序316

15.8 本章小结318

第16章 可靠消息最终一致性分布式事务实战319

16.1 场景说明319

16.2 程序模块说明321

16.3RocketMQ环境搭建与测试321

16.3.1 搭建Java环境321

16.3.2 搭建RocketMQ环境322

16.3.3 测试RocketMQ环境324

16.4 数据库表设计326

16.5 实现订单微服务328

16.5.1 项目搭建328

16.5.2 持久层的实现333

16.5.3 业务逻辑层的实现335

16.5.4 接口层的实现338

16.5.5 项目启动类的实现338

16.6 实现库存微服务339

16.6.1 项目搭建339

16.6.2 持久层的实现339

16.6.3 业务逻辑层的实现341

16.6.4 项目启动类的实现343

16.7 测试程序343

16.8 本章小结345

第17章 最大努力通知型分布式事务实战347

17.1 场景说明347

17.2 程序模块说明348

17.3 数据库表设计348

17.4 实现账户微服务350

17.4.1 项目搭建350

17.4.2 持久层的实现355

17.4.3 业务逻辑层的实现358

17.4.4 接口层的实现360

17.4.5 启动类的实现360

17.5 实现充值微服务361

17.5.1 项目搭建与持久层的实现361

17.5.2 业务逻辑层的实现361

17.5.3 接口层的实现362

17.5.4 启动类的实现363

17.6 测试程序363

17.7 本章小结365 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717

# 7实拍图

# 写在最后

如果觉得文章对你有点帮助,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习高并发编程技术。

最后,附上并发编程需要掌握的核心技能知识图,祝大家在学习并发编程时,少走弯路。

如果你觉得冰河写的还不错,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习高并发、分布式、微服务、大数据、互联网和云原生技术,「 冰河技术 」微信公众号更新了大量技术专题,每一篇技术文章干货满满!不少读者已经通过阅读「 冰河技术 」微信公众号文章,吊打面试官,成功跳槽到大厂;也有不少读者实现了技术上的飞跃,成为公司的技术骨干!如果你也想像他们一样提升自己的能力,实现技术能力的飞跃,进大厂,升职加薪,那就关注「 冰河技术 」微信公众号吧,每天更新超硬核技术干货,让你对如何提升技术能力不再迷茫!

# 星球服务

加入星球,你将获得:

1.项目学习:微服务入门必备的SpringCloud Alibaba实战项目、手写RPC项目—所有大厂都需要的项目【含上百个经典面试题】、深度解析Spring6核心技术—只要学习Java就必须深度掌握的框架【含数十个经典思考题】、Seckill秒杀系统项目—进大厂必备高并发、高性能和高可用技能。

2.框架源码:手写RPC项目—所有大厂都需要的项目【含上百个经典面试题】、深度解析Spring6核心技术—只要学习Java就必须深度掌握的框架【含数十个经典思考题】。

3.硬核技术:深入理解高并发系列(全册)、深入理解JVM系列(全册)、深入浅出Java设计模式(全册)、MySQL核心知识(全册)。

4.技术小册:深入理解高并发编程(第1版)、深入理解高并发编程(第2版)、从零开始手写RPC框架、SpringCloud Alibaba实战、冰河的渗透实战笔记、MySQL核心知识手册、Spring IOC核心技术、Nginx核心技术、面经手册等。

5.技术与就业指导:提供相关就业辅导和未来发展指引,冰河从初级程序员不断沉淀,成长,突破,一路成长为互联网资深技术专家,相信我的经历和经验对你有所帮助。

冰河的知识星球是一个简单、干净、纯粹交流技术的星球,不吹水,目前加入享5折优惠,价值远超门票。加入星球的用户,记得添加冰河微信:hacker_binghe,冰河拉你进星球专属VIP交流群。

# 星球重磅福利

跟冰河一起从根本上提升自己的技术能力,架构思维和设计思路,以及突破自身职场瓶颈,冰河特推出重大优惠活动,扫码领券进行星球,直接立减149元,相当于5折, 这已经是星球最大优惠力度!


领券加入星球,跟冰河一起学习《SpringCloud Alibaba实战》、《手撸RPC专栏》和《Spring6核心技术》,更有已经上新的《大规模分布式Seckill秒杀系统》,从零开始介绍原理、设计架构、手撸代码。后续更有硬核中间件项目和业务项目,而这些都是你升职加薪必备的基础技能。

100多元就能学这么多硬核技术、中间件项目和大厂秒杀系统,如果是我,我会买他个终身会员!

# 其他方式加入星球

特别提醒: 苹果用户进圈或续费,请加微信 hacker_binghe 扫二维码,或者去公众号 冰河技术 回复 星球 扫二维码加入星球。

# 星球规划

后续冰河还会在星球更新大规模中间件项目和深度剖析核心技术的专栏,目前已经规划的专栏如下所示。

# 中间件项目

  • 《大规模分布式定时调度中间件项目实战(非Demo)》:全程手撸代码。
  • 《大规模分布式IM(即时通讯)项目实战(非Demo)》:全程手撸代码。
  • 《大规模分布式网关项目实战(非Demo)》:全程手撸代码。
  • 《手写Redis》:全程手撸代码。
  • 《手写JVM》全程手撸代码。

# 超硬核项目

  • 《从零落地秒杀系统项目》:全程手撸代码,在阿里云实现压测(已上新)。
  • 《大规模电商系统商品详情页项目》:全程手撸代码,在阿里云实现压测。
  • 其他待规划的实战项目,小伙伴们也可以提一些自己想学的,想一起手撸的实战项目。。。

既然星球规划了这么多内容,那么肯定就会有小伙伴们提出疑问:这么多内容,能更新完吗?我的回答就是:一个个攻破呗,咱这星球干就干真实中间件项目,剖析硬核技术和项目,不做Demo。初衷就是能够让小伙伴们学到真正的核心技术,不再只是简单的做CRUD开发。所以,每个专栏都会是硬核内容,像《SpringCloud Alibaba实战》、《手撸RPC专栏》和《Spring6核心技术》就是很好的示例。后续的专栏只会比这些更加硬核,杜绝Demo开发。

小伙伴们跟着冰河认真学习,多动手,多思考,多分析,多总结,有问题及时在星球提问,相信在技术层面,都会有所提高。将学到的知识和技术及时运用到实际的工作当中,学以致用。星球中不少小伙伴都成为了公司的核心技术骨干,实现了升职加薪的目标。

# 联系冰河

# 加群交流

本群的宗旨是给大家提供一个良好的技术学习交流平台,所以杜绝一切广告!由于微信群人满 100 之后无法加入,请扫描下方二维码先添加作者 “冰河” 微信(hacker_binghe),备注:星球编号

冰河微信

# 公众号

分享各种编程语言、开发技术、分布式与微服务架构、分布式数据库、分布式事务、云原生、大数据与云计算技术和渗透技术。另外,还会分享各种面试题和面试技巧。内容在 冰河技术 微信公众号首发,强烈建议大家关注。

公众号:冰河技术

# 视频号

定期分享各种编程语言、开发技术、分布式与微服务架构、分布式数据库、分布式事务、云原生、大数据与云计算技术和渗透技术。另外,还会分享各种面试题和面试技巧。

视频号:冰河技术

# 星球

加入星球 冰河技术 (opens new window),可以获得本站点所有学习内容的指导与帮助。如果你遇到不能独立解决的问题,也可以添加冰河的微信:hacker_binghe, 我们一起沟通交流。另外,在星球中不只能学到实用的硬核技术,还能学习实战项目

关注 冰河技术 (opens new window)公众号,回复 星球 可以获取入场优惠券。

知识星球:冰河技术