Movatterモバイル変換


[0]ホーム

URL:


登录/注册
下载豆瓣客户端
豆瓣6.0 全新发布×

豆瓣

扫码直接下载

iPhone·Android
豆瓣读书
搜索:

微服务架构设计模式

微服务架构设计模式
作者:[美] 克里斯·理查森(Chris Richardson)
出版社:机械工业出版社
原作名: Microservices Patterns:With Examples in Java
译者:喻勇
出版年: 2019-5
页数: 455
定价: 139元
装帧: 平装
丛书: 架构师书库
ISBN: 9787111624127
豆瓣评分
5星
59.9%
4星
28.7%
3星
8.9%
2星
2.1%
1星
0.3%
评价:

内容简介  · · · · · ·

成功地开发基于微服务架构的应用软件,需要掌握一系列全新的架构思想和实践。在这本独特的书籍中,微服务架构的先驱、Java 开发者社区的意见领袖 Chris Richardson 收集、分类并解释了 44 个架构设计模式,这些模式用来解决诸如服务拆分、事务管理、查询和跨服务通信等难题。

本书将教会你如何开发和部署生产级别的微服务架构应用。这套宝贵的架构设计模式建立在数十年的分布式系统经验之上,Chris 还为开发服务添加了新的模式,并将它们组合成可在真实条件下可靠地扩展和执行的系统。本书不仅仅是一个模式目录,还提供了经验驱动的建议,以帮助你设计、实现、测试和部署基于微服务的应用程序。

本书包含:

如何(以及为什么)使用微服务架构

服务拆分的策略

事务管理和查询相关的模式

高效的测试策略

包括容器和 Serverless 在内的部署模式

本书专为熟悉标准企...

(展开全部)

成功地开发基于微服务架构的应用软件,需要掌握一系列全新的架构思想和实践。在这本独特的书籍中,微服务架构的先驱、Java 开发者社区的意见领袖 Chris Richardson 收集、分类并解释了 44 个架构设计模式,这些模式用来解决诸如服务拆分、事务管理、查询和跨服务通信等难题。

本书将教会你如何开发和部署生产级别的微服务架构应用。这套宝贵的架构设计模式建立在数十年的分布式系统经验之上,Chris 还为开发服务添加了新的模式,并将它们组合成可在真实条件下可靠地扩展和执行的系统。本书不仅仅是一个模式目录,还提供了经验驱动的建议,以帮助你设计、实现、测试和部署基于微服务的应用程序。

本书包含:

如何(以及为什么)使用微服务架构

服务拆分的策略

事务管理和查询相关的模式

高效的测试策略

包括容器和 Serverless 在内的部署模式

本书专为熟悉标准企业应用程序架构的开发人员编写,使用 Java 编写所有示例代码。

作者简介  · · · · · ·

克里斯·理查森(Chris Richardson)

世界著名的软件大师,《POJOS in Action》等技术名著的作者,也是著名开源项目 Cloud Foundry 和 Eventuate 的创始人。他的研究领域包括微服务架构设计、分布式数据管理、事件驱动的应用架构 、领域驱动设计、持续交付、Spring 框架、Scala、NoSQL 数据库等。

喻勇

在技术圈驰骋多年,曾担任过微软技术布道师,VMware Cloud Foundry 生态建设负责人,并有幸引领了国内容器技术的创业浪潮。目前定居加拿大,关注微服务架构、云原生应用等领域。

Chris 与喻勇曾在 VMware 全球开发者关系团队共事多年,现在他们合作为国内企业客户提供微服务相关的咨询和培训服务,他们的中文网站是:www.chrisrichardson.cn

目录  · · · · · ·

