Spring Cloud微服务全栈技术与案例解析

Spring Cloud微服务全栈技术与案例解析

下载地址: https://pan.baidu.com/s/1NJmgFlQmNmFG2RkrYO7Q7Q

扫码下面二维码关注公众号回复100017 获取分享码

image.png

本书目录结构如下:

Spring Cloud与微服务概述… ··2

1.1 传统的单体应用………………… ··2

1.1.1 改进 应用的架构…………

1.1.2 务靠拢 ……………… ·3

1.2 什么是微服务…………………… ·4

1.2.l 用微 务架构的优势和

劣势 ……..... ...... .. ... ... 4

1.2.2 重构前的准备工作……………

1.3 什么是 Spring Cloud ……………… 5

1.3.l Spring oud 块介绍……… ·5

1.3.2 Spring Cloud 版本 ……… ·6

1.4

本章小结…. ...... ..……… ·······7

章实战前的准备工作…………

2.1 开发环境的准备………………… 8

2.2 Spring Boot 人门 …… …………… ··9

2.2. l Spring Boot 简介 ……………"

2.2.2

搭建 Spring Boot 项目……… ··9

2.2.3 编写第一个阻ST 口……·· 11

2.4 读取配置文件 ………………· 11

2.2.5 profiles 境配置 ………… 13

2.2.6 热部署 …………………….. 13

2.2.7 actuator 监控 ………………. 15

2.2.8 统一异常 ……………… 16

2.2.9 步执行…………………… 18

2.2.10 口………… …… ·21

2.3 本章小结…………………………

第二部分基础篇

Eureka注册中心……………·26

3.1 Eureka ……………………………·26

3.2 使用 Eureka 编写注册中心服务… 27

3.3

编写服务提供者…………... ....… 29

3.3.l 建项目注册到 Eureka ……··29

3.3.2 编写提 口……………… 30

3.4 者…… .... ..……… ·31

3.4. l 直接调用接口……………... 31

仅供非 业用途或 习使用仅供非商业用途或交流学习使用

3.4.2 通过 Eureka 来消费接口 …… 32

3.5 开启 Eureka 认证………………… 33

3.6 Eureka 高可用搭建…………… ·33

3.6.1 高可用原理………………… 33

3.6.2 搭建步骤………………… ··34

3.7 常用配置讲解……. .. ...………… 35

3.7.1 关闭自我保护…… ………… 35

3.7.2 自定义 Eureka Instance ID … 35

3.7.3 自定义实例跳转链接… ·36

3.7.4 快速移除已经失效的服务

信息……....................... 37

3.8 扩展使用……………………… 38

3.8.1 Eureka REST API …………… 38

3.8.2 元数据使用……………… ·40

3.8.3 EurekaClient 使用………….. 41

3.8.4 健康检查…… …………… 43

3.8.5 服务上下线监控………… ··45

3.9 本章小结…·…….......………… ·46

章客户端负载均衡阳bbon …… ··47

4.1 Ribbon …………………………… 47

4.1.l Ribbon 模块………………… 47

4.1.2 Ribbon 使用………………… 48

4.2 RestTemplate 结合 Ribbon 使用… 49

4.2.l 使用 RestTemplate 与整合

Ribbon …·....................… 49

4.2.2 RestTemplate 负载均衡示例… 52

4.2.3 @LoadBalanced 注解原理….. 53

4.2.4 Ribbon API 用… ………… ·57

4.2.5 Ribbon 饿加载…… ……… 58

4.3

负载均衡策略介绍….............. 59

VII

4.4 自定义负载策略······ ·······…… 60

4.5 配置详解……………………….. 61

4.5.1 常用配置……………………“

4.5.2 代码配置 Ribbon …………… 62

4.6 重试机制………………………. 63

4.7 本章小结………………·……. ·64

章声明式REST客户端Feign··· ·· 65

5.1 使用 Feign 调用服务接口……… ·65

5.1.1 Spring Cloud 集成 Feign··· 66

5.1.2 使用 Feign 调用接口……… 66

5.2 自定义 Feign 的配置……………. 67

5.2.1 日志配置…………………… 67

5.2.2 契约配置… ……………….. 69

5.2.3 Basic 认证配 …………….. 69

5.2.4 超时时间配 ……………… 70

5.2.5 客户端组件配置 …………… ·71

