万本电子书0元读

万本电子书0元读

顶部广告

云原生Spring实战电子书

以项目为导向,使用Spring实现云原生模式,处理安全性、韧性和可扩展性等问题; 提供丰富的实战案例,构建和测试命令式与反应式应用,在Kubernetes上实现配置和可观测性; 采用持续交付和GitOps,从代码到生产,一步步构建云原生应用,让学习成果即刻转化为实际价值。

售       价:¥

纸质售价:¥132.80购买纸书

9人正在读 | 0人评论 6.4

作       者:[美]托马斯·维塔莱(Thomas Vitale) 著

出  版  社:人民邮电出版社有限公司

出版时间:2024-03-01

字       数:61.4万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
本书提供了一个以项目为导向的云原生Spring实践指南,将帮助你总揽日益复杂的云计算环境,并学习如何将模式和技术结合在一起,建立一个真正的云计算原生系统并将其投生产。本书分为四个部分,共计16章。第一部分内容为此次从代码到生产的云原生之旅奠定了基础,帮助你更好地理解本书其他部分所涉及的主题。第二部分介绍了使用Spring Boot和Kubernetes构建生产就绪的云原生应用的主要实践和模式。第三部分涵盖了云中分布式系统的基本属性和模式,包括韧性、安全性、可扩展性和API网关,以及反应式编程和事件驱动架构。第四部分使你的云原生应用为生产做好准备,解决可观测性、配置管理、Secret管理和部署策略等问题,并涵盖了Serverless和原生镜像。<br/>【推荐语】<br/>以项目为导向,使用Spring实现云原生模式,处理安全性、韧性和可扩展性等问题; 提供丰富的实战案例,构建和测试命令式与反应式应用,在Kubernetes上实现配置和可观测性; 采用持续交付和GitOps,从代码到生产,一步步构建云原生应用,让学习成果即刻转化为实际价值。<br/>【作者】<br/>托马斯·维塔莱(Thomas Vitale)是一名软件工程师和架构师,专门构建云原生、有韧性和安全的企业应用。他在丹麦的Systematic公司设计和发软件解决方案,在那里他一直致力于为云原生领域提供现代化的平台和应用,专注于发体验和安全性。 他主要关注的领域是Java、Spring Boot、Kubernetes、Knative和一般的云原生技术。托马斯支持持续交付实践,并相信协作的文化,致力于为用户、消费者和企业交付价值。他喜欢为Spring Security和Spring Cloud等源项目作贡献,并与社区分享知识。 托马斯拥有意大利都灵理工大学的计算机工程硕士学位,主要研究方向是软件领域。他获得CNCF Certified Kubernetes Application Developer、Pivotal Certified Spring Professional以及RedHat Certified Enterprise Appli- cation Developer认证。他在各种活动中的演讲主题涵盖SpringOne、Spring I/O、KubeCon CloudNativeCon、Devoxx、GOTO、JBCNConf、DevTalks和J4K。<br/>
目录展开

版 权

内容提要

译者序

前 言

致 谢

关于本书

关于作者

译者介绍

服务与支持

第一部分 云原生基础

第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 删除所有的云资源

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部