目  录
写给中文版读者的话
译者序
中文版序一
中文版序二
前言
· · · · · · (更多)
目  录
写给中文版读者的话
译者序
中文版序一
中文版序二
前言
引言
第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.8 事件溯源的好处 / 192
6.1.9 事件溯源的弊端 / 193
6.2 实现事件存储库 / 194
6.2.1 Eventuate Local事件存储库的工作原理 / 195
6.2.2 Eventuate的Java客户端框架 / 198
6.3 同时使用Saga和事件溯源 / 201
6.3.1 使用事件溯源实现协同式Saga / 203
6.3.2 创建编排式Saga / 203
6.3.3 实现基于事件溯源的Saga参与方 / 205
6.3.4 实现基于事件溯源的Saga编排器 / 208
第7章 在微服务架构中实现查询 / 212
7.1 使用API组合模式进行查询 / 213
7.1.1 findOrder()查询操作 / 213
7.1.2 什么是API组合模式 / 214
7.1.3 使用API组合模式实现findOrder()查询操作 / 215
7.1.4 API组合模式的设计缺陷 / 216
7.1.5 API组合模式的好处和弊端 / 219
7.2 使用CQRS模式 / 220
7.2.1 为什么要使用CQRS / 220
7.2.2 什么是CQRS / 223
7.2.3 CQRS的好处 / 226
7.2.4 CQRS的弊端 / 227
7.3 设计CQRS视图 / 228
7.3.1 选择视图存储库 / 229
7.3.2 设计数据访问模块 / 230
7.3.3 添加和更新CQRS视图 / 232
7.4 实现基于AWS DynamoDB的CQRS视图 / 233
7.4.1 OrderHistoryEventHandlers模块 / 234
7.4.2 DynamoDB中的数据建模和查询设计 / 235
7.4.3 OrderHistoryDaoDynamoDb类 / 239
第8章 外部API模式 / 244
8.1 外部API的设计难题 / 245
8.1.1 FTGO移动客户端API的设计难题 / 246
8.1.2 其他类型客户端API的设计难题 / 248
8.2 API Gateway模式 / 250
8.2.1 什么是API Gateway模式 / 250
8.2.2 API Gateway模式的好处和弊端 / 256
8.2.3 以Netflix为例的API Gateway / 257
8.2.4 API Gateway的设计难题 / 258
8.3 实现一个API Gateway / 260
8.3.1 使用现成的API Gateway产品或服务 / 261
8.3.2 开发自己的API Gateway / 262
8.3.3 使用GraphQL实现API Gateway / 269
第9章 微服务架构中的测试策略(上) / 282
9.1 微服务架构中的测试策略概述 / 284
9.1.1 什么是测试 / 284
9.1.2 微服务架构中的测试挑战 / 289
9.1.3 部署流水线 / 295
9.2 为服务编写单元测试 / 296
9.2.1 为实体编写单元测试 / 298
9.2.2 为值对象编写单元测试 / 299
9.2.3 为Saga编写单元测试 / 300
9.2.4 为领域服务编写单元测试 / 302
9.2.5 为控制器编写单元测试 / 303
9.2.6 为事件和消息处理程序编写单元测试 / 305
第10章 微服务架构中的测试策略(下) / 308
10.1 编写集成测试 / 308
10.1.1 针对持久化层的集成测试 / 311
10.1.2 针对基于REST的请求/响应式交互的集成测试 / 312
10.1.3 针对发布/订阅式交互的集成测试 / 316
10.1.4 针对异步请求/响应式交互的集成契约测试 / 320
10.2 编写组件测试 / 324
10.2.1 定义验收测试 / 325
10.2.2 使用Gherkin编写验收测试 / 326
10.2.3 设计组件测试 / 328
10.2.4 为FTGO的Order Service编写组件测试 / 330
10.3 端到端测试 / 334
10.3.1 设计端到端测试 / 335
10.3.2 编写端到端测试 / 335
10.3.3 运行端到端测试 / 336
第11章 开发面向生产环境的微服务应用 / 338
11.1 开发安全的服务 / 339
11.1.1 传统单体应用程序的安全性 / 340
11.1.2 在微服务架构中实现安全性 / 343
11.2 设计可配置的服务 / 349
11.2.1 使用基于推送的外部化配置 / 350
11.2.2 使用基于拉取的外部化配置 / 352
11.3 设计可观测的服务 / 353
11.3.1 使用健康检查API模式 / 355
11.3.2 使用日志聚合模式 / 357
11.3.3 使用分布式追踪模式 / 358
11.3.4 使用应用程序指标模式 / 361
11.3.5 使用异常追踪模式 / 364
11.3.6 使用审计日志模式 / 365
11.4 使用微服务基底模式开发服务 / 367
11.4.1 使用微服务基底 / 368
11.4.2 从微服务基底到服务网格 / 368
第12章 部署微服务应用 / 371
12.1 部署模式:编程语言特定的发布包格式 / 374
12.1.1 使用编程语言特定的发布包格式进行部署的好处 / 376
12.1.2 使用编程语言特定的发布包格式进行部署的弊端 / 377
12.2 部署模式:将服务部署为虚拟机 / 378
12.2.1 将服务部署为虚拟机的好处 / 380
12.2.2 将服务部署为虚拟机的弊端 / 380
12.3 部署模式:将服务部署为容器 / 381
12.3.1 使用Docker部署服务 / 383
12.3.2 将服务部署为容器的好处 / 385
12.3.3 将服务部署为容器的弊端 / 386
12.4 使用Kubernetes部署FTGO应用程序 / 386
12.4.1 什么是Kubernetes / 386
12.4.2 在Kubernetes上部署Restaurant Service / 389
12.4.3 部署API Gateway / 392
12.4.4 零停机部署 / 393
12.4.5 使用服务网格分隔部署与发布流程 / 394
12.5 部署模式:Serverless部署 / 402
12.5.1 使用AWS Lambda进行Serverless部署 / 403
12.5.2 开发Lambda函数 / 404
12.5.3 调用Lambda函数 / 404
12.5.4 使用Lambda函数的好处 / 405
12.5.5 使用Lambda函数的弊端 / 406
12.6 使用AWS Lambda和AWS Gateway部署RESTful服务 / 406
12.6.1 AWS Lambda版本的Restaurant Service / 407
12.6.2 把服务打包为ZIP文件 / 411
12.6.3 使用Serverless框架部署Lambda函数 / 412
第13章 微服务架构的重构策略 / 415
13.1 重构到微服务需要考虑的问题 / 416
13.1.1 为什么要重构单体应用 / 416
13.1.2 绞杀单体应用 / 417
13.2 将单体应用重构为微服务架构的若干策略 / 420
13.2.1 将新功能实现为服务 / 420
13.2.2 隔离表现层与后端 / 422
13.2.3 提取业务能力到服务中 / 423
13.3 设计服务与单体的协作方式 / 429
13.3.1 设计集成胶水 / 430
13.3.2 在服务和单体之间维持数据一致性 / 434
13.3.3 处理身份验证和访问授权 / 438
13.4 将新功能实现为服务:处理错误配送订单 / 440
13.4.1 Delayed Delivery Service的设计 / 441
13.4.2 为Delayed Delivery Service设计集成胶水 / 442
13.5 从单体中提取送餐管理功能 / 444
13.5.1 现有的送餐管理功能 / 444
13.5.2 Delivery Service概览 / 446
13.5.3 设计Delivery Service的领域模型 / 447
13.5.4 Delivery Service集成胶水的设计 / 450
13.5.5 修改FTGO单体使其能够与Delivery Service交互 / 451
· · · · · · (收起)

