以项目为导向,使用Spring实现云原生模式,处理安全性、韧性和可扩展性等问题; 提供丰富的实战案例,构建和测试命令式与反应式应用,在Kubernetes上实现配置和可观测性; 采用持续交付和GitOps,从代码到生产,一步步构建云原生应用,让学习成果即刻转化为实际价值。
售 价:¥
纸质售价:¥132.80购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
版 权
内容提要
译者序
前 言
致 谢
关于本书
关于作者
译者介绍
服务与支持
第一部分 云原生基础
第1章 云原生简介
1.1 什么是云原生
1.2 云和云计算模型
1.2.1 基础设施即服务
1.2.2 容器即服务
1.2.3 平台即服务
1.2.4 函数即服务
1.2.5 软件即服务
1.3 云原生应用的属性
1.3.1 可扩展性
1.3.2 松耦合
1.3.3 韧性
1.3.4 可观测性
1.3.5 可管理性
1.4 支撑云原生的文化与实践
1.4.1 自动化
1.4.2 持续交付
1.4.3 DevOps
1.5 云是最佳方案吗
1.5.1 速度
1.5.2 韧性
1.5.3 扩展
1.5.4 节省成本
1.6 云原生拓扑结构
1.6.1 容器
1.6.2 编排
1.6.3 Serverless
1.7 云原生应用的架构
1.7.1 从多层架构到微服务和其他架构
1.7.2 基于服务架构的云原生应用
1.8 小结
第2章 云原生模式与技术
2.1 云原生开发原则:12-Factor及其扩展
2.1.1 一份基准代码,一个应用
2.1.2 API优先
2.1.3 依赖管理
2.1.4 设计、构建、发布和运行
2.1.5 配置、凭证和代码
2.1.6 日志
2.1.7 易处理
2.1.8 支撑服务
2.1.9 环境对等
2.1.10 管理进程
2.1.11 端口绑定
2.1.12 无状态进程
2.1.13 并发
2.1.14 遥测
2.1.15 认证与授权
2.2 使用Spring构建云原生应用
2.2.1 Spring全景图概览
2.2.2 构建Spring Boot应用
2.3 使用Docker容器化应用
2.3.1 Docker简介:镜像与容器
2.3.2 以容器形式运行Spring应用
2.4 使用Kubernetes管理容器
2.4.1 Kubernetes简介:Deployment、Pod与Service
2.4.2 在Kubernetes中运行Spring应用
2.5 云原生样例:Polar Bookshop
2.5.1 理解系统需求
2.5.2 探索项目中所使用的模式和技术
2.6 小结
第二部分 云原生开发
第3章 云原生开发入门
3.1 启动云原生项目
3.1.1 一份基准代码,一个应用
3.1.2 使用Gradle和Maven进行依赖管理
3.2 使用嵌入式服务器
3.2.1 可执行的JAR文件与嵌入式服务器
3.2.2 理解“每个请求一个线程”模型
3.2.3 配置嵌入式服务器
3.3 使用Spring MVC构建RESTful应用
3.3.1 先有REST API,后有业务逻辑
3.3.2 使用Spring MVC实现REST API
3.3.3 数据验证和错误处理
3.3.4 为满足未来需求而不断演进的API
3.4 使用Spring测试RESTful应用
3.4.1 使用JUnit 5进行单元测试
3.4.2 使用@SpringBootTest进行集成测试
3.4.3 使用@WebMvcTest测试REST控制器
3.4.4 使用@JsonTest测试JSON序列化
3.5 部署流水线:构建与测试
3.5.1 理解部署流水线的提交阶段
3.5.2 使用GitHub Actions实现提交阶段
3.6 小结
第4章 外部化配置管理
4.1 Spring中的配置:属性与profile
4.1.1 属性:用作配置的键/值对
4.1.2 profile:特性标记和配置分组
4.2 外部化配置:一次构建,多个配置
4.2.1 通过命令行参数配置应用
4.2.2 通过JVM系统属性配置应用
4.2.3 通过环境变量配置应用
4.3 使用Spring Cloud Config Server实现中心化的配置管理
4.3.1 使用Git存储配置数据
4.3.2 搭建配置服务器
4.3.3 确保配置服务器的韧性
4.3.4 理解配置服务器的REST API
4.4 通过Spring Cloud Config Client使用配置服务器
4.4.1 搭建配置客户端
4.4.2 确保配置客户端的韧性
4.4.3 在运行时刷新配置
4.5 小结
第5章 云中的数据持久化与数据管理
5.1 云原生系统的数据库
5.1.1 云中的数据服务
5.1.2 以容器的形式运行PostgreSQL
5.2 使用Spring Data JDBC进行数据持久化
5.2.1 使用JDBC连接数据库
5.2.2 使用Spring Data定义持久化实体
5.2.3 启用和配置JDBC审计
5.2.4 使用Spring Data实现数据资源库
5.3 使用Spring和Testcontainers测试数据持久化
5.3.1 为PostgreSQL配置Testcontainers
5.3.2 使用@DataJdbcTest和Testcontainers测试数据持久化
5.3.3 使用@SpringBootTest和Testcontainers进行集成测试
5.4 使用Flyway管理生产环境中的数据库
5.4.1 理解Flyway:对数据库进行版本控制
5.4.2 使用Flyway初始化数据库模式
5.4.3 使用Flyway完成数据库演进
5.5 小结
第6章 Spring Boot容器化
6.1 在Docker上使用容器镜像
6.1.1 理解容器镜像
6.1.2 使用Dockerfile创建镜像
6.1.3 发布镜像到GitHub Container Registry
6.2 将Spring Boot应用打包为容器镜像
6.2.1 让Spring Boot为容器化做好准备
6.2.2 使用Dockerfile容器化Spring Boot
6.2.3 构建适用于生产环境的容器镜像
6.2.4 使用Cloud Native Buildpacks容器化Spring Boot
6.3 使用Docker Compose管理Spring Boot容器
6.3.1 使用Docker Compose管理容器的生命周期
6.3.2 调试Spring Boot容器
6.4 部署流水线:打包和发布
6.4.1 在提交阶段构建发布候选
6.4.2 使用GitHub Actions发布容器镜像
6.5 小结
第7章 面向Spring Boot的Kubernetes基础
7.1 从Docker到Kubernetes
7.1.1 使用本地的Kubernetes集群
7.1.2 管理本地集群中的数据服务
7.2 Spring Boot应用的Kubernetes Deployment
7.2.1 从容器到Pod
7.2.2 使用Deployment控制Pod
7.2.3 创建Spring Boot应用的Deployment
7.3 服务发现与负载均衡
7.3.1 理解服务发现和负载均衡
7.3.2 客户端的服务发现和负载均衡
7.3.3 服务器端的服务发现和负载均衡
7.3.4 使用Kubernetes Service对外暴露Spring Boot应用
7.4 可扩展性和易处理性
7.4.1 确保易处理性:快速启动
7.4.2 确保易处理性:优雅关机
7.4.3 扩展Spring Boot应用
7.5 使用Tilt实现本地的Kubernetes开发
7.5.1 使用Tilt实现内开发循环
7.5.2 使用Octant可视化Kubernetes工作负载
7.6 部署流水线:校验Kubernetes清单
7.6.1 在提交阶段校验Kubernetes清单
7.6.2 使用GitHub Actions实现Kubernetes清单校验的自动化
7.7 小结
第三部分 云原生分布式系统
第8章 反应式Spring:韧性与可扩展性
8.1 使用Reactor和Spring的异步与非阻塞架构
8.1.1 从“每个请求一个线程”到事件循环
8.1.2 Reactor项目:使用Mono和Flux实现的反应式流
8.1.3 理解Spring反应式技术栈
8.2 使用Spring WebFlux和Spring Data R2DBC实现反应式服务器
8.2.1 使用Spring Boot引导反应式应用
8.2.2 使用Spring Data R2DBC反应式地持久化数据
8.2.3 使用反应式流实现业务逻辑
8.2.4 使用Spring WebFlux暴露REST API
8.3 使用Spring WebClient编写反应式客户端
8.3.1 Spring中的服务与服务通信
8.3.2 理解如何交换数据
8.3.3 使用WebClient实现REST客户端
8.4 使用反应式Spring实现韧性的应用
8.4.1 超时
8.4.2 重试
8.4.3 回退和错误处理
8.5 使用Spring、Reactor和Testcontainers测试反应式应用
8.5.1 使用mock Web服务器测试REST客户端
8.5.2 使用@DataR2dbcTest和Testcontainers测试数据持久化
8.5.3 使用@WebFluxTest测试REST控制器
8.6 小结
第9章 API网关与断路器
9.1 边缘服务器和Spring Cloud Gateway
9.1.1 使用Spring Cloud Gateway引导边缘服务器
9.1.2 定义路由和断言
9.1.3 通过过滤器处理请求和响应
9.2 使用Spring Cloud Circuit Breaker和Resilience4J实现容错
9.2.1 使用Spring Cloud Circuit Breaker引入断路器
9.2.2 使用Resilience4J配置断路器
9.2.3 使用Spring WebFlux定义回退REST API
9.2.4 组合断路器、重试和限时器
9.3 使用Spring Cloud Gateway和Redis进行限流
9.3.1 以容器的形式运行Redis
9.3.2 集成Spring与Redis
9.3.3 配置请求限流器
9.4 基于Redis的分布式会话管理
9.5 使用Kubernetes Ingress管理外部访问
9.5.1 理解Ingress API和Ingress Controller
9.5.2 使用Ingress对象
9.6 小结
第10章 事件驱动应用与函数
10.1 事件驱动架构
10.1.1 理解事件驱动模型
10.1.2 使用发布/订阅模型
10.2 基于RabbitMQ的消息代理
10.2.1 理解消息系统中的AMQP
10.2.2 使用RabbitMQ实现发布/订阅通信
10.3 基于Spring Cloud Function的函数
10.3.1 在Spring Cloud Function中使用函数化范式
10.3.2 组合与集成函数:REST、Serverless与数据流
10.3.3 使用@FunctionalSpringBootTest编写集成测试
10.4 使用Spring Cloud Stream处理消息
10.4.1 配置与RabbitMQ的集成
10.4.2 将函数绑定至消息通道
10.4.3 使用Test Binder编写集成测试
10.4.4 保持消息系统应对故障的韧性
10.5 使用Spring Cloud Stream生产和消费消息
10.5.1 实现事件消费者以及幂等性问题
10.5.2 实现事件生产者以及原子性问题
10.6 小结
第11章 安全性:认证与SPA
11.1 理解Spring Security的基础知识
11.2 使用Keycloak管理用户账号
11.2.1 定义安全realm
11.2.2 管理用户和角色
11.3 使用OpenID Connect、JWT和Keycloak进行认证
11.3.1 使用OpenID Connect认证用户
11.3.2 使用JWT交换用户信息
11.3.3 在Keycloak中注册应用
11.4 使用Spring Security和OpenID Connect认证用户
11.4.1 添加新的依赖
11.4.2 配置Spring Security和Keycloak集成
11.4.3 Spring Security的基本配置
11.4.4 探查认证用户的上下文
11.4.5 在Spring Security和Keycloak中配置用户退出
11.5 集成Spring Security与SPA
11.5.1 运行Angular应用
11.5.2 控制认证流
11.5.3 防止跨站请求伪造
11.6 测试Spring Security和OpenID Connect
11.6.1 测试OIDC认证
11.6.2 测试CSRF
11.7 小结
第12章 安全性:授权和审计
12.1 使用Spring Cloud Gateway和OAuth2实现授权和角色管理
12.1.1 从Spring Cloud Gateway到其他服务的令牌中继
12.1.2 自定义令牌并传播用户角色
12.2 使用Spring Security和OAuth2保护API(命令式)
12.2.1 以OAuth2资源服务器的方式保护Spring Boot应用
12.2.2 使用Spring Security和JWT实现基于角色的访问控制
12.2.3 使用Spring Security和Testcontainers测试OAuth2
12.3 使用Spring Security和OAuth2保护API(反应式)
12.3.1 以OAuth2资源服务器的方式保护Spring Boot应用
12.3.2 使用Spring Security和Testcontainers测试OAuth2
12.4 使用Spring Security和Spring Data保护和审计数据
12.4.1 使用Spring Security和Spring Data JDBC审计数据
12.4.2 使用Spring Data和@WithMockUser测试数据审计
12.4.3 使用Spring Security和Spring Data R2DBC保护用户数据
12.4.4 使用@WithMockUser和Spring Data R2DBC测试数据审计和保护
12.5 小结
第四部分 云原生生产化
第13章 可观测性与监控
13.1 使用Spring Boot、Loki和Fluent Bit管理日志
13.1.1 使用Spring Boot记录日志
13.1.2 使用Loki、Fluent Bit和Grafana管理日志
13.2 使用Spring Boot Actuator和Kubernetes实现健康探针
13.2.1 使用Actuator定义健康探针
13.2.2 在Spring Boot和Kubernetes中配置健康探针
13.3 使用Spring Boot Actuator、Prometheus和Grafana实现度量和监控
13.3.1 使用Spring Boot Actuator和Micrometer配置度量
13.3.2 使用Prometheus和Grafana监控度量
13.3.3 在Kubernetes中配置Prometheus度量
13.4 使用OpenTelemetry和Tempo进行分布式跟踪
13.4.1 使用Tempo和Grafana管理跟踪
13.4.2 在Spring Boot中使用OpenTelemetry配置跟踪
13.5 使用Spring Boot Actuator管理和监控应用
13.5.1 在Spring Boot中监控Flyway迁移
13.5.2 暴露应用信息
13.5.3 生成和分析堆转储文件
13.6 小结
第14章 配置与Secret管理
14.1 在Kubernetes上配置应用
14.1.1 使用Spring Security保护配置服务器
14.1.2 使用Spring Cloud Bus刷新配置
14.1.3 使用Spring Cloud Config管理Secret
14.1.4 禁用Spring Cloud Config
14.2 在Kubernetes中使用ConfigMap和Secret
14.2.1 使用ConfigMap配置Spring Boot
14.2.2 是否应该使用Secret存储敏感信息
14.2.3 使用Spring Cloud Kubernetes在运行时刷新配置
14.3 使用Kustomize进行配置管理
14.3.1 使用Kustomize管理和配置Spring Boot应用
14.3.2 使用Kustomize管理多环境的Kubernetes配置
14.3.3 定义staging环境的配置Overlay
14.3.4 自定义环境变量
14.3.5 自定义ConfigMap
14.3.6 自定义镜像名称和版本
14.3.7 自定义副本数量
14.4 小结
第15章 持续交付与GitOps
15.1 部署流水线:验收阶段
15.1.1 为持续交付中的发布候选进行版本化
15.1.2 理解部署流水线的验收阶段
15.1.3 使用GitHub Actions实现验收阶段
15.2 Spring Boot的生产化配置
15.2.1 为生产化定义配置Overlay
15.2.2 为Spring Boot容器配置CPU和内存
15.2.3 将Spring Boot部署至生产环境
15.3 部署流水线:生产化阶段
15.3.1 理解部署流水线的生产化阶段
15.3.2 使用GitHub Actions实现生产化阶段
15.4 使用GitOps实现持续部署
15.4.1 使用Argo CD实现GitOps
15.4.2 组合到一起
15.5 小结
第16章 Serverless、GraalVM与Knative
16.1 使用Spring Native和GraalVM生成原生镜像
16.1.1 理解GraalVM和Spring Native
16.1.2 使用Spring Native引入GraalVM对Spring Boot的支持
16.1.3 将Spring Boot应用编译为原生镜像
16.2 基于Spring Cloud Function的Serverless应用
16.2.1 使用Spring Cloud Function构建Serverless应用
16.2.2 部署流水线:构建和发布
16.2.3 将Serverless应用部署在云中
16.3 使用Knative部署Serverless应用
16.3.1 搭建Knative平台
16.3.2 使用Knative CLI部署应用
16.3.3 使用Knative清单部署应用
16.4 小结
附录A 搭建开发环境
A.1 Java
A.2 Docker
A.3 Kubernetes
A.4 其他工具
A.4.1 HTTPie
A.4.2 Grype
A.4.3 Tilt
A.4.4 Octant
A.4.5 Kubeval
A.4.6 Knative CLI
附录B 使用DigitalOcean搭建生产环境中的Kubernetes
B.1 在DigitalOcean上运行Kubernetes集群
B.2 在DigitalOcean上运行PostgreSQL数据库
B.3 在DigitalOcean上运行Redis
B.4 使用Kubernetes Operator运行RabbitMQ
B.5 使用Helm chart运行Keycloak
B.6 运行Polar UI
B.7 删除所有的云资源
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