正版全新  Kubernetes微服务实战+微服务架构设计模式 K8s书 微服务开发书籍pdf下载

Kubernetes微服务实战百度网盘pdf下载

作者:
简介:正版全新 Kubernetes微服务实战+微服务架构设计模式 K8s书 微服务开发书籍
出版社:
出版时间:
pdf下载价格:9.00¥


内容介绍




9787111655763 9787111624127

书   名: kubernetes微服务实战
图书定价: 119元
作 者: [印度] 吉吉·赛凡(Gigi Sayfan)
出 版 社: 机械工业出版社
出版日期: 2020-06-03
ISBN 号: 9787111655763
开   本: 16开
页   数: 372
版   次: 1-1





本书深入介绍Kubernetes和微服务之间的协同关系。首先介绍如何使用示例应用程序Delinkcious,它将作为贯穿全书的动手实验,帮助读者在实际应用程序的上下文中理解微服务和Kubernetes的概念。接下来,介绍了如何设置CI/CD流水线以及使用Kubernetes ConfigMap配置微服务。然后介绍微服务安全和实现REST、gRPC API和Delinkcious数据存储的实践。除此之外,本书还探索了Nuclio项目,介绍如何在Kubernetes上运行一个无服务器任务,并管理和实现数据密集型测试。在后几章中,你将在Kubernetes上部署微服务,并学习如何做好的监控。后,你将逐渐发现服务网格的重要性,以及如何将Istio集成到Delinkcious集中。