丛书信息  · · · · · ·

  架构师书库(共41册),这套丛书还有《软件架构设计:实用方法及实践 原书第2版》《分布式系统架构:技术栈详解与快速进阶》《SOA架构》《企业架构的艺术》《Python架构模式》等。

喜欢读"微服务架构设计模式"的人也喜欢的电子书  · · · · · ·

支持 Web、iPhone、iPad、Android 阅读器
我来说两句

短评  · · · · · · (全部 191 条 )

  • 2有用Joard Spike2019-12-03 14:00:59

    大型传统企业IT的微服务架构劝退指北。写得很细,可作为参考资料和指引。从大型企业IT的角度推荐扩充阅读《架构即未来》以及《企业级业务架构设计》,至少目前更看好从EA的角度去梳理流程、拆分服务。

  • 3有用潇潇鱼2019-08-28 17:41:09

    从实际应用出发,对各种设计模式的对比和分析简明扼要,结合实际开发场景示例清晰,涉及接口设计、数据库设计、架构设计等各个方面,由浅入深,全而不杂,非常适合有一定微服务经验,但难于拔高的技术人员学习,全书无赘述,翻译者本身是资深的外企开发人员,对语言和技术的把握炉火纯青,堪称微服务领域难得一见的好书。

  • 0有用quqtalk2022-02-12 22:17:45

    比较全面介绍微服务,涉及设计、开发、测试、安全、事务、部署、监控,推荐!

  • 2有用Andromeda2021-02-25 23:37:47

    了解微服务,这一本就够了。全面且通俗易懂,翻译也有很大功劳。之前看了一些书和文章没太搞懂的分布式事务也讲的很清楚,微服务架构涉及的几乎所有问题都给出了各种解决模式和利弊,还能做到深入浅出、具有可操作性,好书

  • 0有用蔡蔡蔡2021-10-19 23:49:20

    需要在开发中多总结,多反思

我要写书评

微服务架构设计模式的书评 · · · · · ·(全部 14 条 )

ewon2019-01-03 16:23:33Manning2017版

比较接地气

精读了2,4-8章,大部分都是我们开发中在使用的,只是这本书进行了很好的总结,有些还提炼成模式。 有几点感想: 1. 六边形是一个不错的描述架构的方式,尤其对于那些依赖多或者涉及message的系统。可以用到以后的架构图中 2. 微服务大小并不那么重要,重要的是减少依赖,尽量...  (展开)
tinytoone2019-07-29 19:22:53

这本讲“模式”的书竟然这么实用

这篇书评可能有关键情节透露

一般来说,设计模式类的书籍大多非常抽象,但是这本书竟然能把微服务构建和实施过程中的的细节(或坑点)讲的如此清楚,真的很难得。国内这两年也出过不少微服务的书,但大多是讲“术”而不是“道”,而我认为,对于微服务方案来讲,“术”是最容易搞定的,比如你来个SpringClo...  (展开)
林砚言2022-06-19 22:34:01

