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

第一部分:准备篇 10

1 Spring Cloud与微服务概述 10
  1.1传统的单体老项目 10
    1.1.1单体应用 10
    1.1.2改进单体应用的架构 10
    1.1.3向微服务靠拢 11
  1.2什么是微服务 12
    1.2.1 微服务介绍 12
    1.2.2 使用微服务架构的好处 12
    1.2.3 使用微服务架构的害处 13
    1.2.4 重构前的准备工作 13
  1.3什么是Spring Cloud 14
    1.3.1 Spring Cloud介绍 14
    1.3.2 Spring Cloud模块介绍 14
    1.3.3 Spring Cloud版本介绍 14
  1.4 关于本书 18
    1.4.1 本书源码 18
    1.4.2 作者介绍 18
  1.5本章小结 18
2实战前的准备工作 18
  2.1开发环境的准备 18
    2.1.1 JDK 18
    2.1.2 Maven 19
    2.1.3 Eclipse 19
  2.2 Spring Boot入门 19
    2.2.1 Spring Boot简介 19
    2.2.2 搭建Spring Boot项目 20
    2.2.3 编写第一个REST接口 21
    2.2.4 读取配置文件 22
    2.2.5 profiles多环境配置 24
    2.2.6 热部署 24
    2.2.7 actuator监控 26
    2.2.8统一异常处理 29
    2.2.9异步执行 31
    2.2.10随机端口 34
  2.3本章小结 36

第二部分:基础篇 36

3 Eureka 注册中心 36
  3.1 Eureka 37
    3.1.1 Eureka介绍 37
    3.1.2 Eureka与Zookeeper的对比 37
  3.2 使用Eureka编写注册中心服务 38
  3.3 编写服务提供者 40
    3.3.1 创建项目注册到Eureka 40
    3.3.2 编写提供接口 42
  3.4 编写服务消费者 43
    3.4.1 直接消费接口 43
    3.4.2 通过Eureka来消费接口 44
  3.5 开启Eureka认证 45
    3.5.1 Eureka服务开启认证 45
    3.5.2 客户端注册配置修改 46
  3.6 Eureka高可用搭建 46
    3.6.1 高可用原理 46
    3.6.2 搭建步骤 46
    3.6.3 客户端配置修改 47
  3.7 常用配置讲解 48
    3.7.1 关闭自我保护 48
    3.7.2 自定义Eureka的Instance ID 48
    3.7.3 自定义实例跳转链接 50
    3.7.4 快速移除已经失效的服务信息 50
  3.8 扩展使用 51
    3.8.1 Eureka REST API 51
    3.8.2 元数据使用 54
    3.8.3 EurekaClient使用 55
    3.8.4 健康检查 57
  3.9 本章小结 59
4 客户端负载均衡Ribbon 60
  4.1 Ribbon 60
    4.1.1 Ribbon介绍 60
    4.1.2 Ribbon模块 60
    4.1.3 Ribbon使用 60
  4.2 RestTemplate结合Ribbon使用 62
    4.2.1 RestTemplate 使用 62
    4.2.2整合Ribbon 65
    4.2.3 RestTemplate负载均衡示例 65
    4.2.4 @LoadBalanced注解原理 67
    4.2.5 Ribbon API使用 72
    4.2.6 Ribbon饥饿加载 73
  4.3 负载均衡策略介绍 74
  4.4 自定义负载策略 76
    4.4.1 自定义负载策略 76
    4.4.2 使用自定义负载策略 76
  4.5 配置讲解 77
    4.5.1 常用配置 77
    4.5.2 代码配置Ribbon 78
  4.6 重试机制 79
    4.6.1 RetryRule重试 79
    4.6.2 Spring Retry重试 80
  4.7 本章小结 80
