书海网短评:
适读人群:本书适合有一定Java开发基础的技术人员,尤其是正在使用或准备使用微服务构建高并发、大数据应用的技术人员及团队。开源中国创始人@红薯、YY欢聚时代技术经理钟永生等联合背书扫图书封面二维码可获得
开源中国创始人@红薯、YY欢聚时代技术经理钟永生等联合背书
扫图书封面二维码可获得图书配套的讲解视频
作者亲自在线的QQ群、微信群不定期答疑服务
疯狂体系图书的又一力作
《疯狂SpringCloud微服务架构实战》以SpringCloud为基础,深入讲解微服务开发的相关框架,包括服务管理框架Eureka、负载均衡框架Ribbon、服务客户端Feign、容错框架Hystrix、消息框架Stream等。除了介绍这些微服务相关的框架外,在《疯狂SpringCloud微服务架构实战》的第11章,还介绍了如何使用SpringData框架操作各个主流数据库(MySQL、MongoDB、Redis)。在第12章,以一个案例为基础结束《疯狂Spring Cloud微服务架构实战》内容,在该章中讲解了模板引擎Thymeleaf,整《疯狂Spring Cloud微服务架构实战》将会为大家提供一整套微服务应用开发的解决方案。《疯狂Spring Cloud微服务架构实战》适合有一定Java开发基础的技术人员,尤其是正在使用或准备使用微服务构建高并发、大数据应用的技术人员及团队。
杨恩雄,从事十多年的JavaEE企业应用开发,曾任中企动力系统设计师、中企开源项目经理、数码辰星科技公司项目经理,参与过多个企业级项目的设计与架构工作。曾负责辰星“电影票网络销售系统”的整体架构,精通Activiti、Drools、ESB等开源技术,在SOA、SaaS、大数据应用、互联网系统架构方面有着丰富的经验,曾出版《疯狂Java实战演义》《疯狂工作流讲义》《疯狂SpringCloud微服务架构实战》等书籍。
作者杨恩雄,开源中国博主,发表的SpringCloud以及Activiti的相关技术文章,极具参考价值,帮助不少用户朋友解决实际问题。这本《SpringCloud微服务架构实战》内容由浅到深,原理实战相结合,可以帮助初学者,甚至是具有一定微服务知识的开发者,快速掌握SpringCloud的相关知识。
——红薯(www.oschina.net)开源中国创始人
与杨恩雄共事多年,他拥有较强的总结能力和技术实力,已经出版了不少Java相关的书籍,此次出版的《疯狂SpringCloud微服务架构实战》一书,涵盖了SpringCloud的主要框架,为Java应用开发提供了一整套解决方案,开发者学习完这《疯狂Spring Cloud微服务架构实战》的知识后,我相信在技术实力上会有一个质的提升。
——钟永生YY欢聚时代技术经理
第1章 SpringCloud概述1
1.1 传统的应用2
1.1.1 单体应用2
1.1.2 架构演进3
1.1.3 架构要求4
1.2 微服务与SpringCloud5
1.2.1 什么是微服务5
1.2.2 关于NetflixOSS6
1.2.3 SpringCloud与Netflix6
1.2.4 SpringCloud的主要模块6
1.3 学习方面的准备工作7
1.3.1 下载《疯狂Spring Cloud微服务架构实战》的软件及源码7
1.3.2 导入《疯狂Spring Cloud微服务架构实战》的案例7
1.4 本章小结8
第2章 搭建开发环境9
2.1 安装与配置Maven10
2.1.1 关于Maven10
2.1.2 下载与安装Maven11
2.1.3 配置远程仓库11
2.2 安装Eclipse12
2.2.1 Eclipse版本12
2.2.2 在Eclipse中配置Maven12
2.3 SpringBoot13
2.3.1 SpringBoot简介13
2.3.2 新建Maven项目14
2.3.3 编写启动类15
2.3.4 编写控制器16
2.3.5 发布RESTWebService17
2.4 SpringBoot配置文件18
2.4.1 默认配置文件18
2.4.2 指定配置文件位置19
2.4.3 yml文件19
2.4.4 运行时指定profiles配置20
2.4.5 热部署20
2.5 SpringCloud的版本21
2.6 本章小结21
第3章 微服务发布与调用22
3.1 Eureka介绍23
3.1.1 关于Eureka23
3.1.2 Eureka架构23
3.1.3 服务器端24
3.1.4 服务提供者24
3.1.5 服务调用者24
3.2 第一个Eureka应用24
3.2.1 构建服务器24
3.2.2 服务器注册开关27
3.2.3 编写服务提供者27
3.2.4 编写服务调用者29
3.2.5 程序结构32
3.3 Eureka集群搭建33
3.3.1 本例集群结构图33
3.3.2 改造服务器端34
3.3.3 改造服务提供者35
3.3.4 改造服务调用者37
3.3.5 编写REST客户端进行测试37
3.4 服务实例的健康自检38
3.4.1 程序结构39
3.4.2 使用SpringBootActuator39
3.4.3 实现应用健康自检39
3.4.4 服务查询42
3.5 Eureka的常用配置44
3.5.1 心跳检测配置44
3.5.2 注册表抓取间隔44
3.5.3 配置与使用元数据45
3.5.4 自我保护模式45
3.6 本章小结46
第4章 负载均衡47
4.1 Ribbon介绍48
4.1.1 Ribbon简介48
4.1.2 Ribbon子模块48
4.1.3 负载均衡器组件48
4.2 第一个Ribbon程序49
4.2.1 编写服务49
4.2.2 编写请求客户端51
4.2.3 Ribbon的配置52
4.3 Ribbon的负载均衡机制53
4.3.1 负载均衡器53
4.3.2 自定义负载规则54
4.3.3 Ribbon自带的负载规则56
4.3.4 Ping机制57
4.3.5 自定义Ping59
4.3.6 其他配置59
4.4 在SpringCloud中使用Ribbon60
4.4.1 准备工作60
4.4.2 使用代码配置Ribbon61
4.4.3 使用配置文件设置Ribbon63
4.4.4 Spring使用Ribbon的API64
4.5 RestTemplate负载均衡66
4.5.1 @LoadBalanced注解概述66
4.5.2 编写自定义注解以及拦截器66
4.5.3 使用自定义拦截器以及注解68
4.5.4 在控制器中使用RestTemplate69
4.6 本章小结71
第5章 REST客户端Feign72
5.1 REST客户端73
5.1.1 使用CXF调用REST服务73
5.1.2 使用Restlet调用REST服务74
5.1.3 Feign框架介绍75
5.1.4 第一个Feign程序76
5.1.5 请求参数与返回对象77
5.2 使用Feign78
5.2.1 编码器79
5.2.2 解码器80
5.2.3 XML的编码与解码80
5.2.4 自定义编码器与解码器83
5.2.5 自定义Feign客户端83
5.2.6 使用第三方注解85
5.2.7 Feign解析第三方注解86
5.2.8 请求拦截器89
5.2.9 接口日志89
5.3 在SpringCloud中使用Feign90
5.3.1 SpringCloud整合Feign91
5.3.2 Feign负载均衡93
5.3.3 默认配置93
5.3.4 自定义配置94
5.3.5 可选配置97
5.3.6 压缩配置98
5.4 本章小结98
第6章 SpringCloud的保护机制99
6.1 概述100
6.1.1 实际问题100
6.1.2 传统的解决方式101
6.1.3 集群容错框架Hystrix101
6.1.4 Hystrix的功能102
6.2 第一个Hystrix程序103
6.2.1 准备工作103
6.2.2 客户端使用Hystrix103
6.2.3 调用错误服务105
6.2.4 Hystrix的运作流程106
6.3 Hystrix的使用108
6.3.1 命令执行108
6.3.2 属性配置110
6.3.3 回退111
6.3.4 回退的模式112
6.3.5 断路器开启113
6.3.6 断路器关闭116
6.3.7 隔离机制118
6.3.8 合并请求121
6.3.9 请求缓存125
6.4 在SpringCloud中使用Hystrix127
6.4.1 整合Hystrix128
6.4.2 命令配置130
6.4.3 默认配置131
6.4.4 缓存注解132
6.4.5 合并请求注解134
6.4.6 Feign与Hystrix整合136
6.4.7 Hystrix监控140
6.5 本章小结142
第7章 微服务集群网关143
7.1 Zuul框架介绍144
7.1.1 关于Zuul144
7.1.2 Zuul的功能144
7.2 在Web项目中使用Zuul145
7.2.1 Web项目整合Zuul145
7.2.2 测试路由功能145
7.2.3 过滤器运行机制147
7.3 在微服务集群中初试Zuul148
7.3.1 集群搭建149
7.3.2 路由到集群服务150
7.3.3 ZuulHttp客户端153
7.4 路由配置153
7.4.1 简单路由154
7.4.2 跳转路由155
7.4.3 Ribbon路由155
7.4.4 自定义路由规则156
7.4.5 忽略路由157
7.5 Zuul的其他配置157
7.5.1 请求头配置157
7.5.2 路由端点158
7.5.3 Zuul与Hystrix158
7.5.4 在Zuul中预加载Ribbon161
7.6 Zuul功能进阶161
7.6.1 过滤器优先级161
7.6.2 自定义过滤器162
7.6.3 动态加载过滤器163
7.6.4 禁用过滤器165
7.6.5 请求上下文166
7.6.6 @EnableZuulServer注解168
7.6.7 error过滤器169
7.6.8 动态路由171
7.7 本章小结172
第8章 微服务与消息驱动173
8.1 SpringCloudStream介绍174
8.1.1 关于Stream框架174
8.1.2 Stream框架的组成部分174
8.1.3 消息代理中间件174
8.2 RabbitMQ框架175
8.2.1 RabbitMQ和AMQP175
8.2.2 下载与运行176
8.2.3 编写生产者177
8.2.4 编写消费者179
8.2.5 交换器、绑定与队列180
8.3 ApacheKafka框架181
8.3.1 关于Kafka181
8.3.2 运行Kafka服务器182
8.3.3 编写生产者182
8.3.4 编写消费者184
8.3.5 消费者组185
8.4 开发消息微服务185
8.4.1 准备工作186
8.4.2 编写生产者187
8.4.3 编写消费者188
8.4.4 更换绑定器189
8.4.5 Sink、Source与Processor190
8.4.6 消费者组191
8.5 本章小结192
第9章 集群配置中心193
9.1 概述194
9.1.1 关于SpringCloudConfig194
9.1.2 应用结构195
9.1.3 引导程序简介195
9.1.4 搭建SVN环境196
9.2 构建第一个例子196
9.2.1 创建服务器196
9.2.2 配置SVN仓库197
9.2.3 创建客户端199
9.2.4 从客户端读取SVN配置200
9.2.5 目录配置总结201
9.2.6 刷新配置202
9.2.7 刷新Bean203
9.3 配置的加密和解密205
9.3.1 为服务器安装JCE205
9.3.2 加密和解密端点205
9.3.3 SVN存储加密数据206
9.3.4 非对称加密207
9.4 其他配置207
9.4.1 服务器健康指示器207
9.4.2 客户端的错误提前与重试机制208
9.4.3 安全配置209
9.4.4 访问服务器配置210
9.5 整合使用210
9.5.1 准备工作210
9.5.2 配置服务器、客户端整合Eureka212
9.5.3 整合Zuul214
9.5.4 整合SpringCloudBus刷新配置216
9.5.5 刷新单个节点配置217
9.6 本章小结217
第10章 微服务跟踪219
10.1 概述220
10.1.1 实际问题与Sleuth220
10.1.2 服务跟踪系统220
10.1.3 Sleuth的基本概念220
10.1.4 项目准备221
10.2 Sleuth整合Zipkin222
10.2.1 Zipkin简介222
10.2.2 构建Zipkin服务器项目223
10.2.3 配置微服务224
10.2.4 查看数据225
10.2.5 使用MySQL保存数据228
10.2.6 使用消息采集数据230
10.3 Sleuth整合ELK232
10.3.1 关于ELK232
10.3.2 下载ELK233
10.3.3 运行Elasticsearch233
10.3.4 使用Logstash读取JSON234
10.3.5 使用Kibana展示数据235
10.3.6 使用Logback转换JSON237
10.4 本章小结240
第11章 微服务数据库实战241
11.1 概述242
11.1.1 关于SpringData242
11.1.2 SpringData的功能243
11.1.3 SpringData的模块243
11.2 SpringData与JPA243
11.2.1 构建项目244
11.2.2 数据访问层与业务层245
11.2.3 自定义数据存储逻辑247
11.2.4 方法名查询248
11.2.5 使用@Query注解249
11.3 SpringData与MongoDB250
11.3.1 安装MongoDB250
11.3.2 配置权限251
11.3.3 MongoDB的概念252
11.3.4 构建项目252
11.3.5 数据访问层与业务层253
11.3.6 自定义数据存储逻辑254
11.3.7 方法名查询256
11.3.8 使用@Query注解258
11.4 SpringData与Redis258
11.4.1 Redis的安装与配置258
11.4.2 Redis的数据类型259
11.4.3 使用Jedis260
11.4.4 构建SpringData项目262
11.4.5 数据访问层与业务层263
11.4.6 自定义数据存储逻辑265
11.4.7 方法名查询267
11.5 本章小结268
第12章 案例实战269
12.1 概述270
12.1.1 表现层技术270
12.1.2 案例概述270
12.1.3 案例技术选型270
12.2 SpringBoot与JSP271
12.2.1 构建项目271
12.2.2 配置272
12.2.3 打包部署273
12.3 模板引擎Thymeleaf274
12.3.1 关于Thymeleaf274
12.3.2 SpringBoot整合Thymeleaf274
12.3.3 加载资源275
12.3.4 获取请求数据276
12.3.5 调用Bean方法276
12.3.6 遍历集合277
12.3.7 表单提交277
12.4 图书管理案例278
12.4.1 运行案例278
12.4.2 案例模块279
12.4.3 案例架构279
12.4.4 数据库280
12.4.5 用户登录280
12.4.6 新建图书284
12.4.7 图书展示286
12.5 本章小结287
序
Java语言经过多年的发展,从开始的EJB+Servlet的开发模式,到后来的轻量级JavaEE开发模式,每一种架构或开发模式的出现,都牵动着万千程序员的心。程序员是一个求知若渴的群体,也是一个容易接受新知识的群体,为了学习新技术,多少人食不知味、夜不能寐。笔者有幸成为一名平凡的程序员,从业十余年,面对各种新技术,时常怀着一颗谦卑的心不停前进,只有学习,才能带来快乐,才不会被淘汰。
笔者大约从2010年开始接手高并发、大数据的系统,经历过项目重构、人肉运维等痛苦过程,深知项目架构之不易,一直以来,期望能构建出完美的系统。此次恰逢SpringCloud的兴起,笔者亦难以北窗高卧,数月以来寝食不安,编纂拙著。笔者学识浅薄,加之仓促付梓,书中错漏定然难免,望读者见谅。
IT行业人才辈出,笔者为平庸之辈,今日有幸与大家分享知识,实乃上天的眷顾。《疯狂Spring Cloud微服务架构实战》能得以出版,得益于多方襄助,对他们的感激之情,难以言表。感谢传道并解惑的恩师,感谢聪颖而好学的读者,感谢善良且亲爱的家人,笔者会谢意永存、铭感不忘。
《疯狂Spring Cloud微服务架构实战》特点
笔者长期工作于企业的IT部门,有着丰富的企业应用开发经验,因此《疯狂Spring Cloud微服务架构实战》具有以下特点。
1.内容深入
从笔者接触编程开始,就养成了查看源代码的习惯,书中不仅仅讲解SpringCloud的功能,更深入SpringCloud的原理。
2.案例详细
《疯狂Spring Cloud微服务架构实战》的每个知识点,几乎都会对应一个案例。在《疯狂Spring Cloud微服务架构实战》最后,还附有一个完整的案例,读者在该案例基础上,可建立自己的项目。
衷心感谢
首先非常感谢李刚老师,一直以来,他既是我的老师,也是我的技术后盾,非常幸运人生能有这样一位良师益友。
其次感谢出版社编辑,不辞辛苦地为我的书纠正各种错误,并为《疯狂Spring Cloud微服务架构实战》提出了许多宝贵的意见。
最后感谢我的家人,你们是我前进的动力。
《疯狂Spring Cloud微服务架构实战》写给谁看
如果你有一定的Java语言基础,进行过Web项目的开发,那么《疯狂Spring Cloud微服务架构实战》可以为你带来一个全新的开发模式。如果你是一名系统设计师,《疯狂Spring Cloud微服务架构实战》可以让你学习全新的系统架构。如果你是一名维护系统的程序员,即使《疯狂Spring Cloud微服务架构实战》的架构不适合你的系统,但《疯狂Spring Cloud微服务架构实战》的技术框架,仍然可以为你的系统改造和完善提供参考。
个人简介
本人从事十多年的JavaEE企业应用开发,曾任中企动力系统设计师、中企开源项目经理、数码辰星科技公司项目经理,参与过多个企业级项目的设计与架构工作。曾负责辰星“电影票网络销售系统”的整体架构,精通Activiti、Drools、ESB等开源技术,在SOA、SaaS、大数据应用、互联网系统架构方面有着丰富的经验,曾出版《疯狂Java实战演义》《疯狂Workflow讲义》等书籍。
杨恩雄