5.2.6 GZIP 压缩配置 …………… ·72

5.2.7 编码器解码器配置… ……· ·72

5.3 脱离 Spring Cloud 使用 Feign ….. 73

5.3.1 原生注解方式 ……………… 73

5.3.2 构建 Feign …………… 74

5.3.3 其他配置…………………… 75

5.4

本章小结………............... ··76

Hystrix 服务容错处理……... 77

6.1 Hystrix …………………………… 77

6.1.1 Hystrix 简单使用 ………… 77

6.1.2 回退支持 ……………

··78

6.1.3 信号量策略配置………… 79

6.1.4 线程隔离策略配置 ………… 79

仅供非商 用途或交流学习使用仅供非商 用途或交流学习使用

VIII

6.1.5 结果缓存 …………………… 80

6.1.6 缓存清除 ……………… 81

6.1.7 合并请求 ………………… 83

6.2 Spring Clo 中使用 Hystrix ·84

6.2.1 简单使用 ……………… 84

6.2.2 配置详解 …………………… 85

6.2.3 Feign 整合 Hystrix 务容错 88

6.2.4 Feign 禁用 Hystrix ……… ··90

6.3 Hystrix 监控………·…………….. 91

6.4 整合 Dashboard 查看监控数据… 92

6.5 Turbine 聚合集群数据…………… 94

6.5. l Turbine ………… ··94

6.5.2 context-path 导致监控失败 ….. 95

6.6 本章小结……… …………… 95

API网关··

7.l Zuul 简介……………………… 96

7.2 使用 Zuul 构建微服务网关…….. 97

7.2.l 简单使用…… ………… 97

7.2.2 Eureka ……………… ··98

7.3 Zuul 路由配 ………………… 98

7.4 Zuul 过滤器讲解………………·”

7.4.l 谑器类型 ……………… 100

7.4.2 请求生命周期 ……… 100

7.4.3 使用过滤器… …………… 101

7.4.4 掘器禁用 ……… 103

7.4.5 过谑器中传递数据 …… 103

7.4.6 过滤器拦截请求 ………· 104

7.4.7 过洁器中异常处理 ………… 106

7.5 Zuul 容错和回退 …......……·· 108

7.5.1 容错机制………………… 108

7.5.2 回退机制 ………………. · 109

7.6 Zuul 高可用… …·

………….. 111

7.7

章小结 .... .. ……......…… · 111

第三部分实

章分布式配置管理……· .. 114

8.1 自研配置管理框架 Smconf

简介 ………………………….. 114

8.2 Smconf 作原理… ………… 115

8.3 Smconf 部署……………………. 116

8.3.1 Mongodb 安装 …………….. 116

8.3.2 Zookeeper 安装 ………….. 117

8.3.3 Smconf Server 部署 ……… ·· 118

8.4 项目中集成 Smconf·· ………….. 119

8.4.l 集成 Smconf ………… …. 119

8.4.2 使用 Smconf ……………… 120

8.4.3 置更新回调……………. 121

8.5 Smconf 详细使用………… .. 122

8.5.1 源码编译问题………… ·122

8.5.2 后台账号管理 ……… 122

8.5 3 REST API …………………·123

8.6 Smconf 源码解析……………… 125

8.6.l li ent 启动……………… 125

8.6.2 启动加载配置 ……………·· 127

8.6.3 配置修改推送原理 ………... 128

8.7

小结……………... .. ...... .. 129

Sleuth服务眼踪………·

130

9. I Spring oud 集成 Sleuth ………· 130

9.2 整合 Logstash ………………… 131

9.2.l ELK 简介……………… 131 仅供非商业用途或交流学习使用

输出 JSON 格式日志 ……... 131

9.3 整合 Zipkin …………………… 133

9.3.1 Zipkin 数据收集服务 133

9.3.2 项目集成 Zipkin 发送调用链

数据 ………………………. 134

9.3.3

抽样采集数据 …………… 135

9.3.4 RabbitMq 代替 发送

调用链数据 ……………

135

9.3.5 Elasticsearch 存储调用链

数据

……………·· 136

9.4 本章小结……………………….. 137

10章微服务之间调用的安全

认证

…….. 138

10.1 什么是用 …… …………· .. 138

10.2 创建统 的认证服 …… …. 139

