内容简介
本书的广度与深度兼备、理论与实战兼顾的分布式事务专著,它从基础知识、解决方案、原理分析、源码实现、工程实战5个维度对分布式事务做了、细致的讲解,试图解决你在实践中遇到的所有关于分布式事务的问题。 两位作者都是分布式事务领域的架构专家,是Apache ShenYu(incubating)网关创始人、Hmily、RainCat、Myth等分布式事务框架的创始人。本书因为内容扎实,所以得到了来自京东、阿里、腾讯、蚂蚁金服、滴滴、饿了么、58集团、IBM等互联网大厂及Apache软件基金会20位专家的高度评价。 基础知识维度:首先介绍了事务和分布式事务的概念和基础知识,然后详细讲解了MySQL事务和Spring事务的实现原理;解决方案维度:详细介绍了分布式事务的各种解决方案括强一致分布式事务解决方案和Z终一致分布式事务解决方案;原理分析维度:详细讲解了分布式事务的原理括XA强一致分布式事务、TCC分布式事务、可靠消息Z终一致分布式事务和Z大努力通知型分布式事务的原理。 源码实现维度:深入分析了Atomikos,Narayana框架实现XA强一致分布式事务解决方案的源码,以及Dromara开源社区的Hmily分布式事务框架实现TCC分布式事务的源码;工程实践维度:通过多个在生产环境中经历了高并发、大流量考验的综合案例,讲解了XA强一致分布式事务、TCC分布式事务、可靠消息Z终一致分布式事务和Z大努力通知型分布式事务的工程实践方法。 全书配有大量流程图和原理图,便于读者阅读理解;了大量来自生产环境的完整案例及其代码,便于读者动手实践。阅读本书,你将体验到事倍的效果。
目录
语序前言部分 分布式事务基础第1章 事务的基本概念21.1 事务的特21.1.1 原子31.1.2 一致31.1.3 隔离31.1.4 持久31.2 事务的类型41.2.1 事务41.2.2 带有保存点的事务41.2.3 链式事务51.2.4 嵌套事务51.2.5 分布式事务51.3 本地事务51.3.1 基本概念61.3.2 本地事务的执行流程61.3.3 本地事务的优缺点71.4 MySQL事务基础71.4.1 并发事务带来的问题71.4.2 MySQL事务隔离级别91.4.3 MySQL中各种事务隔离级别的区别101.4.4 MySQL事务隔离级别佳实践111.4.5 MySQL中锁的分类191.4.6 死锁的产生和231.4.7 MySQL中的死锁问题241.4.8 InnoDB中的MVCC原理251.5 本章小结28第2章 MySQL事务的实现原理292.1 Redo Log292.1.1 Redo Log基本概念292.1.2 Redo Log基本原理302.1.3 Redo Log刷盘规则302.1.4 Redo Log刷盘佳实践322.1.5 Redo Log写入机制342.1.6 Redo Log的LSN机制352.1.7 Redo Log相关参数362.2 Undo Log362.2.1 Undo Log基本概念362.2.2 Undo Log存储方式372.2.3 Undo Log基本原理372.2.4 Undo Log实现MVCC机制372.2.5 Undo Log相关参数402.3 BinLog412.3.1 BinLog基本概念412.3.2 BinLog记录模式412.3.3 BinLog文件结构422.3.4 BinLog写入机制432.3.5 BinLog组提交机制432.3.6 BinLog与Redo Log的区别452.3.7 BinLog相关参数452.4 MySQL事务流程462.4.1 MySQL事务执行流程462.4.2 MySQL事务恢复流程472.5 MySQL中的XA事务482.5.1 XA事务的基本原理482.5.2 MySQL XA事务语法492.5.3 BC操作MySQL XA事务522.6 本章小结54第3章 Spring事务的实现原理553.1 Spring事务原理553.1.1 BC直接操作事务553.1.2 使用Spring管理事务563.1.3 Spring事务分类573.1.4 Spring事务超时573.1.5 Spring事务回滚规则573.2 Spring事务三大接口573.2.1 PlatformTransactionManager接口573.2.2 TransactionDefinition接口583.2.3 TransactionStatus接口603.3 Spring事务隔离级别613.4 Spring事务传播机制623.4.1 7种事务传播机制类型623.4.2 常用的事务传播类型653.5 Spring事务嵌套佳实践653.5.1 环境准备663.5.2 佳实践场景一713.5.3 佳实践场景二723.5.4 佳实践场景三733.5.5 佳实践场景四743.5.6 佳实践场景五753.5.7 佳实践场景六763.5.8 佳实践场景七773.6 Spring事务失效的场景793.6.1 数据库不支持事务793.6.2 事务方法未被Spring管理793.6.3 方法没有被public修饰793.6.4 同一类中的方法调用803.6.5 未配置事务管理器803.6.6 方法的事务传播类型不支持事务813.6.7 不正确地捕获异常813.6.8 标注错误的异常类型823.7 本章小结83第4章 分布式事务的基本概念844.1 分布式系统架构844.1.1 产生的背景844.1.2 架构目标和架构原则854.2 分布式系统架构864.2.1 单体应用架构864.2.2 垂直应用架构874.2.3 分布式架构884.2.4 SOA架构894.2.5 微服务架构894.3 分布式事务场景904.3.1 跨JV程904.3.2 跨数据库实例914.3.3 多服务访问单数据库914.4 数据一致924.4.1 数据的一致问题924.4.2 数据一致解决方案934.5 本章小结93第5章 分布式事务的理论知识945.1 CAP理论945.1.1 一致945.1.2 可用955.1.3 分区容忍955.1.4 CAP的组合965.2 base理论975.3 本章小结98部分 分布式事务解决方案第6章 强一致分布式事务解决方案1006.1 强一致事务概述1006.1.1 典型方案1006.1.2 适用场景1016.1.3 优缺点1016.2 DTP模型1016.2.1 DTP模型的重要概念1016.2.2 DTP模型的执行流程1026.3 2PC模型1026.3.1 2PC模型的执行流程1036.3.2 事务执行的流程1036.3.3 事务执行失败的流程1046.3.4 2PC模型存在的问题1056.4 3PC模型1056.4.1 事务执行的流程1056.4.2 事务执行失败的流程1066.4.3 3PC模型中存在的问题1086.5 本章小结108第7章 终一致分布式事务解决方案1097.1 终一致分布式事务概述1097.1.1 典型方案1097.1.2 适用场景1107.1.3 优缺点1107.2 服务模式1107.2.1 可查询操作1117.2.2 幂等操作111