正版微服务之道 度量驱动开发+微服务架构设计模式 微服务器架构设计教程书预售pdf下载

正版微服务之道 度量驱动开发+微服务架构设计模式 微服务器架构设计教程书预售百度网盘pdf下载

作者:
简介:正版微服务之道 度量驱动开发+微服务架构设计模式 微服务器架构设计教程书预售
出版社:
出版时间:
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍




9787111653615 9787111624127

书   名: 微服务之道:度量驱动开发
图书定价: 89元
作 者: 范亚敏 傅健
出 版 社: 机械工业出版社
出版日期: 2020-05-09
ISBN 号: 9787111653615
开   本: 16开
页   数: 308
版   次: 1-1





本书由架构师撰写,介绍级微服务设计与实现方法,融入了作者多年架构设计的经验。主要内容包括:1章介绍微服务理论与原则,包括微服务概念、协议、特点等;2章微服务实践方法,包括设计要点、应对变化、测试驱动的开发等;3章通过案例讲解微服务实现的过程,包括一个完整实例;4章介绍持续改进的方法,包括度量驱动的改进方法,用缓存提高性能,用SQL提高扩展性等;5章介绍持续交付的方法,包括用脚本驱动开发方法,部署流水线等。




本书赞誉
前言
1章 微服务入门 1
1.1 单体服务的特点 1
1.2 拆分服务 2
1.2.1 分而治之以降低复杂性 2
1.2.2 分而用之以提高可重用性 4
1.2.3 分而做之以提高开发效率 5
1.3 微服务的特点 5
1.3.1 微服务架构的特点 6
1.3.2 微服务架构的特征 7
1.3.3 微服务架构的风格 7
1.3.4 微服务的分类 7
1.3.5 多小的服务才是微服务 8
1.4 微服务之道 8
1.4.1 软件之道 8
1.4.2 关于微服务的思考 10
1.5 土豆微服务案例快速上手 11
1.5.1 土豆微服务构建计划 11
1.5.2 微服务构建一:土豆管理微服务 13
1.5.3 微服务构建二:土豆提醒微服务 24
1.5.4 微服务构建三:土豆网页微服务 30
1.5.5 部署土豆微服务 35
1.6 本章小结 38
2章 微服务度量的基本概念 39
2.1 微服务的局限及其解决方案 39
2.1.1 微服务的局限 39
2.1.2 解决方案 40
2.2 微服务中度量的重要性 41
2.3 微服务度量的内容 42
2.3.1 按度量的目标划分 43
2.3.2 按度量的层次划分 44
2.4 微服务度量指标与术语 49
2.4.1 统计学指标 49
2.4.2 度量指标相关术语 53
2.4.3 度量处理相关术语 55
2.5 微服务度量策略选择 58
2.5.1 如何做度量 58
2.5.2 如何选择度量方案 60
2.6 本章小结 63
3章 微服务度量的设计 64
3.1 微服务协议的选择与度量 64
3.1.1 协议概述 64
3.1.2 协议分类 65
3.1.3 协议分析 67
3.2 HTTP及其度量 71
3.2.1 HTTP简介 71
3.2.2 REST协议的度量要点 71
3.3 SIP及其度量 72
3.3.1 SIP简介 72
3.3.2 SIP的度量要点 73
3.4 RTP及其度量 73
3.4.1 RTP简介 73
3.4.2 RTP的度量要点 74
3.5 数据存储的选型 76
3.5.1 理论回顾 76
3.5.2 数据存储选型 78
3.5.3 数据存储特性 79
3.6 基于度量实现高可用性 80
3.6.1 分流——负载均衡 81
3.6.2 限流——速率控制 83
3.6.3 断流——熔断隔离 91
3.7 土豆微服务度量驱动的设计 95
3.7.1 为如何度量而设计 96
3.7.2 通过度量改进设计 101
3.8 本章小结 102
4章 度量驱动的微服务实现 103
4.1 度量代码 103
4.1.1 代码度量标准 103
4.1.2 代码度量关键指标 105
4.1.3 小结 107
4.2 度量进度 108
4.3 度量性能 110
4.4 度量微服务的常用技术 123
4.4.1 利用切面记录度量日志 123
4.4.2 利用线程局部变量记录度量信息 124
4.4.3 利用过滤器找准度量点 126
4.4.4 提供JMX暴内部度量指标 127

