Spring Cloud 微服务全栈技术与案例解析
下载地址: https://pan.baidu.com/s/1NJmgFlQmNmFG2RkrYO7Q7Q
扫码上面二维码关注公众号回复 100017 获取分享码
本书目录构造如下:
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