[印度] 吉吉·赛凡(Gigi Sayfan) 著:吉吉·赛凡(Gigi Sayfan)是Heli(一家生物信息学和基因组学初创公司)的首席软件架构师,也是Packt出版的Mastering Kubernetes一书的作者。他从事软件开发工作已过20年,涉及领域包括即时消息、变形、芯片制造过程控制、游戏机嵌入式多媒体应用程序以及脑启发机器学习。他曾用多种编程语言(包括Go、Python、C#、Java、Delphi、,甚至Cobol和PowerBuilder)为Windows、Linu、macOS、Lyn和Sony PlayStation等作编写生产代码。他的技术专长涵盖数据库、低级网络、非传统用户界面和通用SDLC。




译者序
前言
关于评审者
1章 面向开发人员的Kubernetes简介 1
1.1 技术需求 1
1.1.1 安装Docker 1
1.1.2 安装kubectl 2
1.1.3 安装Minikube 2
1.1.4 本章代码 2
1.2 Kubernetes简介 2
1.2.1 容器编排平台 2
1.2.2 Kubernetes发展历史 2
1.2.3 Kubernetes现状 3
1.3 Kubernetes架构 3
1.3.1 控制平面 4
1.3.2 数据平面 5
1.4 微服务的搭档 6
1.4.1 微服务打包和部署 6
1.4.2 微服务公开和发现 8
1.4.3 微服务安全 9
1.4.4 微服务验证和授权 11
1.4.5 微服务升级 12
1.5 创建本地集 14
1.5.1 安装Minikube 14
1.5.2 探索集 16
1.5.3 安装Helm 17
1.6 小结 19
1.7 扩展阅读 19
2章 微服务入门 20
2.1 技术需求 21
2.1.1 在macOS上通过Homebrew安装Go 21
2.1.2 在其他平台上安装Go 21
2.1.3 本章代码 21
2.2 微服务编程—少即是多 21
2.3 微服务自治 23
2.4 使用接口和契约 23
2.5 通过API公开服务 24
2.6 使用客户端库 24
2.7 管理依赖 25
2.8 协调微服务 25
2.9 利用所有权 26
2.10 理解康威定律 27
2.10.1 垂直组织 27
2.10.2 水平组织 28
2.10.3 矩阵组织 28
2.11 跨服务故障排除 28
2.12 利用共享服务库 29
2.13 选择源代码控制策略 29
2.13.1 单体仓库 29
2.13.2 多仓库 30
2.13.3 混合模式 30
2.14 选择数据策略 30
2.14.1 每个微服务对应一个数据存储 31
2.14.2 运行分布式查询 31
2.14.3 使用Saga模式管理跨服务事务 33
2.15 小结 35
2.16 扩展阅读 36
3章 示例应用程序—Delinkcious 37
3.1 技术需求 37
3.1.1 Visual Studio Code 38
3.1.2 GoLand 38
3.1.3 LiteIDE 38
3.1.4 其他选项 38
3.1.5 本章代码 38
3.2 为什么选择Go 39
3.3 认识Go kit 39
3.3.1 使用Go kit构建微服务 40
3.3.2 理解传输 41
3.3.3 理解端点 41
3.3.4 理解服务 42
3.3.5 理解中间件 42
3.3.6 理解客户端 43
3.3.7 生成样板 43
3.4 Delinkcious目录结构 43
3.4.1 cmd子目录 44
3.4.2 pkg子目录 44
3.4.3 svc子目录 45
3.5 Delinkcious微服务 45
3.5.1 对象模型 46
3.5.2 服务实现 47
3.5.3 支持函数实现 50
3.5.4 通过客户端库调用API 53
3.6 数据存储 56
3.7 小结 58
3.8 扩展阅读 58
4章 构建CI/CD流水线 59
4.1 技术需求 59
4.2 理解CI/CD流水线 60
4.3 选择CI/CD流水线工具 61
4.4.1 Jenkins X 61
4.4.2 Spinnaker 62
4.4.3 Travis CI和CircleCI 62
4.4.4 Tekton 62
4.4.5 Argo CD 63
4.4.6 自研工具 63
4.4 GitOps 63
4.5 使用CircleCI构建镜像 64
4.5.1 查看源代码树 64
4.5.2 配置CI流水线 65
4.5.3 理解构建脚本 66
4.5.4 使用多阶段Dockerfile对Go服务容器化 68
4.5.5 探索CircleCI界面 68
4.5.6 未来的改进 71
4.6 为Delinkcious设置持续交付 71
4.6.1 部署Delinkcious微服务 71
4.6.2 理解Argo CD 72
4.6.3 Argo CD入门 73
4.6.4 配置Argo CD 75
4.6.5 探索Argo CD 77
4.7 小结 80
4.8 扩展阅读 81
5章 使用Kubernetes配置微服务 82
5.1 技术需求 82
5.2 配置包含的内容 83
5.3 通过传统方式管理配置 83
5.3.1 约定 84
5.3.2 命令行标志 85
5.3.3 环境变量 85
5.3.4 配置文件 86
5.3.5 混合配置和默认 90
5.3.6 12-Factor应用程序配置 91
5.4 动态管理配置 92
5.4.1 理解动态配置 92
5.4.2 远程配置存储 93
5.4.3 远程配置服务 93
5.5 使用Kubernetes配置微服务 93
5.5.1 使用Kubernetes ConfigMaps 94
5.5.2 Kubernetes自定义资源 102
5.5.3 服务发现 105
5.6 小结 105
5.7 扩展阅读 106
6章 Kubernetes与微服务安全 107
6.1 技术需求 107
6.2 应用完善的安全原则 108
6.3 区分用户账户和服务账户 110
6.3.1 用户账户 110
6.3.2 服务账户 111
6.4 使用Kubernetes管理密钥 114
6.4.1 Kubernetes密钥的三种类型 114
6.4.2 创造自己的密钥 115
6.4.3 将密钥传递到容器 116
6.4.4 构建一个安全的Pod 117
6.5 使用RBAC管理权限 118
6.6 通过认证、授权和准入控制访问权限 121
6.6.1 认证 121
6.6.2 授权 125
6.6.3 准入 125
6.7 通过安全佳实践增强Kubernetes 126
6.7.1 镜像安全 126
6.7.2 网络安全—分而治之 127
6.7.3 镜像仓库安全 129
6.7.4 按需授予访问权限 129
6.7.5 使用配额小化爆炸半径 130
6.7.6 实施安全上下文 132
6.7.7 使用安全策略强化Pod 133
6.7.8 强化工具链 134
6.8 小结 135
6.9 扩展阅读 136
7章 API与负载均衡器 137
7.1 技术需求 137
7.2 熟悉Kubernetes服务 138
7.3 东西流量与南北流量 140
7.4 理解ingress和负载均衡器 141
7.5 提供和使用公有REST API 141
7.5.1 构建基于Python的API网关服务 141
7.5.2 添加ingress 146
7.5.3 验证API网关 147
7.6 提供和使用内部gRPC API 150
7.6.1 定义NewsManager接口 150
7.6.2 实现消息管理器 151
7.6.3 将NewsManager公开为gRPC服务 153
7.7 通过消息队列发送和接收事件 158
7.7.1 NATS 159
7.7.2 在Kubernetes集中部署NATS 159
7.7.3 使用NATS发送链接事件 160
7.7.4 订阅NATS链接事件 162
7.7.5 处理链接事件 164
7.8 服务网格 166
7.9 小结 166
7.10 扩展阅读 166
8章 有状态服务 167
8.1 技术需求 167
8.2 抽象存储 168
8.2.1 Kubernetes存储模型 168
8.2.2 内置和外部存储插件 172
8.2.3 理解CSI 173
8.3 在Kubernetes集外存储数据 174
8.4 使用StatefulSet在Kubernetes集内存储数据 175
8.4.1 理解StatefulSet 175
8.4.2 什么时候应该使用StatefulSet 178
8.4.3 一个大型StatefulSet示例 179
8.5 通过本地存储实现高性能 183
8.5.1 将数据存储在内存中 183
8.5.2 将数据存储在本地SSD硬盘上 183
8.6 在Kubernetes中使用关系型数据库 183
8.6.1 了解数据的存储位置 184
8.6.2 使用部署和服务 184
8.6.3 使用StatefulSet 185
8.6.4 帮助用户服务找到StatefulSet Pod 185
8.6.5 管理模式更改 187
8.7 在Kubernetes中使用非关系型数据存储 187
8.8 小结 191
8.9 扩展阅读 192
9章 在Kubernetes上运行Serverless任务 193
9.1 技术需求 193
9.2 云中的Serverless 194
9.2.1 微服务与Serverless函数 195
9.2.2 在Kubernetes上的Serverless函数模型 195
9.2.3 构建、配置和部署Serverless函数 196
9.2.4 调用Serverless函数 196
9.3 Delinkcious链接检查 196
9.3.1 设计链接检查 197
9.3.2 实现链接检查 199
9.4 使用Nuclio实现Serverless链接检查 202
9.4.1 Nuclio简介 202
9.4.2 创建一个链接检查Serverless函数 203
9.4.3 使用nuctl部署链接检查函数 206
9.4.4 使用Nuclio仪表板部署函数 207
9.4.5 直接调用链接检查函数 207
9.4.6 在LinkManager中触发链接检查 208
9.5 其他Kubernetes Serverless框架 209
9.5.1 Kubernetes Job和CronJob 210
9.5.2 KNative 210
9.5.3 Fission 211
9.5.4 Kubeless 211
9.5.5 OpenFaas 211
9.6 小结 212
9.7 扩展阅读 212
10章 微服务测试 213
10.1 技术需求 214
10.2 单元测试 214
10.2.1 使用Go进行单元测试 214
10.2.2 使用Ginkgo和Gomega进行单元测试 216
10.2.3 Delinkcious单元测试 217
10.2.4 模拟的艺术 217
10.2.5 你应该测试吗 221
10.3 集成测试 222
10.3.1 初始化测试数据库 222
10.3.2 运行服务 223
10.3.3 运行实际测试 223
10.3.4 实现数据库测试辅助函数 225
10.3.5 实现服务测试辅助函数 227
10.4 使用Kubernetes进行本地测试 229
10.4.1 编写冒烟测试 229
10.4.2 Telepresence 232
10.5 隔离测试 235
10.5.1 隔离集 236
10.5.2 隔离命名空间 236
10.5.3 跨集/命名空间 237
10.6 端到端测试 237
10.6.1 验收测试 237
10.6.2 回归测试 238
10.6.3 性能测试 238
10.7 管理测试数据 239
10.7.1数据 239
10.7.2 人工测试数据 239
10.7.3 生产环境快照 239
10.8 小结 240
10.9 扩展阅读 240
11章 微服务部署 241
11.1 技术需求 241
11.2 Kubernetes部署 242
11.3 多环境部署 243
11.4 理解部署策略 246
11.4.1 重新部署 247
11.4.2 滚动更新 247
11.4.3 蓝绿部署 248
11.4.4 金丝雀部署 255
11.5 回滚部署 260
11.5.1 回滚标准部署 260
11.5.2 回滚蓝绿部署 261
11.5.3 回滚金丝雀部署 262
11.5.4 回滚模式、API或负载的更改 262
11.6 管理版本和依赖 263
11.6.1 管理公有API接口 263
11.6.2 管理跨服务依赖 264
11.6.3 管理三方依赖 264
11.6.4 管理基础设施和工具链 265
11.7 本地开发部署 265
11.7.1 Ko 266
11.7.2 Ksync 269
11.7.3 Draft 271
11.7.4 Skaffold 272
11.7.5 Tilt 273
11.8 小结 279
11.9 扩展阅读 279
12章 监控、日志和指标 280
12.1 技术需求 281
12.2 Kubernetes的自愈能力 281
12.2.1 容器故障 282
12.2.2 节点故障 282
12.2.3故障 283
12.3 Kubernetes集自动伸缩 284
12.3.1 Pod水平自动伸缩 284
12.3.2 集自动伸缩 286
12.3.3 Pod垂直自动伸缩 287
12.4 使用Kubernetes供应资源 289
12.4.1 应该提供哪些资源 289
12.4.2 定义容器限制 289
12.4.3 指定资源配额 290
12.4.4 手动供应 291
12.4.5 利用自动伸缩 292
12.4.6 自定义自动供应 292
12.5 正确地优化性能 292
12.5.1 性能和用户体验 292
12.5.2 性能和高可用性 293
12.5.3 性能和成本 293
12.5.4 性能和安全性 293
12.6 日志 294
12.6.1 日志应该记录什么 294
12.6.2 日志与报告 294
12.6.3 Go日志接口 294
12.6.4 使用Go-kit日志 295
12.6.5 使用Kubernetes集中管理日志 298
12.7 在Kubernetes上收集指标 299
12.7.1 Kubernetes指标API 300
12.7.2 Kubernetes指标服务器 301
12.7.3 使用Prometheus 302
12.8 警报 308
12.8.1 拥抱组件故障 309
12.8.2 接受故障 309
12.8.3 考虑人为因素 309
12.8.4 使用Prometheus警报管理器 310
12.9 分布式跟踪 312
12.9.1 安装Jaeger 312
12.9.2 将跟踪集成到服务中 313
12.10 小结 315
12.11 扩展阅读 315
13章 服务网格与Istio 317
13.1 技术需求 317
13.2 服务网格 318
13.2.1 单体架构与微服务架构 319
13.2.2 使用共享库管理微服务的横切关注点 319
13.2.3 使用服务网格管理微服务的横切关注点 320
13.2.4 理解Kubernetes与服务网格之间的关系 320
13.3 Istio 321
13.3.1 了解Istio架构 321
13.3.2 使用Istio管理流量 324
13.3.3 使用Istio保护集 328
13.3.4 使用Istio实施策略 331
13.3.5 使用Istio收集指标 331
13.3.6 什么时候应该避免使用Istio 332


微服务架构设计模式

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

收起全部↑


暂时没有目录,请见谅!

^_^:24edaa7fdeffe0a6a52195e9ff3a2040