4.4.6 阈值和采样率控制度量数据量 132
4.4.7 利用简单网络管理协议提供度量查询和报警支持 135
4.4.8 综合利用以上技术 135
4.5 度量常用类库 138
4.5.1 Dropwizard的Metrics-core 138
4.5.2 Pivotal的Micrometer 140
4.5.3 Spring Boot Actuator 142
4.6 土豆微服务度量实现 147
4.6.1 为土豆微服务提供代码度量 147
4.6.2 为土豆微服务添加健康检查API 152
4.6.3 为土豆微服务提供资源使用率度量 156
4.6.4 为土豆微服务提供使用量的度量 157
4.6.5 为土豆微服务提供性能度量 159
4.6.6 为土豆微服务提供度量 160
4.6.7 为土豆微服务提供业务KPI度量 160
4.7 本章小结 163
5章 度量数据的聚合与展示 164
5.1 度量数据的聚合和存储 164
5.2 度量数据的清洗和处理 166
5.2.1 数据清洗的方法 166
5.2.2 数据清洗的案例 166
5.3 度量数据的可视化 170
5.3.1 图表的结构 170
5.3.2 图表的类型 170
5.3.3 如何选择图表 179
5.4 常用度量聚合与展示方案 181
5.4.1 TIG方案 181
5.4.2 ELKK方案 188
5.4.3 Collectd方案 193
5.4.4 Prometheus方案 198
5.5 土豆微服务的度量聚合与展示 200
5.5.1 土豆微服务支持多种度量聚合与展示的设计 200
5.5.2 基于TIG的土豆微服务度量聚合与展示 202
5.5.3 基于ELKK的土豆微服务度量聚合与展示 207
5.6 本章小结 214
6章 度量数据的分析与报警 215
6.1 度量数据的分析 215
6.1.1 确定数据分析的目标 215
6.1.2 数据分析常见问题 218
6.2 实现报警常用的技术 222
6.2.1 Python数据分析技术栈 223
6.2.2 YAML配置文件 223
6.2.3 Elasticsearch API 224
6.2.4 Pandas DataFrame 226
6.2.5 Matplotlib 228
6.3 土豆微服务的报警实现 230
6.3.1 报警的设计 230
6.3.2 报警的实现 232
6.3.3 报警的优化 242
6.4 本章小结 244
7章 度量驱动的运维 245
7.1 部署升级 245
7.1.1 何时能部署到产品线上 246
7.1.2 如何发布新功能 247
7.2 数据的运维 251
7.2.1 健康检查 251
7.2.2 度量报告 251
7.2.3 度量警告 252
7.2.4 故障处理 252
7.2.5 基于度量来发现和解决问题 255
7.3 配置调整 258
7.3.1 关于配置的思考 259
7.3.2 配置的版本管理 259
7.3.3 配置的载体 260
7.3.4 环境管理 262
7.3.5 配置微服务 262
7.3.6 配置管理实例 263
7.4 开源组件的度量 267
7.4.1 对Redis的度量 267
7.4.2 对Kafka的度量 270
7.4.3 对Cassandra的度量 273
7.5 土豆微服务的运维示例 276
7.6 本章小结 280
8章 全链路度量 281
8.1 微服务的调用链路度量 281
8.1.1 3个关键信息 282
8.1.2 5个要点 283
8.1.3 3种标识 283
8.1.4 开源调用链分析方案 284
8.1.5 构建土豆微服务调用链的度量 285
8.2 客户端度量数据的采集 289
8.3 度量驱动开发的回顾与展望 291
8.4 本章小结 293
附录 常用的度量相关工具与软件库 294


微服务架构设计模式

内容简介
成功地开发基于微服务架构的应用软件,需要掌握一系列全新的架构思想和实践。在这本独特的书籍中,世界十大软件架构师之一、微服务架构先驱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 模式,例如移动应用程序、基于浏览器的 应用程序和三方应用程序。

●9章是关于微服务自动化测试技术的两章中的一章,介绍了重要的测试概念,例如测试金字塔,描述了测试套件中每种测试类型的相对比例,还展示了如何编写构成测试金字塔基础的单元测试。

●10章以9章为基础,描述了如何在测试金字塔中编写其他类型的测试,包括集成测试、消费者契约测试和组件测试等。

●11章介绍了开发生产就绪服务的各个方面,包括安全性、外部化配置模式和服务可观测性模式。服务可观测性模式包括日志聚合、应用指标和分布式追踪。

●12章介绍了可用于部署服务的各种部署模式,包括虚拟机、容器和 Serverless 模式。还介绍了使用服务网格的好处,服务网格是在微服务架构中处理服务间通信的一个网络软件层。

●13章介绍了如何通过采用绞杀者(Strangler)模式逐步将单体架构重构为微服务架构,绞杀者模式是指以服务形式实现新功能,从单体中提取模块将其转换为服务。

在学习这些章节的过程中,读者将了解微服务架构的不同方面。



目录
●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以Netfli为例的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


暂时没有目录,请见谅!

^_^:7c2cf02648279bcbf0fc9a31a5d54c48