10.2.1 表结构… ………………. 139

10.2.2 JWT 工具类封装 ………. 139

10.2.3

认证接口

……………·141

10.3 服务提供方进行调用认证…· 142

10.4 服务消费方申 Token ……… 143

10.5 Feign 调用前统一申请 Token

传递到调用的服务中 …… 145

10.6 Zuul 中传递 Token 到路由的

服务中……………………… 147

10.7 本章小结………………. . . 148

11

Spring Boot Adrnin….. 149

11.1 Spring Boot Adm in 使用

方法…………………………· 149

11.1.1

Spring Boot Admin

项目 ……………………· 149

IX

11.1.2 将服务注册到 Spring Boot

Admrn· ………………·150

11.1.3 如何在 Admin 查看各个

服务的日志 …………….. 151

11.2 开启认证…… ……………….. 152

11.3 集成 Eureka …………………… 153

11.4

集成 Turbine ………… ……. 154

11.5 监控服务… …··…

……. 155

11.5.1 邮件警报 …………… .. 156

11.5.2 自定义钉钉警报………… 156

11.6 本章小结………………… 159

12章服务的API文档管理….. 160

12.1 Swagger 介………………. 160

12.2 集成 Swagger 管理 API

文档……· …………………… 161

12.2.1 封装 Swagger Starter ……. 161

12.2.2 在项目 集成 Swagger

starter …………………… 162

12.2.3

使用 Swagger 生成文档 ... 162

12.2.4 在线测试接口 …………. 163

12.3 Swagger 注解 …………………. 164

12.4 Eureka 控制台快速查看 Swagger

文档 ……………………… 169

12.5 本章 结… …………………… 169

第四部分高级篇

13

API网关扩展……………….. 172

13.1 用户认证…x

13.Ll 动态管理不需要拦截的 API

求…………………·· 172

13.1.2 创建认证的用户服 …… 174

13.1.3 路由之前的认证………·· 175

13.1.4 向下游微服务中传递认证

之后的用户信息………… 176

13.1.5 部服务间的用户信息

传递………… ………· 177

13.2 服务限流……………………·· 179

13.2.1 限流算法………………·· 179

13.2.2 单节点限流 ………… 179

13.2.3 集群限流 ………………·· 184

13.2.4 具体服务限流………… 187

13.2.5 具体接口限流………….. 188

13.3 服务降级……………………… 194

13.4 灰度发布…………………… 196

13.4.1 原理讲解… ………·· 196

13.4.2 根据用户做灰度发布…… 197

13.4.3 根据 IP 做灰度发布…… ··200

13.5 本章小结………… ... .. .. …… 200

14章微服务之缓存…………… 201

14.l Guava Cache 本地缓存……… 201

14.Ll Guava Cache 简介……… 201

14.1.2 代码示例……………… ·· 202

14.1.3 回收策略……………… ··202

14.2

Redis 缓存….. .. ...... .. ...... ... 203

14.2.1 Redistemplate 操作

Redis …·………………·203

14.2.2 Repository 操作 Redis …204

14.2.3 Spring Cache 缓存数据 ··206

14.2.4 Spring Cache 支持对

每个缓存的时间配 ·…… 211

14.2.5 缓存异常处理… ……… ·212

14.2.6 自定义缓存工具类……… 214

14.3 防止缓存穿透方案.... ...…….. 216

14.3.1 么是缓存穿透 ………… 216

14.3.2 缓存穿透的危害… ……… 216

14.3.3 解决方案 ………………-- 217

14.3.4 滤器 ………… 217

14.3.5 代码示例……………… 217

14.4 防止缓存 崩方案…………… 219

14.4.1 什么是缓存雪崩 ………… 219

14.4.2 缓存雪崩的危害 ………… 219

14.4.3 解决方 …… ……….. 219

14.4.4 代码示例 ………… …-- 219

14.4.5 分布式锁方式………… ··220

14.5 本章小结…… ……………… 221

15章微服务之存储…………… ·222

15.l 存储选型……......………… 222

15 .2 Mongodb ……………………… 223

15.2.1 集成 Spring Data Mongodb …223

15.2.2 添加数据操作………… ··223

15.2.3 索引使用……………… ··225

15.2.4 修改数据操作 ………… ··227

15.2.5 删除数据操作…… …… 228

