关于spring-cloud:Spring-Cloud微服务全栈技术与案例解析

84次阅读

共计 7473 个字符,预计需要花费 19 分钟才能阅读完成。

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

正文完
 0