5 声明式REST客户端Feign 80
  5.1 使用Feign调用服务接口 81
    5.1.1 Feign介绍 81
    5.1.2 Spring Cloud中集成Feign 81
    5.1.3 使用Feign调用接口 82
  5.2 自定义Feign的配置 83
    5.2.1 配置日志 83
    5.2.2 契约配置 85
    5.2.3 Basic认证配置 86
    5.2.4 超时时间配置 87
    5.2.5 客户端组件配置 87
    5.2.6 GZIP压缩配置 89
    5.2.7 编码器解码器配置 90
  5.4 脱离Spring Cloud 使用Feign 90
    5.4.1 原生注解方式 90
    5.4.2 构建Feign对象 92
    5.4.3 代码示例 92
    5.4.4 其他配置 93
  5.5 本章小结 94
6 Hystrix 服务容错处理 94
  6.1 Hystrix 95
    6.1.1 Hystrix简介 95
    6.1.2 Hystrix简单使用 95
    6.1.3 回退支持 96
    6.1.4 信号量策略配置 97
    6.1.5 线程隔离策略配置 98
    6.1.6 结果缓存 98
    6.1.7 缓存清除 100
    6.1.8 合并请求 101
  6.2 Spring Cloud中使用Hystrix 104
    6.2.1 简单使用 104
    6.2.2 配置详解 105
    6.2.3 Feign整合Hystrix服务容错 109
    6.2.4 Feign中禁用Hystrix 112
  6.3 Hystrix监控 112
  6.4 整合Dashboard查看监控数据 113
  6.5 Turbine聚合集群数据 116
    6.5.1 Turbine使用 116
    6.5.2 context-path导致监控失败 117
  6.6 本章小结 117
7 API 网关 117
  7.1 Zuul 简介 118
  7.2 使用Zuul构建微服务网关 118
    7.2.1 简单使用 118
    7.2.2 集成Eureka 119
  7.3 Zuul路由配置 120
    7.3.1服务默认路由 120
    7.3.2指定具体服务路由 120
    7.3.3路由前缀 120
    7.3.4本地跳转 121
  7.4 Zuul过滤器讲解 121
    7.4.1 过滤器类型 122
    7.4.2 请求生命周期 122
    7.4.3 使用过滤器 124
    7.4.4 过滤器禁用 126
    7.4.5 过滤器中传递数据 127
    7.4.6 过滤器拦截请求 128
    7.4.7 过滤器中异常处理 130
  7.5 Zuul容错和回退 133
    7.5.1 容错机制 133
    7.5.2 回退机制 134
  7.6 Zuul高可用 136
  7.7 本章小结 137

第三部分:实战篇 137

8 分布式配置管理 137
  8.1 Spring Cloud Config 137
  8.2 自研配置管理框架Smconf 137
    8.2.1 Smconf介绍 137
    8.2.2为什么选择自研框架 138
    8.2.3 Smconf功能介绍 138
  8.3 Smconf 原理 139
    8.3.1 架构图 139
    8.3.2 基本概念 139
    8.3.3 客户端讲解 140
    8.3.4 服务端讲解 140
  8.4 Smconf 部署 140
    8.4.1 Mongodb安装 140
    8.4.2 Zookeeper安装 141
    8.4.3 Smconf Server部署 142
  8.5项目中集成Smconf 143
    8.5.1 集成Smconf 143
    8.5.2 使用Smconf 145
    8.5.3 配置更新回调 146
  8.6 Smconf详细使用 147
    8.6.1 源码编译问题 147
    8.6.2 后台账号管理 147
    8.6.3 REST API 148
  8.7 Smconf源码解析 151
    8.7.1 Client启动 151
    8.7.2启动加载配置 153
    8.7.3 配置修改推送原理 155
  8.8 本章小结 156
9 Sleuth 服务跟踪 156
  9.1 Spring Cloud集成Sleuth 156
  9.2 整合Logstash 157
    9.2.1 ELK简介 157
    9.2.2 输出JSON格式日志 158
  9.3 整合Zipkin 159
    9.3.1 创建Zipkin数据收集服务 160
    9.3.2 项目集成Zipkin发送调用链数据 161
    9.3.3 抽样采集数据 162
    9.3.4 用RabbitMq代替Http发送调用链数据 163
    9.3.5 用Elasticsearch存储调用链数据 164
  9.4 本章小结 165
