本书是一本Spring Cloud开发的入门级教程图书,也是一本着重于动手实战的编程指导书。随着这两年Spring Cloud开发的日渐火热,无论是对于编程工作者、编程讲师或是编程爱好者与学生,掌握SpringCloud 开发技能都将为自己带来极大的收获。本书分15个章节对Spring Cloud的各种组件进行全面讲解,并针对某个组件的替代产品进行针对性的比较。有Spring Cloud的注册中心Eureka,Consul;网关组件Zuul和Gateway;异步消息队列Kafka,配置中心config等。本书章节简明扼要,务求用最简洁的文字和代码将整个Spring Cloud技术体系进行讲解说明,读者在阅读的过程中也能收获匪浅。
徐文聪目前在一线互联网公司担任后端开发,承担百万日活的产品后端研发。对高并发和性能优化方面有不少经验,对技术有极致的追求Github和Gitee活跃用户。
目  录
第1章  Spring Cloud微服务简介	001
1.1  单体应用架构	001
1.1.1  单体应用架构简介	001
1.1.2  单体应用架构的优势	001
1.1.3  单体应用架构的劣势	002
1.2  微服务架构	002
1.2.1  微服务架构简介	002
1.2.2  微服务的来源	002
1.2.3  微服务的优点	002
1.2.4  微服务的缺点	003
1.2.5  微服务架构的选择	003
1.3  Spring Cloud介绍	004
1.3.1  Spring Cloud的概念	004
1.3.2  Spring Cloud的组件	005
1.3.3  Spring Cloud版本介绍	005
1.3.4  Spring Boot简介	005
1.3.5  Spring Boot和Spring Cloud的关系	006
1.4  本章小结	006
第2章  微服务开发工具	007
2.1  IDEA基本配置	007
2.1.1  IDEA的安装	007
2.1.2  字体设置	007
2.1.3  自动编译开源	009
2.1.4  代码提示设置	009
2.1.5  Tab多行显示	009
2.1.6  去掉行尾空格	011
2.1.7  设置行号显示	011
2.1.8  项目文件编码	012
2.1.9  自动导入包	013
2.2  IDEA快捷键	013
2.2.1  快捷键函数收尾	014
2.2.2  去掉无效引用	014
2.2.3  打开最近使用的文件	015
2.2.4  快速搜索文件	015
2.2.5  快速查找方法	016
2.2.6  快速搜索目录	016
2.2.7  快速切换编辑框	016
2.2.8  查看层级关系	017
2.2.9  展开成员变量	017
2.2.10  方法参数类型提示	018
2.2.11  查看方法调用	018
2.2.12  同词编辑	019
2.3  代码相关技巧	020
2.3.1  打开最近的项目	020
2.3.2  本地代码历史	021
2.3.3  展示类成员变量	022
2.3.4  内存展示	023
2.3.5  查看项目结构	024
2.3.6  多线程断点调试	025
2.3.7  同步显示类	026
2.4  IDEA代码模板配置	027
2.4.1  代码模板定制	027
2.4.2  注释生成	027
2.4.3  生成Java类模板	028
2.5  IDEA插件介绍	031
2.5.1  阿里巴巴规范插件	031
2.5.2  stackoverflow搜索插件	031
2.5.3  Maven Helper	032
2.5.4  POJO to JSON插件	033
2.5.5  GsonFormat插件	034
2.5.6  Grep Console日志查询工具	036
2.5.7  Redis可视化工具	037
2.5.8  代码高亮工具	038
2.5.9  翻译插件	039
2.5.10  字符串标记JSON	040
2.6  本章小结	041
第3章  注册中心	042
3.1  Eureka客户端	042
3.1.1  Eureka客户端依赖	042
3.1.2  Eureka客户端文件配置	043
3.2  Eureka服务端	044
3.2.1  Eureka服务端组件依赖	044
3.2.2  Eureka服务端文件配置	045
3.2.3  Eureka服务端启动类	046
3.2.4  注册中心启动	046
3.3  Eureka常用配置	047
3.3.1  Eureka权限认证	047
3.3.2  Eureka健康检查	047
3.4  Consul注册中心	048
3.4.1  Consul安装和启动	048
3.4.2  Consul服务端依赖	050
3.4.3  Consul服务端文件配置	050
3.4.4  Consul服务端启动类	051
3.4.5  Consul客户端文件配置	051
3.4.6  Consul客户端业务逻辑	052
3.5  本章小结	054
第4章  Feign客户端	055
4.1  Feign实例	055
4.1.1  Feign项目结构	055
4.1.2  Feign客户端依赖	055
4.1.3  Feign客户端文件配置	057
4.1.4  Feign客户端启动类配置	058
4.1.5  Feign的配置方式	058
4.1.6  Spring两种类型的bean对象	058
4.1.7  Feign客户端接口定义	059
4.1.8  Feign服务端依赖	059
4.1.9  Feign服务端文件配置	060
4.1.10  Feign服务端启动类	061
4.1.11  Feign服务端控制器	061
4.1.12  Feign项目启动	062
4.2  Feign请求	062
4.2.1  Feign get请求	062
4.2.2  Feign post请求	063
4.2.3  Feign服务降级	064
4.3  Feign高级配置	064
4.3.1  Feign安全认证配置	064
4.3.2  Feign超时配置	065
4.3.3  Feign日志配置	065
4.3.4  Feign核心类	066
4.4  Feign整合Zipkin	066
4.4.1  项目结构	066
4.4.2  Zipkin服务端依赖	067
4.4.3  Zipkin客户端依赖	069
4.4.4  Zipkin客户端配置文件	069
4.5  Hystrix注册中心	070
4.5.1  Hystrix原理	071
4.5.2  Hystrix项目结构	071
4.5.3  Hystrix注册中心依赖	071
4.5.4  Hystrix文件配置	072
4.5.5  Hystrix相关参数配置	072
4.5.6  Hystrix隔离策略	072
4.5.7  Eureka启动	073
4.6  构建Hystrix服务端	073
4.6.1  Hystrix服务端组件依赖	073
4.6.2  Hystrix文件配置	073
4.6.3  Hystrix启动类	074
4.6.4  Eureka配置文件	074
4.7  构建Hystrix客户端	075
4.7.1  Hystrix客户端依赖	075
4.7.2  Hystrix客户端启动配置	075
4.7.3  Hystrix增加控制类	076
4.7.4  Hystrix回退支持	077
4.8  本章小结	078
第5章  Ribbon负载均衡器	080
5.1  Ribbon注册中心	080
5.1.1  Eureka实例	080
5.1.2  Ribbon服务端实例	082
5.1.3  Ribbon客户端实例	084
5.1.4  Ribbon负载均衡	086
5.2  Ribbon常用配置	087
5.2.1  Ribbon注册中心状态设置	087
5.2.2  Ribbon注册中心超时设置	087
5.2.3  Ribbon路由配置	088
5.3  本章小结	090
第6章  Config配置中心	091
6.1  Config服务端	091
6.2  Config客户端	093
6.2.1  Config客户端依赖	093
6.2.2  Config客户端文件配置	095
6.2.3  动态配置刷新	096
6.3  本章小结	097
第7章  第三方配置中心	098
7.1  Apollo简介	098
7.1.1  Apollo的结构	098
7.1.2  Apollo配置环境	100
7.1.3  Apollo数据库配置	103
7.1.4  Apollo配置中心启动	107
7.2  Apollo配置中心	112
7.2.1  Apollo创建配置	112
7.2.2  Apollo新增配置	112
7.2.3  Apollo发布配置	113
7.2.4  Apollo启动	114
7.3  Apollo集群	115
7.3.1  集群配置	115
7.3.2  管理员工具	116
7.3.3  Apollo实例	124
7.4  Nacos配置中心	125
7.4.1  Nacos的安装	125
7.4.2  项目结构	127
7.4.3  Nacos服务端依赖	127
7.4.4  Nacos服务端	128
7.4.5  Nacos配置管理	131
7.5  ZooKeeper配置中心	132
7.5.1  ZooKeeper简介	132
7.5.2  使用场景	132
7.5.3  节点监控	133
7.5.4  ZooKeeper领导者选举	133
7.5.5  Watcher机制	134
7.5.6  ZooKeeper部署	135
7.5.7  zkui登录页面	137
7.5.8  ZooKeeper实例	139
7.6  本章小结	142
第8章  Zuul网关	143
8.1  Zuul基础实例	143
8.1.1  Zuul的作用	143
8.1.2  Zuul依赖	144
8.1.3  Zuul文件配置	144
8.1.4  启动类配置	144
8.2  Zuul实例	145
8.2.1  创建Eureka注册中心	145
8.2.2  Eureka客户端依赖	146
8.2.3  Eureka客户端文件配置	146
8.3  Zuul高级特性	148
8.3.1  路由前缀	148
8.3.2  本地跳转	149
8.3.3  过滤器实现种类	149
8.3.4  入口规则配置	154
8.3.5  Zuul过滤器生命周期	155
8.3.6  Zuul过滤器禁用	156
8.3.7  Zuul过滤器的数据传递	156
8.3.8  服务降级处理	158
8.3.9  全局限流配置	158
8.3.10  局部限流配置	158
8.4  本章小结	159
第9章  Gateway网关	160
9.1  Gateway简介	160
9.1.1  Gateway的组成	160
9.1.2  Gateway实例	161
9.1.3  Gateway转发规则	162
9.2  本章小结	165
第10章  Admin管理中心	166
10.1  Admin实例	166
10.1.1  Admin服务端	166
10.1.2  Admin客户端	167
10.1.3  创建Eureka项目	170
10.1.4  查看服务日志	171
10.2  Admin高级特性	171
10.2.1  集成Hystrix UI展示	171
10.2.2  Admin安全配置	172
10.2.3  拦截监控端点处理	175
10.2.4  Session监控	175
10.2.5  展示客户端JMX信息	176
10.2.6  监控客户端配置	176
10.2.7  服务端集成Hystrix UI展示	177
10.2.8  监控告警服务	177
10.3  本章小结	178
第11章  文档管理工具	179
11.1  Swagger实例构建	179
11.1.1  Swagger响应	179
11.1.2  Springfox-Swagger简介	180
11.1.3  Swagger相关依赖	180
11.1.4  Swagger文件配置	180
11.1.5  Swagger启动	181
11.2  Swagger注解	182
11.2.1  @Api接口注解	182
11.2.2  @ApiIgnore隐藏接口	183
11.2.3  @ApiOperation方法注解	183
11.2.4  @ApiImplicitParam参数注解	184
11.2.5  @ApiResponse和@ApiResponses响应注解	185
11.2.6  @ApiModel参数注解	185
11.2.7  @ApiModelProperty字段注解	186
11.3  Swagger实例	186
11.3.1  项目结构	186
11.3.2  项目配置文件	187
11.3.3  权限模块	187
11.3.4  用户模块	189
11.3.5  订单模块	191
11.3.6  支付模块	192
11.3.7  商城模块	193
11.3.8  启动应用	194
11.3.9  请求认证	195
11.4  Postman使用方式	195
11.4.1  Postman基本使用方法	195
11.4.2  Postman主页	196
11.4.3  创建新的接口	196
11.4.4  接口集合	198
11.5  本章小结	202
第12章  MongoDB数据库	203
12.1  MongoDB简介	203
12.1.1  MongoDB的结构	203
12.1.2  MongoDB的特点	204
12.1.3  应用场景	204
12.1.4  可视化客户端	205
12.1.5  下载和安装	206
12.2  MongoDB实例	208
12.2.1  MongoDB依赖	208
12.2.2  MongoDB创建数据库	209
12.2.3  创建实体	213
12.2.4  用户方法	221
12.2.5  订单方法	222
12.2.6  支付方法	224
12.2.7  商品方法	225
12.3  MongoDB高级特性	227
12.3.1  MongoDB存储引擎	227
12.3.2  WiredTiger引擎	227
12.3.3  In-Memory引擎	228
12.3.4  不同存储引擎的区别	229
12.3.5  写安全机制	229
12.3.6  事务管理	230
12.3.7  数据回滚机制	231
12.3.8  MongoDB数据备份	231
12.3.9  MongoDB内存释放	232
12.3.10  MongoDB复制集	232
12.3.11  MongoDB元数据	232
12.3.12  MongoDB分片	232
12.4  本章小结	234
第13章  Redis缓存	235
13.1  Redis的基础用法	235
13.1.1  Redis的安装和启动	235
13.1.2  Redis可视化客户端	237
13.2  Redis实例	239
13.2.1  Redis组件	240
13.2.2  Redis信息配置	240
13.2.3  Redis key值存在判断	242
13.2.4  Redis设置key值	242
13.2.5  Redis获取key值	244
13.2.6  Redis缓存值	244
13.2.7  Redis缓存时间	246
13.2.8  Redis缓存过期时间设置	248
13.2.9  Redis获取缓存时间	249
13.2.10  Redis缓存删除	249
13.2.11  Redis缓存集合添加	250
13.2.12  Redis缓存集合查询	251
13.2.13  Redis根据key获取set集合	252
13.2.14  Redis整合缓存方法	253
13.2.15  设置key在指定时间过期	255
13.2.16  模糊匹配删除key	256
13.2.17  持久化key	257
13.2.18  哈希存储	259
13.2.19  读取哈希值	260
13.2.20  删除哈希值	260
13.3  Redis高级特性	263
13.3.1  Redis内部结构	263
13.3.2  最大缓存配置	263
13.3.3  Redis容量估算	263
13.3.4  Redis数据淘汰策略	264
13.3.5  Redis缓存算法	264
13.3.6  Redis事务	265
13.3.7  分区	265
13.3.8  Redis的序列化	266
13.3.9  Redis过期键删除策略	266
13.3.10  Redis锁机制	267
13.3.11  Redis单线程	267
13.3.12  Redis常见注解	268
13.3.13  Redis集群模式	269
13.3.14  持久化机制	270
13.3.15  Redis危险命令	271
13.4  缓存异常情况	271
13.4.1  缓存雪崩	271
13.4.2  缓存穿透	272
13.4.3  缓存击穿	272
13.5  本章小结	273
?
第14章  异步消息队列Kafka	274
14.1  Kafka基本介绍	274
14.1.1  Kafka的定义和组件	274
14.1.2  Kafka消息协议	275
14.1.3  Kafka的优点	275
14.1.4  Kafka环境部署	276
14.1.5  Kafka可视化工具	277
14.2  Kafka实例	280
14.2.1  Kafka依赖	280
14.2.2  Kafka消息消费者	281
14.2.3  Kafka消息生产者	282
14.2.4  消息体构造	283
14.3  Kafka高级机制	283
14.3.1  Kafka分区机制	283
14.3.2  Kafka流式处理	284
14.3.3  Kafka副本和备份	285
14.3.4  消息持久化	285
14.3.5  数据存储	287
14.3.6  Kafka消费模型	287
14.3.7  Kafka日志配置	287
14.3.8  Kafka负载均衡	289
14.3.9  Kafka单元测试	290
14.4  Kafka常见问题	291
14.4.1  消息可靠性	291
14.4.2  Kafka消息丢失的问题	291
14.4.3  顺序消费	292
14.4.4  重复消费	293
14.5  Bus整合Kafka	293
14.5.1  Bus架构	293
14.5.2  项目结构	294
14.5.3  Bus和Kafka	295
14.5.4  项目启动	297
14.5.5  指定刷新范围	300
?
14.6  Bus整合RabbitMQ	300
14.6.1  Erlang安装	300
14.6.2  Bus服务端文件配置	303
14.6.3  Bus启动	305
14.7  本章小结	306