书籍详情
Kubernetes原生微服务开发
作者:[美] 约翰·克林甘(John Clingan)、肯·芬尼根(Ken Finnigan)著,陈计节 张圣奇 译
出版社:清华大学出版社
出版时间:2023-06-01
ISBN:9787302630623
定价:¥98.00
购买这本书可以去
内容简介
运用新的“Kubernetes优先”工具高效地开发微服务!Quarkus与容器和Kubernetes的结合浑然天成,从根本上简化了微服务的开发与部署。Quarkus这个功能强大的框架从一开始就是基于Java构建的,因而能与现有的JVM代码库无缝集成,极大地缩短了启动时间,减少了内存消耗量。 在《Kubernetes原生微服务开发》的指导下,你将使用容器、Kubernetes和Quarkus框架开发微服务。将首先开发基于Quarkus和MicroProfile API的可部署应用;此后,将了解如何借助Quarkus天然的启动速度和运行速度优势,通过运用GraalVM原生编译,来获得性能跃升。在学习过程中,你将体验到如何在Quarkus应用中集成Spring开发,并吸收作者关于微服务监控和管理的真知灼见。 主要内容 ? 在Kubernetes上部署企业级Java应用 ? 运用Quarkus运行时框架开发应用 ? 运用GraalVM原生编译获得**性能 ? 充分运用MicroProfile规范
作者简介
John Clingan 是红帽高级产品主管,研究方向是企业级Java标准和Quarkus。Ken Finnigan 是Workday高级软件工程师主管,此前在红帽的Quarkus团队工作。
目录
第Ⅰ部分 基础知识
第1 章 Quarkus、MicroProfile 和
Kubernetes 简介. 3
1.1 什么是微服务3
1.1.1 微服务的兴起.6
1.1.2 微服务架构6
1.1.3 微服务规范的需求7
1.2 MicroProfile 规范.7
1.2.1 MicroProfile 的发展历程.8
1.2.2 MicroProfile 社区核心原则9
1.3 Quarkus 10
1.3.1 快乐开发 10
1.3.2 对MicroProfile 的支持 11
1.3.3 运行时效率 11
1.4 Kubernetes 12
1.5 Kubernetes 原生微服务 15
1.6 本章小结 16
第2 章 初次开发Quarkus 应用19
2.1 创建项目 19
2.2 使用实时编码进行开发 24
2.3 编写测试 32
2.4 生成原生可执行程序 37
2.5 在Kubernetes 上运行应用. 40
2.5.1 生成 Kubernetes YAML . 40
2.5.2 应用打包 43
2.5.3 应用部署与运行. 43
2.6 本章小结 45
第Ⅱ部分 微服务开发
第3 章 微服务配置.49
3.1 MicroProfile Config架构概述 50
3.2 访问配置 50
3.3 银行服务 51
3.3.1 创建银行服务. 51
3.3.2 配置银行服务的名称字段. 53
3.4 配置源. 54
3.5 配置mobileBanking 字段 57
3.6 使用@ConfigProperties 对配置属性分组. 57
3.7 Quarkus 特有的配置功能 59
3.7.1 Quarkus 配置编组. 59
3.7.2 配置属性表达式 60
3.7.3 Quarkus ConfigMapping 功能 61
3.7.4 运行期和构建期配置属性. 62
3.8 Kubernetes 上的配置 63
3.8.1 Kubernetes 上的常见配置源. 63
3.8.2 在Quarkus 应用中使用ConfigMap 65
3.8.3 编辑ConfigMap. 66
3.8.4 Kubernetes Secret 67
3.9 本章小结 69
第4 章 使用Panache 访问数据71
4.1 数据源. 71
4.2 JPA 73
4.3 简化数据库开发 78
X Kubernetes 原生微服务开发
4.3.1 活动记录 78
4.3.2 数据仓储 81
4.3.3 数据访问模式选型 83
4.4 部署到Kubernetes 84
4.4.1 部署PostgreSQL 数据库 84
4.4.2 打包与部署 85
4.5 本章小结 86
第5 章 微服务客户端87
5.1 MicroProfile REST Client规范 88
5.2 定义服务接口 89
5.2.1 CDI REST 客户端 90
5.2.2 以编程方式使用REST客户端 95
5.2.3 选用CDI 还是编程式API. 96
5.2.4 异步响应类型. 96
5.3 定制REST 客户端. 98
5.3.1 客户端请求头. 98
5.3.2 声明提供程序101
5.4 本章小结.106
第6 章 应用的健康管理.107
6.1 开发者在应用健康管理领域日益重要的地位107
6.2 MicroProfile Health 规范108
6.2.1 存活状态与就绪状态.109
6.2.2 确定存活状态与就绪状态109
6.3 开始学习MicroProfile Health.110
6.3.1 账户服务中的MicroProfile
Health 存活状态.112
6.3.2 为账户服务创建存活健康检查113
6.3.3 账户服务的MicroProfile Health
就绪状态.114
6.3.4 禁用第三方就绪健康检查115
6.3.5 创建新的就绪健康检查115
6.3.6 Quarkus 健康分组118
6.3.7 使用Quarkus 健康状态界面 119
6.4 Kubernetes 存活和就绪探针.120
6.4.1 定制健康检查属性.121
6.4.2 部署到Kubernetes122
6.4.3 测试Kubernetes 中的就绪健康检查124
6.5 本章小结126
第7 章 应用韧性策略 127
7.1 韧性策略简介127
7.2 用@Asynchronous 启用单独的线程执行方法128
7.3 用舱壁模式限制并发128
7.4 在交易服务中使用舱壁.130
7.5 以降级处理的方式处理异常.131
7.6 为调用指定超时.132
7.7 用@Retry 从临时故障中恢复.135
7.8 用熔断器避免持续故障.136
7.8.1 MicroProfile Fault Tolerance规范中的@CircuitBreaker 136
7.8.2 熔断器的工作原理.137
7.8.3 更新交易服务,运用@CircuitBreaker138
7.8.4 测试熔断器140
7.9 用配置属性覆盖注解参数142
7.10 部署到Kubernetes.144
7.11 本章小结.145
第8 章 命令式世界的反应式编程 147
8.1 反应式编程的示例147
8.2 反应式流149
8.2.1 发布者、订阅者和处理者149
8.2.2 回压的重要性150
8.3 Quarkus 中的反应式消息.152
8.3.1 借用生成器结合使用命令式与反应式编程152
8.3.2 关于阻塞.155
8.3.3 以内存模式测试157
8.4 原理分析.160
8.4.1 MicroProfile 反应式消息规范160
8.4.2 消息内容和元数据.161
8.4.3 消息流中的消息164
8.5 部署到Kubernetes164
8.5.1 Minikube 中的Apache Kafka 165
8.5.2 汇总所有步骤167
8.6 本章小结.169
第9 章 在Quarkus 中开发Spring微服务171
9.1 Quarkus 与Spring API兼容性简介171
9.2 Spring 依赖注入和配置的兼容性172
9.2.1 搭建Spring Cloud 配置服务器.173
9.2.2 将Spring 配置服务器用作配置源.174
9.2.3 将银行服务转换为使用Spring Configuration API175
9.3 Quarkus 与Spring Web API的兼容性176
9.4 Quarkus 与Spring Data JPA的兼容性179
9.5 部署到Kubernetes183
9.6 Spring API 兼容性在Quarkus中的实现原理184
9.7 常见的Quarkus/Spring 兼容性相关的问题184
9.8 对比Spring Boot 与Quarkus的启动过程185
9.9 本章小结.186
第Ⅲ部分 可观测性、API 定义和微服务安全
第10 章 记录指标 189
10.1 指标在微服务架构中的角色189
10.2 了解MicroProfile Metrics规范.190
10.2.1 利用Prometheus 和Grafana绘制指标图线.191
10.2.2 MicroProfile Metrics 规范197
10.2.3 为账户服务添加埋点201
10.2.4 为交易服务添加埋点202
10.2.5 创建业务指标.209
10.2.6 MicroProfile Metrics 与MicroProfile Fault Tolerance、JAX-RS 的集成. 211
10.2.7 Micrometer 指标213
10.2.8 模拟繁忙的生产系统215
10.3 本章小结.216
第11 章 微服务跟踪 217
11.1 跟踪的工作原理.218
11.2 Jaeger219
11.2.1 跟踪采样219
11.2.2 配置 Minikube 环境220
11.2.3 安装Jaeger 220
11.2.4 使用Jaeger 跟踪微服务.222
11.3 跟踪的规范226
11.3.1 OpenTracing.226
11.3.2 MicroProfile OpenTracing 227
11.3.3 OpenTelemetry227
11.4 在应用中定制跟踪228
11.4.1 使用@Traced228
11.4.2 注入跟踪器.228
11.4.3 跟踪数据库调用230
11.4.4 跟踪Kafka 消息232
11.5 本章小结.238
XII Kubernetes 原生微服务开发
第12 章 API 可视化239
12.1 在Swagger UI 中查看OpenAPI 文档240
12.1.1 启用OpenAPI.240
12.1.2 Swagger UI 242
12.2 MicroProfile OpenAPI244
12.2.1 应用信息244
12.2.2 定制输出内容的结构246
12.2.3 定义操作247
12.2.4 操作的响应248
12.2.5 为操作添加标签251
12.2.6 过滤 OpenAPI 的内容252
12.3 设计先行开发253
12.3.1 从文件加载OpenAPI253
12.3.2 混用文件与注解254
12.4 代码先行还是OpenAPI先行255
12.5 本章小结.255
第13 章 微服务安全257
13.1 认证和授权简介257
13.2 使用基于文件的认证与授权259
13.3 基于OpenID Connect 的认证与授权263
13.3.1 OpenID Connect(OIDC)
简介264
13.3.2 OIDC 与Keycloak264
13.3.3 使用OpenID Connect 访问受保护的资源.266
13.3.4 测试授权码流程268
13.4 JSON Web 令牌和
MicroProfile JWT271
13.4.1 JWT 令牌的头部272
13.4.2 JWT 令牌的正文272
13.4.3 JWT 签名.274
13.5 使用MicroProfile JWT 为交易服务添加安全保护276
13.6 传递JWT278
13.6.1 为账户服务API 端点添加安全保护278
13.6.2 由交易服务向账户服务传递JWT 令牌.279
13.7 在Kubernetes 上运行服务.280
13.8 本章小结.281
第1 章 Quarkus、MicroProfile 和
Kubernetes 简介. 3
1.1 什么是微服务3
1.1.1 微服务的兴起.6
1.1.2 微服务架构6
1.1.3 微服务规范的需求7
1.2 MicroProfile 规范.7
1.2.1 MicroProfile 的发展历程.8
1.2.2 MicroProfile 社区核心原则9
1.3 Quarkus 10
1.3.1 快乐开发 10
1.3.2 对MicroProfile 的支持 11
1.3.3 运行时效率 11
1.4 Kubernetes 12
1.5 Kubernetes 原生微服务 15
1.6 本章小结 16
第2 章 初次开发Quarkus 应用19
2.1 创建项目 19
2.2 使用实时编码进行开发 24
2.3 编写测试 32
2.4 生成原生可执行程序 37
2.5 在Kubernetes 上运行应用. 40
2.5.1 生成 Kubernetes YAML . 40
2.5.2 应用打包 43
2.5.3 应用部署与运行. 43
2.6 本章小结 45
第Ⅱ部分 微服务开发
第3 章 微服务配置.49
3.1 MicroProfile Config架构概述 50
3.2 访问配置 50
3.3 银行服务 51
3.3.1 创建银行服务. 51
3.3.2 配置银行服务的名称字段. 53
3.4 配置源. 54
3.5 配置mobileBanking 字段 57
3.6 使用@ConfigProperties 对配置属性分组. 57
3.7 Quarkus 特有的配置功能 59
3.7.1 Quarkus 配置编组. 59
3.7.2 配置属性表达式 60
3.7.3 Quarkus ConfigMapping 功能 61
3.7.4 运行期和构建期配置属性. 62
3.8 Kubernetes 上的配置 63
3.8.1 Kubernetes 上的常见配置源. 63
3.8.2 在Quarkus 应用中使用ConfigMap 65
3.8.3 编辑ConfigMap. 66
3.8.4 Kubernetes Secret 67
3.9 本章小结 69
第4 章 使用Panache 访问数据71
4.1 数据源. 71
4.2 JPA 73
4.3 简化数据库开发 78
X Kubernetes 原生微服务开发
4.3.1 活动记录 78
4.3.2 数据仓储 81
4.3.3 数据访问模式选型 83
4.4 部署到Kubernetes 84
4.4.1 部署PostgreSQL 数据库 84
4.4.2 打包与部署 85
4.5 本章小结 86
第5 章 微服务客户端87
5.1 MicroProfile REST Client规范 88
5.2 定义服务接口 89
5.2.1 CDI REST 客户端 90
5.2.2 以编程方式使用REST客户端 95
5.2.3 选用CDI 还是编程式API. 96
5.2.4 异步响应类型. 96
5.3 定制REST 客户端. 98
5.3.1 客户端请求头. 98
5.3.2 声明提供程序101
5.4 本章小结.106
第6 章 应用的健康管理.107
6.1 开发者在应用健康管理领域日益重要的地位107
6.2 MicroProfile Health 规范108
6.2.1 存活状态与就绪状态.109
6.2.2 确定存活状态与就绪状态109
6.3 开始学习MicroProfile Health.110
6.3.1 账户服务中的MicroProfile
Health 存活状态.112
6.3.2 为账户服务创建存活健康检查113
6.3.3 账户服务的MicroProfile Health
就绪状态.114
6.3.4 禁用第三方就绪健康检查115
6.3.5 创建新的就绪健康检查115
6.3.6 Quarkus 健康分组118
6.3.7 使用Quarkus 健康状态界面 119
6.4 Kubernetes 存活和就绪探针.120
6.4.1 定制健康检查属性.121
6.4.2 部署到Kubernetes122
6.4.3 测试Kubernetes 中的就绪健康检查124
6.5 本章小结126
第7 章 应用韧性策略 127
7.1 韧性策略简介127
7.2 用@Asynchronous 启用单独的线程执行方法128
7.3 用舱壁模式限制并发128
7.4 在交易服务中使用舱壁.130
7.5 以降级处理的方式处理异常.131
7.6 为调用指定超时.132
7.7 用@Retry 从临时故障中恢复.135
7.8 用熔断器避免持续故障.136
7.8.1 MicroProfile Fault Tolerance规范中的@CircuitBreaker 136
7.8.2 熔断器的工作原理.137
7.8.3 更新交易服务,运用@CircuitBreaker138
7.8.4 测试熔断器140
7.9 用配置属性覆盖注解参数142
7.10 部署到Kubernetes.144
7.11 本章小结.145
第8 章 命令式世界的反应式编程 147
8.1 反应式编程的示例147
8.2 反应式流149
8.2.1 发布者、订阅者和处理者149
8.2.2 回压的重要性150
8.3 Quarkus 中的反应式消息.152
8.3.1 借用生成器结合使用命令式与反应式编程152
8.3.2 关于阻塞.155
8.3.3 以内存模式测试157
8.4 原理分析.160
8.4.1 MicroProfile 反应式消息规范160
8.4.2 消息内容和元数据.161
8.4.3 消息流中的消息164
8.5 部署到Kubernetes164
8.5.1 Minikube 中的Apache Kafka 165
8.5.2 汇总所有步骤167
8.6 本章小结.169
第9 章 在Quarkus 中开发Spring微服务171
9.1 Quarkus 与Spring API兼容性简介171
9.2 Spring 依赖注入和配置的兼容性172
9.2.1 搭建Spring Cloud 配置服务器.173
9.2.2 将Spring 配置服务器用作配置源.174
9.2.3 将银行服务转换为使用Spring Configuration API175
9.3 Quarkus 与Spring Web API的兼容性176
9.4 Quarkus 与Spring Data JPA的兼容性179
9.5 部署到Kubernetes183
9.6 Spring API 兼容性在Quarkus中的实现原理184
9.7 常见的Quarkus/Spring 兼容性相关的问题184
9.8 对比Spring Boot 与Quarkus的启动过程185
9.9 本章小结.186
第Ⅲ部分 可观测性、API 定义和微服务安全
第10 章 记录指标 189
10.1 指标在微服务架构中的角色189
10.2 了解MicroProfile Metrics规范.190
10.2.1 利用Prometheus 和Grafana绘制指标图线.191
10.2.2 MicroProfile Metrics 规范197
10.2.3 为账户服务添加埋点201
10.2.4 为交易服务添加埋点202
10.2.5 创建业务指标.209
10.2.6 MicroProfile Metrics 与MicroProfile Fault Tolerance、JAX-RS 的集成. 211
10.2.7 Micrometer 指标213
10.2.8 模拟繁忙的生产系统215
10.3 本章小结.216
第11 章 微服务跟踪 217
11.1 跟踪的工作原理.218
11.2 Jaeger219
11.2.1 跟踪采样219
11.2.2 配置 Minikube 环境220
11.2.3 安装Jaeger 220
11.2.4 使用Jaeger 跟踪微服务.222
11.3 跟踪的规范226
11.3.1 OpenTracing.226
11.3.2 MicroProfile OpenTracing 227
11.3.3 OpenTelemetry227
11.4 在应用中定制跟踪228
11.4.1 使用@Traced228
11.4.2 注入跟踪器.228
11.4.3 跟踪数据库调用230
11.4.4 跟踪Kafka 消息232
11.5 本章小结.238
XII Kubernetes 原生微服务开发
第12 章 API 可视化239
12.1 在Swagger UI 中查看OpenAPI 文档240
12.1.1 启用OpenAPI.240
12.1.2 Swagger UI 242
12.2 MicroProfile OpenAPI244
12.2.1 应用信息244
12.2.2 定制输出内容的结构246
12.2.3 定义操作247
12.2.4 操作的响应248
12.2.5 为操作添加标签251
12.2.6 过滤 OpenAPI 的内容252
12.3 设计先行开发253
12.3.1 从文件加载OpenAPI253
12.3.2 混用文件与注解254
12.4 代码先行还是OpenAPI先行255
12.5 本章小结.255
第13 章 微服务安全257
13.1 认证和授权简介257
13.2 使用基于文件的认证与授权259
13.3 基于OpenID Connect 的认证与授权263
13.3.1 OpenID Connect(OIDC)
简介264
13.3.2 OIDC 与Keycloak264
13.3.3 使用OpenID Connect 访问受保护的资源.266
13.3.4 测试授权码流程268
13.4 JSON Web 令牌和
MicroProfile JWT271
13.4.1 JWT 令牌的头部272
13.4.2 JWT 令牌的正文272
13.4.3 JWT 签名.274
13.5 使用MicroProfile JWT 为交易服务添加安全保护276
13.6 传递JWT278
13.6.1 为账户服务API 端点添加安全保护278
13.6.2 由交易服务向账户服务传递JWT 令牌.279
13.7 在Kubernetes 上运行服务.280
13.8 本章小结.281
猜您喜欢