10 微服务之间调用的安全认证 165
  10.1 什么是JWT 165
  10.2 创建统一的认证服务 166
    10.2.1 表结构 166
    10.2.2 JWT工具类封装 167
    10.2.3 认证接口 168
  10.3 服务提供方进行调用认证 169
    10.3.1 编写验证Filter 169
    10.3.2 注册Filter进行验证 171
  10.4 服务消费方申请Token 172
    10.4.1 调用前获取Token 172
    10.4.2 缓存Token信息 172
    10.4.3 采用定时器刷新Token 173
  10.5 Feign调用前统一申请Token传递到调用的服务中 174
    10.5.1 定义请求拦截器 174
    10.5.2 配置拦截器 175
  10.6 Zuul中统一申请Token传递到路由的服务中 176
  10.7 本章小结 177
11 Spring Boot Admin 177
  11.1 Spring Boot Admin使用 177
    11.1.1 创建Spring Boot Admin项目 177
    11.1.2 将服务注册到Spring Boot Admin 179
    11.1.3 如何在Admin中查看各个服务的日志 180
  11.2 开启认证 181
    11.2.1 Spring Boot Admin服务开启认证 181
    11.2.2 开启认证后注册不上问题 182
  11.3 集成Eureka 182
    11.3.1 集成Eureka的好处 182
    11.3.2 集成步骤 183
  11.4 集成Turbine 184
    11.4.1 集成Turbine的好处 184
    11.4.2 集成步骤 184
  11.5 监控服务 185
    11.5.1 邮件警报 185
    11.5.2 自定义钉钉警报 186
  11.6 本章小结 190
12 服务的API文档管理 190
  12.1 Swagger简介 190
    12.1.1 Swagger介绍 190
    12.1.2 Swagger的优势 190
  12.2 集成Swagger管理API文档 191
    12.2.1 封装Swagger starter 191
    12.2.2 项目中集成Swagger starter 192
    12.2.3 使用Swagger生成文档 193
    12.2.4 在线测试接口 194
  12.3 Swagger注解 196
    12.3.1 Api 196
    12.3.2 ApiModel 197
    12.3.3 ApiModelProperty 198
    12.3.4 ApiParam 198
    12.3.5 ApiOperation 199
    12.3.6 ApiResponse和ApiResponses 199
    12.3.7 ApiImplicitParam和ApiImplicitParams 200
  12.4 Eureka 控制台快速查看Swagger文档 201
  12.5 本章小结 202

第四部分:高级篇 202

13 API网关扩展 202
  13.1 用户认证 202
    13.1.1 动态管理不需要拦截的API请求 202
    13.1.2 创建认证的用户服务 205
    13.1.3 路由之前的认证 206
    13.1.4 传递认证之后的用户信息到下游微服务中 207
    13.1.5 内部服务间的用户信息传递 208
  13.2 服务限流 210
    13.2.1 限流算法 210
    13.2.2 单节点限流 211
    13.2.3 集群限流 216
    13.2.4 具体服务限流 220
    13.2.5 具体接口限流 221
  13.3 服务降级 228
    13.3.1 利用配置中心动态降级 228
  13.4 灰度发布 230
    13.4.1原理讲解 231
    13.4.2根据用户做灰度发布 231
    13.4.3根据IP做灰度发布 235
  13.5 本章小结 236
14 微服务之缓存 236
  14.1 Guava Cache本地缓存 236
    14.1.1 Guava Cache简介 236
    14.1.2 代码示例 236
    14.1.3 回收策略 237
  14.2 Redis缓存 238
    14.2.1 Redistemplate 操作Redis 238
    14.2.2 Repository方式操作Redis 239
    14.2.3 Spring Cache 缓存数据 242
    14.2.4扩展Spring Cache支持对每个缓存的时间配置 248
    14.2.5缓存异常处理 250
    14.2.6自定义缓存工具类 251
  14.3 防止缓存穿透方案 254
    14.3.1 什么是缓存穿透 254
    14.3.2 缓存穿透的危害 254
    14.3.3 解决方案 255
    14.3.4 布隆过滤器介绍 255
    14.3.5 代码示例 255
  14.4 防止缓存雪崩方案 257
    14.4.1 什么是缓存雪崩 257
    14.4.2 缓存雪崩的危害 257
    14.4.3 解决方案 257
    14.4.4 代码示例 258
    14.4.5 分布式锁方式 258
  14.5 本章小结 259
