• 微服务架构设计模式
图书条目标准图
21年品牌 40万+商家 超1.5亿件商品

微服务架构设计模式

32.73 2.4折 139 九品

仅1件

北京东城
认证卖家担保交易快速发货售后保障

作者[美]克里斯·理查森(Chris Richardson)

出版社机械工业出版社

出版时间2019-05

版次1

装帧其他

货号A1

上书时间2024-12-20

图书-天下的书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:九品
图书标准信息
  • 作者 [美]克里斯·理查森(Chris Richardson)
  • 出版社 机械工业出版社
  • 出版时间 2019-05
  • 版次 1
  • ISBN 9787111624127
  • 定价 139.00元
  • 装帧 其他
  • 开本 16开
  • 纸张 胶版纸
  • 页数 455页
【内容简介】
成功地开发基于微服务架构的应用软件,需要掌握一系列全新的架构思想和实践。在这本独特的书籍中,世界十大软件架构师之一、微服务架构先驱Chris Richardson收集、分类并解释了44个架构设计模式,这些模式用来解决诸如服务拆分、事务管理、查询和跨服务通信等难题。
  本书的目标是让架构师和程序员学会使用微服务架构成功开发应用程序。
  书中不仅讨论了微服务架构的好处,还描述了它们的弊端。读者将掌握如何在使用单体架构和使用微服务架构之间做出正确的权衡。
  【谁应该阅读本书】
  本书的重点是架构和开发,适合负责开发和交付软件的任何人(例如开发人员、架构师、CTO 等)阅读。
  本书侧重于解释微服务架构的设计模式和其他概念。无论读者使用何种技术栈,我的目标都是让你们可以轻松读懂这本书。你只需要熟悉企业应用程序架构和设计的基础知识即可。特别是,需要了解三层架构、Web 应用程序设计、关系型数据库、使用消息和基于 REST 的进程间通信,以及应用程序安全性的基础知识等概念。本书的代码示例使用 Java 和 Spring 框架。为了充分利用它们,读者应该对 Spring 框架有所了解。
  【本书内容安排】
  本书由13章组成。
  ●第1章描述了所谓“单体地狱”的症状,当单体应用程序超出其架构时会出现这种问题,这可以通过采用微服务架构来规避。这一章还概述了微服务架构模式语言,这也是本书大部分内容的主题。
  ●第2章解释了为什么软件架构很重要,描述了可用于将应用程序分解为服务集合的模式,并解释了如何克服在此过程中遇到的各种障碍。
  ●第3章介绍了微服务架构中强大的进程间通信的几种模式,解释了为什么异步和基于消息的通信通常是*选择。
  ●第4章介绍如何使用 Saga 模式维护服务间的数据一致性。Saga 是通过传递异步消息的方式进行协调的一系列本地事务。
  ●第5章介绍如何使用领域驱动设计(DDD)的聚合和领域事件等模式为服务设计业务逻辑。
  ●第6章以第5章为基础,解释了如何使用事件溯源模式开发业务逻辑,事件溯源模式是一种以事件为中心的设计思路,用来构建业务逻辑和持久化领域对象。
  ●第7章介绍如何使用API组合模式或命令查询职责隔离(CQRS)模式,这两个模式用来实现查询分散在多个服务中的数据。
  ●第8章介绍了处理来自各种外部客户端请求的外部 API 模式,例如移动应用程序、基于浏览器的 JavaScript 应用程序和第三方应用程序。
  ●第9章是关于微服务自动化测试技术的两章中的*章,介绍了重要的测试概念,例如测试金字塔,描述了测试套件中每种测试类型的相对比例,还展示了如何编写构成测试金字塔基础的单元测试。
  ●第10章以第9章为基础,描述了如何在测试金字塔中编写其他类型的测试,包括集成测试、消费者契约测试和组件测试等。
  ●第11章介绍了开发生产就绪服务的各个方面,包括安全性、外部化配置模式和服务可观测性模式。服务可观测性模式包括日志聚合、应用指标和分布式追踪。
  ●第12章介绍了可用于部署服务的各种部署模式,包括虚拟机、容器和 Serverless 模式。还介绍了使用服务网格的好处,服务网格是在微服务架构中处理服务间通信的一个网络软件层。
  ●第13章介绍了如何通过采用绞杀者(Strangler)模式逐步将单体架构重构为微服务架构,绞杀者模式是指以服务形式实现新功能,从单体中提取模块将其转换为服务。
  在学习这些章节的过程中,读者将了解微服务架构的不同方面。