15.2 查询数据操作 ………… ··229

15.2.7 GridFS 操作 …………….. 231

15.2.8 Repository 方式操作

数据 …………………-- 232

15.2.9 自增 ID 实现 …………… ·23615.2.10 量更新扩展 ………… ·239

15.3 Mysql ………………………… 243

15.3.1 pring JdbcTemplate … 243

15.3.2 JdbcTemplate 代码 例… ·243

15.3.3 JdbcTemplate 操作

Mysql ··. ....... 244

15.3.4

JdbcTemplate 使用

……. .. ... .....

·244

15.3.5 常见 ……………… ·248

15 .4 Elasticsearch …………………… 251

15.4. l Sprin Data

Elasticsearch ·………… 251

15.4.2 Repository 例……… ... 251

15.4.3 ElasticsearchTemplate

示例 ……··.......... …… 254

15.4.4 引构建方式 ………… 257

15.5 本章小结…………………….. 259

16章微服务之分布式事物解决

方案…··........…….. 260

16.1 两阶段型…………………… 260

16.2 TCC 补偿型........…………… ·261

16.3 最终一致性…… …… ··…… …. 261

16.3.1 讲解……………… .. 261

16.3.2 靠性消息服务 …… 263

16.3.3 息存 表设计 ……… ··264

16.3.4 务接口 ……… ··265

16.3.5 建消息发送系统 ……… 269

16.3.6 消费消息逻辑 ………… ·273

16.3.7 消息管理系统 ………… ··275

16.4 最大努力通知型 物………… 276

XI

16.4.1 …………………… 276

16.4.2 原理 …………………… 276

16.5 小结…………………...... 276

17章分布式任务调度….. ....…… 277

17 .1 Elastic-Job ……………………··277

17. l.l Elastic-Job 介绍 ………… 277

17.1.2 任务调度目前存在的

问题 ……· …………… 277

17.1.3 什么选 Elastic-Job …··278

17.2 快速集成……………………… 279

17.3 使用…………………….. 280

17.3.1 简单 ……………… ··280

17.3.2 数据流任务 ………….. 281

17.3.3 脚本任务 ……………… 282

17.4 置参数讲解………………… 282

17.4. l 注册中心配置 ………… .. 283

17.4.2 作业配 ……………….. 283

17.4.3 data负ow ……… ·284

17.4.4 script 独有配置 ………… ·284

17.5

节点并行调度 ... .. .. .......… 285

17.5.1 分片概念 ……………….. 285

17.5.2 任务 分片策略 ……… 285

17.5.3 务数据分片处 …….. 286

17.6 件追踪……………………… 289

17.7 功能………………·…… ··290

17.7.1 自定义监 ………… 290

17.7.2 异常处理 ………… 291

17.8 维平台………… ······ 291

17.8.1 功能列表 …… ………… 292

17.8 .2 部署运维平台 ………… 292XII

17.8.3 运维平台使用 ……….. 293

17.9 使用经验分享 ….. .. ..…… ·29

17.9.1 任务的划分和监控 ……… 296

17.9.2 任务的扩展性和节点

数量… …………··…… ·297

17.9.3 任务的重复执行 ………·297

17.9.4 overwrite 覆盖问题 ……… 298

17.9.5 流水式任务 …………… ·2 98

17.10 本章小结 ……· ·………… 299

18章分库分表解决方案…

… · 300

18.1 Sharding-JDBC ……

E

…………·300

18.1.1 介绍 ……··

…… . 300

18.1.2 功能列表…… …... 301

18.1.3 相关概念 ……………….. 301

18.2 快速 成……………… ……… 302

18.3 读写分离实战…………… ...... 304

18.3.1 准备数据………………. 304

18.3.2 配置读写分离 ………… ··304

18.3.3 读从库 ……………. 305

8.3.4 写主库 …………… 307

18.3 .5

Hint 强制路由主库 …. .. ... 308

18.4

分库分表实战………. ....…… ·309

18.4.1 常用分片算法 …………. 310

18.4.2 使用分片算法 ………….. 310

18.4.3 不分库只分表实战……… 311

18.4.4 既分库又分表实战 …·… 314

18.5 分布式主键………… ….. .. .… 317

18.6 本章小结 ………. ... ..……….. 319

你可能感兴趣的:(spring-cloud,springboot)