15 微服务之存储 260
  15.1 存储选型 260
  15.2 Mongodb 261
    15.2.1 集成Spring Data Mongodb 261
    15.2.2 添加数据操作 261
    15.2.3 索引使用 263
    15.2.4 修改数据操作 265
    15.2.5 删除数据操作 267
    15.2.6 查询数据操作 268
    15.2.7 GridFS操作 269
    15.2.8 Repository方式操作数据 271
    15.2.9 自增ID实现 276
    15.2.10 批量更新扩展 278
  15.3 Mysql 282
    15.3.1集成Spring JdbcTemplate 282
    15.3.2 JdbcTemplate代码示例 283
    15.3.3封装JdbcTemplate 使用更简单 284
    15.3.4扩展JdbcTemplate使用方式 284
    15.3.5常见问题 288
  15.4 Elasticsearch 291
    15.4.1集成Spring Data Elasticsearch 291
    15.4.2 Repository示例 292
    15.4.3 ElasticsearchTemplate示例 295
    15.4.4 索引构建方式 299
  15.5 本章小结 300
16 微服务之分布式事物解决方案 301
  16.1 两阶段型 301
  16.2 TCC补偿型 301
  16.3 最终一致性 302
    16.3.1 原理讲解 302
    16.3.2 创建可靠性消息服务 306
    16.3.3 消息存储表设计 307
    16.3.4 提供服务接口 309
    16.3.5 创建消息发送系统 314
    16.3.6 消费消息逻辑 318
    16.3.7 消息管理系统 321
  16.4 最大努力通知型 321
    16.4.1 介绍 321
    16.4.2 原理 321
  16.5 本章小结 322
17 分布式任务调度 322
  17.1 Elastic Job 322
    17.1.1 Elastic-Job介绍 322
    17.1.2 任务调度目前存在的问题 322
    17.1.3 为什么选择Elastic-Job 323
  17.2 快速集成 324
  17.3 任务使用 325
    17.3.1 简单任务 325
    17.3.2 数据流任务 326
    17.3.3 脚本任务 327
  17.4 配置参数讲解 328
    17.4.1 注册中心配置 328
    17.4.2 作业配置 329
    17.4.3 dataflow独有配置 331
    17.4.4 script独有配置 331
  17.5 多节点并行调度 331
    17.5.1 分片概念 331
    17.5.2 任务节点分片策略 332
    17.5.3 业务数据分片处理 333
  17.6 事件追踪 336
  17.7 扩展功能 337
    17.7.1 自定义监听器 337
    17.7.2 定义异常处理 338
  17.8 运维平台 339
    17.8.1功能列表 340
    17.8.2部署运维平台 340
    17.8.3运维平台使用 340
  17.9 使用经验分享 345
    17.9.1任务的划分 345
    17.9.2任务的监控 345
    17.9.3任务的扩展性 345
    17.9.4任务的节点数量 346
    17.9.5任务的重复执行 346
    17.9.6 overwrite覆盖问题 347
    17.9.7 流水式任务 347
  17.10 本章小结 348
18 分库分表解决方案 348
  18.1 Sharding-JDBC 348
    18.1.1介绍 348
    18.1.2功能列表 348
    18.1.3概念介绍 349
  18.2 快速集成 350
  18.3 读写分离实战 352
    18.3.1准备好数据 352
    18.3.2 配置读写分离 353
    18.3.3 验证读从库 354
    18.3.4 验证写主库 356
    18.3.5 Hint强制路由主库 358
  18.4 分库分表实战 359
    18.4.1 常用分片算法 359
    18.4.2 使用分片算法 359
    18.4.3 不分库只分表实战 360
    18.4.4 既分库又分表实战 364
  18.5 分布式主键 368
  18.6 本章小结 370

 

发布了250 篇原创文章 · 获赞 91 · 访问量 44万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览