写给中文版读者的话
译者序
中文版序一
中文版序二
前言
引言
第1章 逃离单体地狱 1
1.1 迈向单体地狱的漫长旅程 2
1.1.1 FTGO应用程序的架构 3
1.1.2 单体架构的好处 4
1.1.3 什么是单体地狱 4
1.2 为什么本书与你有关 7
1.3 你会在本书中学到什么 8
1.4 拯救之道:微服务架构 8
1.4.1 扩展立方体和服务 9
1.4.2 微服务架构作为模块化的一种形式 11
1.4.3 每个服务都拥有自己的数据库 12
1.4.4 FTGO的微服务架构 12
1.4.5 微服务架构与SOA的异同 14
1.5 微服务架构的好处和弊端 15
1.5.1 微服务架构的好处 15
1.5.2 微服务架构的弊端 17
1.6 微服务架构的模式语言 19
1.6.1 微服务架构并不是“银弹” 20
1.6.2 模式和模式语言 21
1.6.3 微服务架构的模式语言概述 24
1.7 微服务之上:流程和组织 29
1.7.1 进行软件开发和交付的组织 30
1.7.2 进行软件开发和交付的流程 31
1.7.3 采用微服务架构时的人为因素 32
第2章 服务的拆分策略 34
2.1 微服务架构到底是什么 35
2.1.1 软件架构是什么,为什么它如此重要 35
2.1.2 什么是架构的风格 37
2.1.3 微服务架构是一种架构风格 40
2.2 为应用程序定义微服务架构 43
2.2.1 识别系统操作 45
2.2.2 根据业务能力进行服务拆分 50
2.2.3 根据子域进行服务拆分 53
2.2.4 拆分的指导原则 54
2.2.5 拆分单体应用为服务的难点 56
2.2.6 定义服务API 59
第3章 微服务架构中的进程间通信 63
3.1 微服务架构中的进程间通信概述 64
3.1.1 交互方式 64
3.1.2 在微服务架构中定义API 66
3.1.3 API的演化 67
3.1.4 消息的格式 69
3.2 基于同步远程过程调用模式的通信 70
3.2.1 使用REST 71
3.2.2 使用gRPC 74
3.2.3 使用断路器模式处理局部故障 75
3.2.4 使用服务发现 78
3.3 基于异步消息模式的通信 82
3.3.1 什么是消息传递 83
3.3.2 使用消息机制实现交互方式 84
3.3.3 为基于消息机制的服务API创建API规范 86
3.3.4 使用消息代理 87
3.3.5 处理并发和消息顺序 91
3.3.6 处理重复消息 92
3.3.7 事务性消息 93
3.3.8 消息相关的类库和框架 97
3.4 使用异步消息提高可用性 99
3.4.1 同步消息会降低可用性 99
3.4.2 消除同步交互 101
第4章 使用Saga管理事务 106
4.1 微服务架构下的事务管理 107
4.1.1 微服务架构对分布式事务的需求 108
4.1.2 分布式事务的挑战 109
4.1.3 使用Saga模式维护数据一致性 109
4.2 Saga的协调模式 113
4.2.1 协同式Saga 113
4.2.2 编排式Saga 117
4.3 解决隔离问题 121
4.3.1 缺乏隔离导致的问题 122
4.3.2 Saga模式下实现隔离的对策 123
4.4 Order Service和Create Order Saga的设计 127
4.4.1 OrderService类 128
4.4.2 Create Order Saga的实现 129
4.4.3 OrderCommandHandlers类 136
4.4.4 OrderServiceConfiguration类 138
第5章 微服务架构中的业务逻辑设计 141
5.1 业务逻辑组织模式 142
5.1.1 使用事务脚本模式设计业务逻辑 143
5.1.2 使用领域模型模式设计业务逻辑 144
5.1.3 关于领域驱动设计 146
5.2 使用聚合模式设计领域模型 146
5.2.1 模糊边界所带来的问题 147
5.2.2 聚合拥有明确的边界 149
5.2.3 聚合的规则 150
5.2.4 聚合的颗粒度 152
5.2.5 使用聚合设计业务逻辑 153
5.3 发布领域事件 154
5.3.1 为什么需要发布变更事件 154
5.3.2 什么是领域事件 155
5.3.3 事件增强 155
5.3.4 识别领域事件 156
5.3.5 生成和发布领域事件 157
5.3.6 消费领域事件 161
5.4 Kitchen Service的业务逻辑 162
5.5 Order Service的业务逻辑 167
5.5.1 Order聚合 169
5.5.2 OrderService类 173
第6章 使用事件溯源开发业务逻辑 176
6.1 使用事件溯源开发业务逻辑概述 177
6.1.1 传统持久化技术的问题 177
6.1.2 什么是事件溯源 179
6.1.3 使用乐观锁处理并发更新 186
6.1.4 事件溯源和发布事件 186
6.1.5 使用快照提升性能 188
6.1.6 幂等方式的消息处理 189
6.1.7 领域事件的演化 190
6.1.
^ 收 起