让我重新认识了微服务

微服务是针对公司某一复杂业务程序实现的设计模式, 与巨石架构(Monolith)是相对的. 微服务对应的应该是公司业务能力层级上的拆分与设计, 为了减少业务之间的耦合而导致相互拖累, 在对外业务能力不变的情况下, 在应用内部将能力拆分成一些微小服务. 也可以理解为是对巨石架构进...  (展开)
hikerwu2023-08-19 23:15:03

微服务介绍的很清楚,特别是六边形架构和胶水代码

这篇书评可能有关键情节透露

1. 这本书肯定是大师之作; 2. 微服务方面的知识介绍的挺好的; 3. 什么是胶水代码、微服务各方面是如何理解; 4. 这本书大量使用Java,少量使用nodejs和golang说明问题; 5. 这本书关于六边形结构这个概念介绍的很好。 —————————————以下是原文书摘——————...  (展开)
克莱因蓝2023-04-28 00:29:34

微服务架构设计模式读后有感

这篇书评可能有关键情节透露

微服务架构设计模式这本书,整体而言还是非常值得推荐的。从一开始介绍单体架构的好处,有什么优缺点,接着分析了为什么要进行一个微服务,微服务有哪些弊端,以及应用程序的架构有哪一些设计模式,书中还有大量的代码示例和架构设计图,很详细的说明了软件架构的设计。软件架...  (展开)
Mars2021-01-15 04:14:09

书很不错,建议读英文版

目前看了1-4章,感觉很不错。建议读英文版,英文版表达比较容易理解。中文翻译版本不太推荐,主要原因是翻译有些地方太直译了,读好几遍没读懂;一个专业名词有时候会用英文表达,有时候又用中文表达,导致不必要的时间花费;相关中文专有名词对应的英文描述有时候加,有时候没...  (展开)
BigHammer2024-11-04 21:55:22

书读了一半,欲略读剩下一半

2024年末实在无聊,巩固知识。 可以用来扫盲,作者经验丰富,各种模式优缺点分析到位,但太啰嗦,太啰嗦。 书中代码使用作者自己写的框架,增加了学习难度,让人感到恶心。 回顾之前工作中遇到的问题,则有不少不足和共鸣。 ========================= 不能少于140字,凑个数。...  (展开)
旅行者2023-09-08 23:36:16

关于复杂业务系统的设计

这篇书评可能有关键情节透露

最近确实感觉自己确实对整个的数据建模抽象能力不足,没有办法能够更深层次地抽象出一些理论,确实限制了自己的前进。是该多读一些建模以及架构的书,提升自己的能力。 目前看这本书的几大收获,就是对分布式的事务,领域设计模式,以及对于分布式系统的API设计(GraphQL)模式...  (展开)
因为我在种豆子2023-05-20 00:16:23

手把手微服务落地指南

这篇书评可能有关键情节透露

这本书真是**手把手**教你怎么落地微服务, 怎么从单体应用重构到微服务, 细到代码层面的实现考量. 而且里里外外方方面面都有讲到: * 服务拆分: DDD 子域的应用 * 进程间通信: 服务发现, 异步消息, 可靠发送 (发件箱, 日志拖尾) * 分布式事务: saga * 业务逻辑如何实现: DDD 的...  (展开)
kevin2023-03-30 19:47:39

微服务实践手册

可以肯定回答:微服务实践很不错的一本书,里面讲述理论结合实际! 由于平时不怎么从事这一方面,没有深入的读,都泛泛的过了一遍,所以有专业读者可忽略本书评。 读着很累,花了几个月时间也就粗略的过一遍,先大致和大家分享下读的大致经验吧!讲的不对的地方,大家可忽略。 ...  (展开)

> 更多书评 14篇

论坛  · · · · · ·

5.2.3章节中聚合规则里面的只引用聚合根什么意思?来自大兴2021-05-07 09:56:22
收集勘误来自懒懒想睡觉2020-04-25 19:47:57

这本书的其他版本  · · · · · · (全部2 )

以下书单推荐  · · · · · · (全部 )

谁读这本书?  · · · · · ·

Asshel
Asshel
10月6日 想读


三十一
三十一
10月6日 想读


Dark · Arthas
Dark · Arthas
9月30日 想读


zinxy
zinxy
9月27日 想读


>363人在读

>1428人读过

>5269人想读

二手市场  · · · · · ·

订阅关于微服务架构设计模式的评论:
feed: rss 2.0

© 2005-2025 douban.com, all rights reserved 北京豆网科技有限公司关于豆瓣 ·在豆瓣工作 ·联系我们 ·法律声明 ·帮助中心 ·图书馆合作 ·移动应用

[8]ページ先頭

©2009-2025 Movatter.jp