封面
版权信息
版权
版权声明
内容提要
译者序
前言
致谢
关于本书
本书的目标读者
本书组织结构
关于代码
关于作者
封面插图
资源与支持
配套资源
提交勘误
扫码关注本书
与我们联系
关于异步社区和异步图书
第1章 欢迎迈入云世界,Spring
1.1 微服务架构的演进
1.1.1 n层架构
1.1.2 什么是单体架构
1.1.3 什么是微服务
1.1.4 为什么要改变构建应用的方式
1.2 使用Spring开发微服务
1.3 我们在构建什么
1.4 本书涵盖什么内容
1.4.1 在本书中你会学到什么
1.4.2 为什么本书与你有关
1.5 云和基于微服务的应用程序
1.5.1 使用Spring Boot来构建微服务
1.5.2 云计算到底是什么
1.5.3 为什么是云和微服务
1.6 微服务不只是编写代码
1.7 核心开发模式
1.8 路由模式
1.9 客户端弹性模式
1.10 安全模式
1.11 日志记录和跟踪模式
1.12 应用程序度量模式
1.13 构建/部署模式
1.14 小结
读者服务:
第2章 使用Spring Cloud探索微服务世界
2.1 什么是Spring Cloud
2.1.1 Spring Cloud Config
2.1.2 Spring Cloud服务发现
2.1.3 Spring Cloud LoadBalancer和Resilience4j
2.1.4 Spring Cloud API Gateway
2.1.5 Spring Cloud Stream
2.1.6 Spring Cloud Sleuth
2.1.7 Spring Cloud Security
2.2 通过示例来介绍Spring Cloud
2.3 如何构建云原生微服务
2.3.1 代码库
2.3.2 依赖
2.3.3 配置
2.3.4 后端服务
2.3.5 构建、发布和运行
2.3.6 进程
2.3.7 端口绑定
2.3.8 并发
2.3.9 可任意处置
2.3.10 开发环境/生产环境等同
2.3.11 日志
2.3.12 管理进程
2.4 确保本书的示例是有意义的
2.5 使用Spring Boot和Java来构建微服务
2.5.1 设置环境
2.5.2 从骨架项目开始
2.5.3 引导Spring Boot应用程序:编写引导类
2.6 小结
读者服务:
第3章 使用Spring Boot构建微服务
3.1 架构师的故事:设计微服务架构
3.1.1 分解业务问题
3.1.2 建立服务粒度
3.1.3 定义服务接口
3.2 何时不要使用微服务
3.2.1 构建分布式系统时的复杂性
3.2.2 服务器或容器散乱
3.2.3 应用程序的类型
3.2.4 数据事务和一致性
3.3 开发人员的故事:用Spring Boot和Java构建微服务
3.3.1 构建微服务的入口:Spring Boot控制器
3.3.2 将国际化添加到许可证服务
3.3.3 实现Spring HATEOAS来显示相关的链接
3.4 DevOps故事:构建运行时的严谨性
3.4.1 服务装配:打包和部署微服务
3.4.2 服务引导:管理微服务的配置
3.4.3 服务注册和发现:客户端如何与微服务通信
3.4.4 传达微服务的健康状况
3.5 将视角综合起来
3.6 小结
读者服务:
第4章 欢迎来到Docker
4.1 容器还是虚拟机
4.2 Docker是什么
4.3 Dockerfile
4.4 Docker Compose
4.5 集成Docker与微服务
4.5.1 构建Docker镜像
4.5.2 使用Spring Boot创建Docker镜像
4.5.3 使用Docker Compose启动服务
4.6 小结
读者服务:
第5章 使用Spring Cloud Config服务器端控制配置
5.1 关于管理配置(和复杂性)
5.1.1 配置管理架构
5.1.2 实施选择
5.2 构建Spring Cloud Config服务器端
5.2.1 创建Spring Cloud Config引导类
5.2.2 使用带有文件系统的Spring Cloud Config服务器端
5.2.3 创建服务的配置文件
5.3 将Spring Cloud Config与Spring Boot客户端集成
5.3.1 建立许可证服务的Spring Cloud Config服务依赖项
5.3.2 配置许可证服务以使用Spring Cloud Config
5.3.3 使用Spring Cloud Config服务器端连接数据源
5.3.4 使用@ConfigurationProperties直接读取属性
5.3.5 使用Spring Cloud Config服务器端刷新属性
5.3.6 使用Spring Cloud Config服务器端和Git
5.3.7 使用Spring Cloud Config服务集成Vault
5.3.8 Vault UI
5.4 保护敏感配置信息
5.4.1 创建对称加密密钥
5.4.2 加密和解密属性
5.5 最后的想法
5.6 小结
读者服务:
第6章 关于服务发现
6.1 我的服务在哪里
6.2 云中的服务发现
6.2.1 服务发现架构
6.2.2 使用Spring和Netflix Eureka进行服务发现实战
6.3 构建Spring Eureka服务
6.4 通过Spring Eureka注册服务
6.4.1 Eureka的REST API
6.4.2 Eureka仪表板
6.5 使用服务发现来查找服务
6.5.1 使用Spring Discovery Client查找服务实例
6.5.2 使用带有Load Balancer功能的Spring Rest模板调用服务
6.5.3 使用Netflix Feign客户端调用服务
6.6 小结
读者服务:
第7章 当糟糕的事情发生时:使用Spring Cloud和Resilience4j的弹性模式
7.1 什么是客户端弹性模式
7.1.1 客户端负载均衡模式
7.1.2 断路器模式
7.1.3 后备模式
7.1.4 舱壁模式
7.2 为什么客户端弹性很重要
7.3 实现Resilience4j
7.4 设置许可证服务以使用Spring Cloud和Resilience4j
7.5 实现断路器
7.5.1 向组织服务添加断路器
7.5.2 定制断路器
7.6 后备处理
7.7 实现舱壁模式
7.8 实现重试模式
7.9 实现限流器模式
7.10 ThreadLocal和Resilience4j
7.11 小结
读者服务:
第8章 使用Spring Cloud Gateway进行服务路由
8.1 什么是服务网关
8.2 Spring Cloud Gateway简介
8.2.1 建立Spring Cloud Gateway项目
8.2.2 配置Spring Cloud Gateway与Eureka进行通信
8.3 在Spring Cloud Gateway中配置路由
8.3.1 通过服务发现自动映射路由
8.3.2 使用服务发现手动映射路由
8.3.3 动态重新加载路由配置
8.4 Spring Cloud Gateway的真正威力:断言和过滤器工厂
8.4.1 内置的断言工厂
8.4.2 内置的过滤器工厂
8.4.3 自定义过滤器
8.5 构建前置过滤器
8.6 在服务中使用关联ID
8.6.1 UserContextFilter:拦截传入的HTTP请求
8.6.2 UserContext:使服务易于访问HTTP首部
8.6.3 自定义RestTemplate和UserContextInteceptor:确保关联ID被传播
8.7 构建接收关联ID的后置过滤器
8.8 小结
读者服务:
第9章 保护微服务
9.1 OAuth2是什么
9.2 Keycloak简介
9.3 从小事做起:使用Spring和Keycloak来保护单个端点
9.3.1 将Keycloak服务添加到Docker
9.3.2 设置Keycloak
9.3.3 注册客户端应用程序
9.3.4 配置O-stock用户
9.3.5 对O-stock用户进行身份认证
9.4 使用Keycloak保护组织服务
9.4.1 将Spring Security和Keycloak JAR添加到各个服务
9.4.2 配置服务以指向Keycloak服务
9.4.3 定义什么和谁可以访问服务
9.4.4 传播访问令牌
9.4.5 从JWT中解析自定义字段
9.5 关于微服务安全的一些总结
9.5.1 对所有业务通信使用HTTPS/安全套接字层(SSL)
9.5.2 使用服务网关访问微服务
9.5.3 将服务划分到公共API和私有API
9.5.4 通过封锁不需要的网络端口来限制微服务的攻击面
9.6 小结
读者服务:
第10章 使用Spring Cloud Stream的事件驱动架构
10.1 消息传递、EDA和微服务的案例
10.1.1 使用同步请求-响应方式来传达状态变化
10.1.2 使用消息传递在服务之间传达状态更改
10.1.3 消息传递架构的缺点
10.2 Spring Cloud Stream简介
10.3 编写简单的消息生产者和消费者
10.3.1 在Docker中配置Apache Kafka和Redis
10.3.2 在组织服务中编写消息生产者
10.3.3 在许可证服务中编写消息消费者
10.3.4 在实际操作中查看消息服务
10.4 Spring Cloud Stream用例:分布式缓存
10.4.1 使用Redis来缓存查找
10.4.2 定义自定义通道
10.5 小结
读者服务:
第11章 使用Spring Cloud Sleuth和Zipkin进行分布式跟踪
11.1 Spring Cloud Sleuth与关联ID
11.1.1 将Spring Cloud Sleuth添加到许可证服务和组织服务中
11.1.2 剖析Spring Cloud Sleuth跟踪
11.2 日志聚合与Spring Cloud Sleuth
11.2.1 Spring Cloud Sleuth/ELK技术栈实现实战
11.2.2 在服务中配置Logback
11.2.3 在Docker中定义和运行ELK技术栈应用程序
11.2.4 配置Kibana
11.2.5 在Kibana中搜索Spring Cloud Sleuth的跟踪ID
11.2.6 使用Spring Cloud Gateway将关联ID添加到HTTP响应
11.3 使用Zipkin进行分布式跟踪
11.3.1 设置Spring Cloud Sleuth和Zipkin依赖项
11.3.2 配置服务以指向Zipkin
11.3.3 配置Zipkin服务器端
11.3.4 设置跟踪级别
11.3.5 使用Zipkin跟踪事务
11.3.6 可视化更复杂的事务
11.3.7 捕获消息传递踪迹
11.3.8 添加自定义跨度
11.4 小结
读者服务:
第12章 部署微服务
12.1 构建/部署管道的架构
12.2 在云中设置O-stock的核心基础设施
12.2.1 使用亚马逊的RDS创建PostgreSQL数据库
12.2.2 在AWS中创建Redis集群
12.3 超越基础设施:部署O-stock和ELK
12.3.1 创建运行EKL的EC2实例
12.3.2 在EC2实例中部署ELK技术栈
12.3.3 创建一个EKS集群
12.4 构建/部署管道实战
12.5 创建构建/部署管道
12.5.1 设置GitHub
12.5.2 使服务能够在Jenkins中构建
12.5.3 理解并生成管道脚本
12.5.4 创建Kubernetes管道脚本
12.6 关于构建/部署管道的总结
12.7 小结
读者服务:
附录A 微服务架构最佳实践
A.1 Richardson成熟度模型
A.2 Spring HATEOAS
A.3 外部化配置
A.4 持续集成和持续交付
A.5 监控
A.6 日志记录
A.7 API网关
读者服务:
附录B OAuth2授权类型
B.1 密码授权类型
B.2 客户端凭据授权类型
B.3 授权码授权类型
B.4 隐式授权类型
B.5 如何刷新令牌
读者服务:
附录C 监控微服务
C.1 引入Spring Boot Actuator进行监控
C.1.1 添加Spring Boot Actuator
C.1.2 启用Actuator端点
C.2 设置Micrometer和Prometheus
C.2.1 了解Micrometer和Prometheus
C.2.2 实现Micrometer和Prometheus
C.3 配置Grafana
C.4 小结
读者服务:
更新时间:2022-06-17 10:27:22