Spring Cloud Alibaba核心技术与实战案例
本书从分布式系统的基础概念讲起,逐步深入分布式系统中间件Spring Cloud Alibaba进阶实战,重点介绍了使用Spring Cloud Alibaba框架整合各种分布式组件的完整过程,让读者不但可以系统地学习分布式中间件的相关知识,
而且还能对业务逻辑的分析思路、实际应用开发有更为深入的理解。
全书共分5大章节,第1章开篇部分,讲解分布式系统的演进过程和Spring Cloud Alibaba概述及版本的选择,以及单体架构/微服务架构的优缺点;第2章讲解如何使用Spring Cloud Alibaba实现RPC通讯;第3章在介绍主流Nacos组件时,介绍了三元的概念以及使用Nacos实现注册中心和配置中心,包含环境的动态切换、配置的动态刷新、通用型配置、版本回滚等核心技术,为微服务环境提供基础的架构;第4章介绍了负责限流和熔断降级的Sentinel组件,包含收集系统运行状态、流量控制、熔断降级、热点、授权、系统规则、流控的异常处理、熔断的异常处理、规则持久化等;第4章介绍了网关常用案例,以及在软件项目中常用的高频使用技术点,力求为开发微服务项目的程序员提供一个快速学习的捷径。
本书内容由浅入深、结构清晰、实例丰富、通俗易懂、实用性强,适合需要全方位学习Spring Cloud Alibaba相关技术的人员,也适合培训学校作为培训教材,还可作为大、中专院校相关专业的教学参考书。
高洪岩
----------------------------
高洪岩,微软中国项目经理,有10年Java开发和项目管理经验,精通Java语言,擅长Java EE、分布式、微服务、高性能服务器架构、智能报表、多线程和高并发相关的技术内容。曾出版《Java多线程编程核心技术》《Java并发编程:核心方法与框架》《NIO与Socket编程技术指南》《Java EE核心框架实战第2版》《Jasper Reports+iReport报表开发详解》《Android学习精要》《虚拟化高性能NoSQL存储案例精粹Redis+Docker》《Java Web实操》等图书。
第1章 Spring Cloud Alibaba 介绍
1.1 Cloud 介绍.2
1.1.1? Spring Cloud 主要功能 2
1.1.2? Spring Cloud 主要组件 2
1.2 Cloud Alibaba 介绍 .3
1.2.1? Spring Cloud Alibaba 主要功能 3
1.2.2? Spring Cloud Alibaba 主要组件 4
1.3 确定使用的版本4
1.3.1? 确定 Spring Cloud+Spring Boot 的版本 4
1.3.2? 确定 Spring Cloud+Spring Cloud Alibaba+Spring Boot 的版本 7
1.4 单体架构和优缺点8
1.5 微服务架构和优缺点 .9
第2章 RPC 远程通讯和 Nacos 注册中心
2.1 Nacos 与 MySQL 关联 12
2.2 创建 my-parent 父模块 14
2.3 创建 my-api 模块. 14
2.4 使用 Nacos+RestTemplate 实现 RPC 通讯和服务提供者集群. 20
2.4.1? 创建服务提供者模块 20
2.4.2? 创建服务消费者模块.37
2.5 Nacos 领域模型. 72
2.5.1? 创建 Namespace73
2.5.2? 创建服务提供者模块.75
2.5.3? 创建服务消费者模块.77
2.5.4? 运行效果.79
2.6 使用 Nginx 搭建 Nacos 集群环境 80
2.6.1? 搭建 Nacos 集群环境 .81
2.6.2? 创建服务提供者模块.84
2.6.3? 创建服务消费者模块.86
2.6.4? 运行效果.87
2.7 使用 Open Feign 实现 RPC 通讯 . 89
2.7.1? 使用 Open Feign 实现 RPC 通讯89
2.7.2? 使用 Spring-Cloud-Loadbalancer 实现 Open Feign 负载均衡 .109
第3章 Nacos 配置中心
3.1 使用 Nacos 作为配置中心 113
3.1.1? 创建服务提供者和服务消费者的 Namespace 和 DataId.113
3.1.2? 创建服务提供者模块118
3.1.3? 创建服务消费者模块120
3.2 结合 Nacos 实现运行环境的切换 . 122
3.3 结合 Nacos 实现配置动态刷新:自定义配置 125
3.4 结合 Nacos 实现配置动态刷新:系统配置(数据库连接池)
. 131
3.5 实现通用配置的复用 . 137
3.6 实现配置的版本回滚 . 144
第4章 Sentinel 限流与熔断降级
4.1 Sentinel 的介绍 . 147
4.1.1? Sentinel 具有的特性和支持的功能 147
4.1.2? Sentinel 的开源生态.148
4.1.3? Sentinel 的用户.149
4.1.4? Sentinel 的使用方式.149
4.1.5? Sentinel 的历史.149
4.1.6? Sentinel 中的基本概念150
4.1.7? Sentinel 功能和设计理念 150
4.1.8? Sentinel 是如何工作的152
4.1.9? 滑动窗口.152
4.2 搭建 Sentinel 控制台. 153
4.3 使用 Sentinel 收集系统运行状态 155
4.3.1? 创建服务提供者模块 .155
4.3.2? 创建服务消费者模块156
4.3.3? 运行效果.158
4.4 使用 Sentinel 实现流量控制 . 159
4.4.1? 查看资源运行状态159
4.4.2? 创建服务提供者模块 .159
4.4.3? 创建服务消费者模块 .164
4.4.4? 配置流控界面解释171
4.4.5? 测试:阈值类型(QPS)- 单机阈值(5)- 是否集群(否)-
流控模式(直接)- 流控效果(快速失败) 173
4.4.6? 测试:阈值类型(QPS)- 单机阈值(1000)- 是否集群(否)-
流控模式(直接)- 流控效果(Warm Up) 174
4.4.7? 测试:阈值类型(QPS)- 单机阈值(2)- 是否集群(否)-
流控模式(直接)- 流控效果(排队等待) 176
4.4.8? 测试:阈值类型(QPS)- 单机阈值(5)- 是否集群(否)-
流控模式(关联)- 流控效果(快速失败) 177
4.4.9? 测试:阈值类型(QPS)- 单机阈值(5)- 是否集群(否)-
流控模式(链路)- 流控效果(快速失败) 179
4.4.10? 测试:阈值类型(并发线程数)- 单机阈值(5)- 集群(否)-
流控模式(直接) 180
4.5 使用 Sentinel 实现熔断降级 . 181
4.5.1? 慢调用比例 / 异常比例 / 异常数.182
4.5.2? 热点204
4.5.3? 授权规则.222
4.5.4? 系统规则.227
4.5.5? 流控异常处理.233
4.5.6? 熔断异常处理.239
4.6 规则持久化 . 249
4.6.1? 拉模式:使用文件249
4.6.2? 推模式:使用 Nacos 258
第5章 网关 Gateway
5.1 网关的介绍和作用 269
5.2 网关谓词工厂 270
5.3 网关谓词 271
5.3.1? 谓词 Path:实现路由转发.271
5.3.2? 谓词 Path:根据 ip:port 和 serviceName 转发到服务 272
5.3.3? 谓词 Path:实现网关跨域.274
5.3.4? 谓词 After 277
5.3.5? 谓词 Before 279
5.3.6? 谓词 Between 280
5.3.7? 谓词 Cookie .281
5.3.8? 谓词 Header 284
5.3.9? 谓词 Query 286
5.3.10? 谓词 Host 287
5.3.11? 谓词 Method .289
5.3.12? 谓词 RemoteAddr291
5.3.13? 谓词 Weight 292
5.3.14? 自定义谓词 293
5.4 路由过滤器 . 297
5.4.1? 自带路由过滤器 .297
5.4.2? 自定义路由过滤器299
5.5 全局过滤器 . 302
5.5.1? 自定义全局过滤器302
5.5.2? 运行效果.304