【作者简介】
克里斯·理查森(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.1FTGO应用程序的架构/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.4FTGO的微服务架构/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.3API的演化/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.2Saga的协调模式/113

4.2.1协同式Saga/113

4.2.2编排式Saga/117

4.3解决隔离问题/121

4.3.1缺乏隔离导致的问题/122

4.3.2Saga模式下实现隔离的对策/123

4.4OrderService和CreateOrderSaga的设计/127

4.4.1OrderService类/128

4.4.2CreateOrderSaga的实现/129

4.4.3OrderCommandHandlers类/136

4.4.4OrderServiceConfiguration类/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.4KitchenService的业务逻辑/162

5.5OrderService的业务逻辑/167

5.5.1Order聚合/169

5.5.2OrderService类/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.1EventuateLocal事件存储库的工作原理/195

6.2.2Eventuate的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.1findOrder()查询操作/213

7.1.2什么是API组合模式/214

7.1.3使用API组合模式实现findOrder()查询操作/215

7.1.4API组合模式的设计缺陷/216

7.1.5API组合模式的好处和弊端/219

7.2使用CQRS模式/220

7.2.1为什么要使用CQRS/220

7.2.2什么是CQRS/223

7.2.3CQRS的好处/226

7.2.4CQRS的弊端/227

7.3设计CQRS视图/228

7.3.1选择视图存储库/229

7.3.2设计数据访问模块/230

7.3.3添加和更新CQRS视图/232

7.4实现基于AWSDynamoDB的CQRS视图/233

7.4.1OrderHistoryEventHandlers模块/234

7.4.2DynamoDB中的数据建模和查询设计/235

7.4.3OrderHistoryDaoDynamoDb类/239

 

●第8章外部API模式/244

8.1外部API的设计难题/245

8.1.1FTGO移动客户端API的设计难题/246

8.1.2其他类型客户端API的设计难题/248

8.2APIGateway模式/250

8.2.1什么是APIGateway模式/250

8.2.2APIGateway模式的好处和弊端/256

8.2.3以Netflix为例的APIGateway/257

8.2.4APIGateway的设计难题/258

8.3实现一个APIGateway/260

8.3.1使用现成的APIGateway产品或服务/261

8.3.2开发自己的APIGateway/262

8.3.3使用GraphQL实现APIGateway/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的OrderService编写组件测试/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上部署RestaurantService/389

12.4.3部署APIGateway/392

12.4.4零停机部署/393

12.4.5使用服务网格分隔部署与发布流程/394

12.5部署模式:Serverless部署/402

12.5.1使用AWSLambda进行Serverless部署/403

12.5.2开发Lambda函数/404

12.5.3调用Lambda函数/404

12.5.4使用Lambda函数的好处/405

12.5.5使用Lambda函数的弊端/406

12.6使用AWSLambda和AWSGateway部署RESTful服务/406

12.6.1AWSLambda版本的RestaurantService/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.1DelayedDeliveryService的设计/441

13.4.2为DelayedDeliveryService设计集成胶水/442

13.5从单体中提取送餐管理功能/444

13.5.1现有的送餐管理功能/444

13.5.2DeliveryService概览/446

13.5.3设计DeliveryService的领域模型/447

13.5.4DeliveryService集成胶水的设计/450

13.5.5修改FTGO单体使其能够与DeliveryService交互/451
点击展开 点击收起

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP