新書推薦:
《
道德经新注 81幅作者亲绘哲理中国画,图文解读道德经
》
售價:HK$
143.4
《
清俗纪闻
》
售價:HK$
98.6
《
镜中的星期天
》
售價:HK$
76.2
《
世界前沿技术发展报告2024
》
售價:HK$
188.2
《
可转债——新手理财的极简工具
》
售價:HK$
65.0
《
新加坡教育:神话与现实
》
售價:HK$
96.3
《
“口袋中的世界史”第一辑·冷战中的危机事件
》
售價:HK$
291.2
《
绝美的奥伦堡蕾丝披肩编织
》
售價:HK$
177.0
|
編輯推薦: |
以项目为导向,使用Spring实现云原生模式,处理安全性、韧性和可扩展性等问题;
提供丰富的实战案例,构建和测试命令式与反应式应用,在Kubernetes上实现配置和可观测性;
采用持续交付和GitOps,从代码到生产,一步步构建云原生应用,让学习成果即刻转化为实际价值。
|
內容簡介: |
本书提供了一个以项目为导向的云原生Spring实践指南,将帮助你总揽日益复杂的云计算环境,并学习如何将模式和技术结合在一起,建立一个真正的云计算原生系统并将其投入生产。本书分为四个部分,共计16章。第一部分内容为此次从代码到生产的云原生之旅奠定了基础,帮助你更好地理解本书其他部分所涉及的主题。第二部分介绍了使用Spring Boot和Kubernetes构建生产就绪的云原生应用的主要实践和模式。第三部分涵盖了云中分布式系统的基本属性和模式,包括韧性、安全性、可扩展性和API网关,以及反应式编程和事件驱动架构。第四部分使你的云原生应用为生产做好准备,解决可观测性、配置管理、Secret管理和部署策略等问题,并涵盖了Serverless和原生镜像。
|
關於作者: |
托马斯·维塔莱(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。
|
目錄:
|
目录
第 一部分 元原生基础
第 1章 云原生简介
1.1什么是云原生?
1.1.1云原生的3P
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 基于服务架构的云原生应用
小结
第 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 探索项目中所使用的模式和技术
小结
第二部分 云原生开发
第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实现提交阶段
小结
第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 在运行时刷新配置
小结
第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演进数据库
小结
第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 使用Dockerfiles容器化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.6 小结
第三部分 云原生分布式系统
第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.4.1 使用Spring Session Data Redis处理会话
9.5 使用Kubernetes Ingress管理外部访问
9.5.1 理解Ingress API和Ingress Controller
9.5.2 使用Ingress对象
小结
第 10章 事件驱动应用与函数
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.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 实现事件生产者以及原子性问题
小结
第 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
小结
第 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测试数据审计和保护
小结
第四部分 云原生生产化
第 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 生成和分析堆转储文件
小结
第 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 自定义副本数量
小结
第 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 组合到一起
小结
第 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清单部署应用
小结
附录A 搭建开发环境
附录B 使用DigitalOcean搭建生产环境的Kubernetes
|
|