更多书籍点击进入>> CiCi岛
电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍
开源中国创始人@红薯、Spring Cloud创始人许进、YY欢聚时代技术经理钟永生联合背书; 扫图书封面二维码可获得图书配套的讲解视频 作者亲自在线的QQ群、微信群不定期答疑服务 疯狂体系图书的又一力作
《疯狂Spring Cloud微服务架构实战》以Spring Cloud为基础,深入讲解微服务开发的相关框架,包括服务管理框架Eureka、负载均衡框架Ribbon、服务客户端Feign、容错框架Hystrix、消息框架Stream等。除了介绍这些微服务相关的框架外,在本书的第11章,还介绍了如何使用Spring Data框架操作各个主流数据库(MySQL、MongoDB、Redis)。在第12章,以一个案例为基础结束本书内容,在该章中讲解了模板引擎Thymeleaf,整本书将会为大家提供一整套微服务应用开发的解决方案。本书适合有一定Java开发基础的技术人员,尤其是正在使用或准备使用微服务构建高并发、大数据应用的技术人员及团队。
作者杨恩雄,从事十多年的Java EE企业应用开发,曾任中企动力系统设计师、中企开源项目经理、数码辰星科技公司项目经理,参与过多个企业级项目的设计与架构工作。曾负责辰星“电影票网络销售系统”的整体架构,精通Activiti、Drools、ESB等开源技术,在SOA、SaaS、大数据应用、互联网系统架构方面有着丰富的经验,曾出版《疯狂Java实战演义》《疯狂工作流讲义》《疯狂Spring Cloud微服务架构实战》等书籍。
第1章 Spring Cloud概述 1
1.1 传统的应用 2
1.1.1 单体应用 2
1.1.2 架构演进 3
1.1.3 架构要求 4
1.2 微服务与Spring Cloud 5
1.2.1 什么是微服务 5
1.2.2 关于Netflix OSS 6
1.2.3 Spring Cloud与Netflix 6
1.2.4 Spring Cloud的主要模块 6
1.3 学习方面的准备工作 7
1.3.1 下载本书的软件及源码 7
1.3.2 导入本书的案例 7
1.4 本章小结 8
第2章 搭建开发环境 9
2.1 安装与配置Maven 10
2.1.1 关于Maven 10
2.1.2 下载与安装Maven 11
2.1.3 配置远程仓库 11
2.2 安装Eclipse 12
2.2.1 Eclipse版本 12
2.2.2 在Eclipse中配置Maven 12
2.3 Spring Boot 13
2.3.1 Spring Boot简介 13
2.3.2 新建Maven项目 14
2.3.3 编写启动类 15
2.3.4 编写控制器 16
2.3.5 发布REST WebService 17
2.4 Spring Boot配置文件 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 Spring Cloud的版本 21
2.6 本章小结 21
第3章 微服务发布与调用 22
3.1 Eureka介绍 23
3.1.1 关于Eureka 23
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 使用Spring Boot Actuator 39
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 自定义Ping 59
4.3.6 其他配置 59
4.4 在Spring Cloud中使用Ribbon 60
4.4.1 准备工作 60
4.4.2 使用代码配置Ribbon 61
4.4.3 使用配置文件设置Ribbon 63
4.4.4 Spring使用Ribbon的API 64
4.5 RestTemplate负载均衡 66
4.5.1 @LoadBalanced注解概述 66
4.5.2 编写自定义注解以及拦截器 66
4.5.3 使用自定义拦截器以及注解 68
4.5.4 在控制器中使用RestTemplate 69
4.6 本章小结 71
第5章 REST客户端Feign 72
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 使用Feign 78
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 在Spring Cloud中使用Feign 90
5.3.1 Spring Cloud整合Feign 91
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章 Spring Cloud的保护机制 99
6.1 概述 100
6.1.1 实际问题 100
6.1.2 传统的解决方式 101
6.1.3 集群容错框架Hystrix 101
6.1.4 Hystrix的功能 102
6.2 第一个Hystrix程序 103
6.2.1 准备工作 103
6.2.2 客户端使用Hystrix 103
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 在Spring Cloud中使用Hystrix 127
6.4.1 整合Hystrix 128
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 关于Zuul 144
7.1.2 Zuul的功能 144
7.2 在Web项目中使用Zuul 145
7.2.1 Web项目整合Zuul 145
7.2.2 测试路由功能 145
7.2.3 过滤器运行机制 147
7.3 在微服务集群中初试Zuul 148
7.3.1 集群搭建 149
7.3.2 路由到集群服务 150
7.3.3 Zuul Http客户端 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与Hystrix 158
7.5.4 在Zuul中预加载Ribbon 161
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 Spring Cloud Stream介绍 174
8.1.1 关于Stream框架 174
8.1.2 Stream框架的组成部分 174
8.1.3 消息代理中间件 174
8.2 RabbitMQ框架 175
8.2.1 RabbitMQ和AMQP 175
8.2.2 下载与运行 176
8.2.3 编写生产者 177
8.2.4 编写消费者 179
8.2.5 交换器、绑定与队列 180
8.3 Apache Kafka框架 181
8.3.1 关于Kafka 181
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与Processor 190
8.4.6 消费者组 191
8.5 本章小结 192
第9章 集群配置中心 193
9.1 概述 194
9.1.1 关于Spring Cloud Config 194
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 刷新Bean 203
9.3 配置的加密和解密 205
9.3.1 为服务器安装JCE 205
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 配置服务器、客户端整合Eureka 212
9.5.3 整合Zuul 214
9.5.4 整合Spring Cloud Bus刷新配置 216
9.5.5 刷新单个节点配置 217
9.6 本章小结 217
第10章 微服务跟踪 219
10.1 概述 220
10.1.1 实际问题与Sleuth 220
10.1.2 服务跟踪系统 220
10.1.3 Sleuth的基本概念 220
10.1.4 项目准备 221
10.2 Sleuth整合Zipkin 222
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整合ELK 232
10.3.1 关于ELK 232
10.3.2 下载ELK 233
10.3.3 运行Elasticsearch 233
10.3.4 使用Logstash读取JSON 234
10.3.5 使用Kibana展示数据 235
10.3.6 使用Logback转换JSON 237
10.4 本章小结 240
第11章 微服务数据库实战 241
11.1 概述 242
11.1.1 关于Spring Data 242
11.1.2 Spring Data的功能 243
11.1.3 Spring Data的模块 243
11.2 Spring Data与JPA 243
11.2.1 构建项目 244
11.2.2 数据访问层与业务层 245
11.2.3 自定义数据存储逻辑 247
11.2.4 方法名查询 248
11.2.5 使用@Query注解 249
11.3 Spring Data与MongoDB 250
11.3.1 安装MongoDB 250
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 Spring Data与Redis 258
11.4.1 Redis的安装与配置 258
11.4.2 Redis的数据类型 259
11.4.3 使用Jedis 260
11.4.4 构建Spring Data项目 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 案例技
序
Java语言经过多年的发展,从开始的EJB Servlet的开发模式,到后来的轻量级Java EE开发模式,每一种架构或开发模式的出现,都牵动着万千程序员的心。程序员是一个求知若渴的群体,也是一个容易接受新知识的群体,为了学习新技术,多少人食不知味、夜不能寐。笔者有幸成为一名平凡的程序员,从业十余年,面对各种新技术,时常怀着一颗谦卑的心不停前进,只有学习,才能带来快乐,才不会被淘汰。
笔者大约从2010年开始接手高并发、大数据的系统,经历过项目重构、人肉运维等痛苦过程,深知项目架构之不易,一直以来,期望能构建出完美的系统。此次恰逢Spring Cloud的兴起,笔者亦难以北窗高卧,数月以来寝食不安,编纂拙著。笔者学识浅薄,加之仓促付梓,书中错漏定然难免,望读者见谅。
IT行业人才辈出,笔者为平庸之辈,今日有幸与大家分享知识,实乃上天的眷顾。本书能得以出版,得益于多方襄助,对他们的感激之情,难以言表。感谢传道并解惑的恩师,感谢聪颖而好学的读者,感谢善良且亲爱的家人,笔者会谢意永存、铭感不忘。
本书特点
笔者长期工作于企业的IT部门,有着丰富的企业应用开发经验,因此本书具有以下特点。
1. 内容深入
从笔者接触编程开始,就养成了查看源代码的习惯,书中不仅仅讲解Spring Cloud的功能,更深入Spring Cloud的原理。
2. 案例详细
本书的每个知识点,几乎都会对应一个案例。在本书最后,还附有一个完整的案例,读者在该案例基础上,可建立自己的项目。
衷心感谢
首先非常感谢李刚老师,一直以来,他既是我的老师,也是我的技术后盾,非常幸运人生能有这样一位良师益友。
其次感谢出版社编辑,不辞辛苦地为我的书纠正各种错误,并为本书提出了许多宝贵的意见。
最后感谢我的家人,你们是我前进的动力。
本书写给谁看
如果你有一定的Java语言基础,进行过Web项目的开发,那么本书可以为你带来一个全新的开发模式。如果你是一名系统设计师,本书可以让你学习全新的系统架构。如果你是一名维护系统的程序员,即使本书的架构不适合你的系统,但本书的技术框架,仍然可以为你的系统改造和完善提供参考。
个人简介
本人从事十多年的Java EE企业应用开发,曾任中企动力系统设计师、中企开源项目经理、数码辰星科技公司项目经理,参与过多个企业级项目的设计与架构工作。曾负责辰星“电影票网络销售系统”的整体架构,精通Activiti、Drools、ESB等开源技术,在SOA、SaaS、大数据应用、互联网系统架构方面有着丰富的经验,曾出版《疯狂Java实战演义》《疯狂Workflow讲义》等书籍。
杨恩雄
2017年10月
读者服务
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
? 下载资源:本书如提供示例代码及资源文件,均可在下载资源处下载。
? 提交勘误:您对书中内容的修改意见可在提交勘误处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
? 交流互动:在页面下方读者评论处留下您的疑问或观点,与我们和其他读者一同学习交流。
页面入口:http://www.broadview.com.cn/33109
作者杨恩雄,开源中国博主,发表的Spring Cloud以及Activiti的相关技术文章,极具参考价值,帮助不少用户朋友解决实际问题。这本《Spring Cloud微服务架构实战》内容由浅到深,原理实战相结合,可以帮助初学者,甚至是具有一定微服务知识的开发者,快速掌握Spring Cloud的相关知识。
——红薯(www.oschina.net) 开源中国创始人
Spring Cloud提供一套完整的微服务解决方案,为企业IT架构变革和发展保驾护航。《疯狂Spring Cloud微服务架构实战》一书由浅入深,抛砖引玉讲解了各个组件的实战经验,帮助开发者快速开发并上线微服务应用。
——许进(xujin.org) Spring Cloud中国社区创始人
与杨恩雄共事多年,他拥有较强的总结能力和技术实力,已经出版了不少Java相关的书籍,此次出版的《疯狂Spring Cloud微服务架构实战》一书,涵盖了Spring Cloud的主要框架,为Java应用开发提供了一整套解决方案,开发者学习完这本书的知识后,我相信在技术实力上会有一个质的提升。
——钟永生 YY欢聚时代 技术经理