主编推荐语
微服务架构更新快,本书覆盖Spring Cloud新版注册中心Consul、新版网关Gateway等,关注实战与思想。
内容简介
微服务分布式架构的内容更新迭代速度极快,2018年6月开始就有许多微服务分布式的数据,但是到2019年已经跟不上Spring Cloud的版本了,过去大多数数据Spring Cloud都用Eureka作为注册中心,而Spring官方已经在Spring Cloud Eureka 2.0以后宣布停止了Spring Cloud Eureka的更新计划,废弃该项目并将Consul作为Spring Cloud的注册中心。另外大多数书籍的网关依旧使用的Spring Cloud Zuul,但是目前Spring已经逐渐废弃Spring Cloud Zuul,而是让Spring Cloud Gateway接替他的网关位置。市面上的同类书的技术将没有将此内容更新。另外本书从分布式架构程序的方式角度进行讲解,包括分布式任务调度、分布式事务管理,重点提及了这部分的实战与思想。很多书只是用来教导框架构架,而本书则希望通过框架让读者认识分布式的具体操作方法。本书以案例任务模式主要介绍了Spring Boot微服务的持久化、缓存、缓存同步、队列,Spring Cloud的新版注册中心Consul、新版网关Spring Cloud Gateway、Spring Cloud分布式通讯、共享信息、单点登录、鉴权等相关内容。
目录
- 封面
- 版权页
- 前言
- 目录
- 第1章 微服务分布式架构设计原理
- 1.1 Java Web应用程序的发展历史
- 1.2 微服务分布式
- 1.2.1 Spring Boot微服务的定义和特点
- 1.2.2 Spring Boot的职场导读
- 1.2.3 Spring部分内容
- 1.2.4 微服务的拆分
- 1.3 【实例】微服务工程Hello World
- 1.3.1 实例背景
- 1.3.2 创建Maven Project
- 1.3.3 使用空Maven Project模板
- 1.3.4 编辑Maven坐标定位及工程名
- 1.3.5 检查Maven目录结构
- 1.3.6 编写Pom文件
- 1.3.7 Spring Boot依赖包的导入
- 1.3.8 编写Spring Boot启动类
- 1.3.9 编写Spring Boot接口
- 1.3.10 当前项目结构
- 1.3.11 启动工程
- 1.3.12 Spring Boot初始化启动后
- 1.3.13 实例易错点
- 1.4 Spring Boot启动类扫描Bean
- 1.4.1 @SpringBootApplication注解
- 1.4.2 @ComponentScan注解
- 1.4.3 Spring Boot扫描其他包下文件
- 1.5 【实例】将端口号改成9090
- 1.5.1 实例背景
- 1.5.2 创建application.properties资源配置文件
- 1.5.3 增加资源配置文件中的配置信息
- 1.5.4 运行结果
- 1.5.5 实例易错点
- 1.6 YAML文件
- 1.6.1 YAML文件简介
- 1.6.2 YAML文件的书写格式
- 1.7 【实例】使用YAML配置文件
- 1.7.1 实例背景
- 1.7.2 原properties文件
- 1.7.3 转换格式后的YAML文件
- 1.7.4 实例易错点
- 1.8 【实例】通过单配置文件让工程适应多应用场景
- 1.8.1 实例背景
- 1.8.2 更改application.yml文件
- 1.8.3 更改启动类
- 1.8.4 输入启动参数
- 1.8.5 运行结果
- 1.8.6 实例易错点
- 1.9 【实例】通过多配置文件使工程适应多应用场景
- 1.9.1 实例背景
- 1.9.2 新建SIT和UAT环境所需资源配置文件
- 1.9.3 新建系统资源配置文件
- 1.9.4 编写启动类
- 1.9.5 当前项目结构
- 1.9.6 运行结果
- 1.10 微服务配置权重
- 1.10.1 资源配置信息类型的权重
- 1.10.2 资源配置文件类型的权重
- 1.10.3 资源配置文件存在位置与权重解读
- 1.11 本章小结
- 1.12 习题
- 第2章 分布式的注册中心
- 2.1 注册中心
- 2.1.1 Eureka与Consul的区别
- 2.1.2 Consul的相关术语
- 2.1.3 Consul的安装
- 2.2 Consul的常用命令
- 2.2.1 consul agent-dev
- 2.2.2 consul-members
- 2.2.3 consul leave
- 2.2.4 agent命令的常用配置参数
- 2.2.5 HTTP API
- 2.3 【实例】创建第一个微服务分布式项目
- 2.3.1 实例背景
- 2.3.2 搭建Consul集群
- 2.3.3 创建微服务工程编写相应依赖文件
- 2.3.4 Spring Cloud和Spring Boot的版本对应关系
- 2.3.5 编写微服务YAML资源配置文件
- 2.3.6 编写微服务启动类注册到Consul上
- 2.3.7 当前项目结构
- 2.3.8 运行结果
- 2.3.9 实例易错点
- 2.4 【实例】通过代码获取Consul中的服务信息
- 2.4.1 实例背景
- 2.4.2 编写获得其他注册服务的代码
- 2.4.3 运行结果
- 2.4.4 实例易错点
- 2.5 【实例】Spring Cloud操作Consul的K/V存储
- 2.5.1 实例背景
- 2.5.2 添加依赖
- 2.5.3 利用Consul的UI界面添加K/V存储
- 2.5.4 编写YAML资源配置文件对应K/V存储
- 2.5.5 编写MyConfig.java文件对应相关K/V存储
- 2.5.6 调用MyConfig.java中的参数
- 2.5.7 在启动类引用相关配置
- 2.5.8 当前项目结构
- 2.5.9 运行结果
- 2.5.10 实例易错点
- 2.6 本章小结
- 2.7 习题
- 第3章 分布式的通信
- 3.1 分布式通信
- 3.1.1 Spring Cloud Feign
- 3.1.2 Swagger
- 3.2 【实例】微服务集成Swagger
- 3.2.1 实例背景
- 3.2.2 编写Swagger依赖
- 3.2.3 编写Swagger配置
- 3.2.4 编写接口与接口处的Swagger配置
- 3.2.5 当前项目结构
- 3.2.6 运行效果
- 3.2.7 实例易错点
- 3.3 【实例】Feign调用微服务接口
- 3.3.1 实例背景
- 3.3.2 引入相关配置信息
- 3.3.3 编写Feign客户端
- 3.3.4 编写调用
- 3.3.5 编写启动类
- 3.3.6 当前项目结构
- 3.3.7 运行结果
- 3.3.8 实例易错点
- 3.4 【实例】Feign的拦截器
- 3.4.1 实例背景
- 3.4.2 在cloud-admin-8084工程中增加拦截器
- 3.4.3 当前项目结构
- 3.4.4 运行结果
- 3.4.5 实例易错点
- 3.5 Feign的配置
- 3.5.1 传输数据压缩配置
- 3.5.2 日志配置
- 3.5.3 超时配置
- 3.6 【实例】Feign的降级回退处理——Feign的Fallback类
- 3.6.1 实例背景
- 3.6.2 在资源配置文件中开启Feign内置的Hystrix权限
- 3.6.3 编写Fallback降级类
- 3.6.4 Service整合Fallback降级类
- 3.6.5 当前项目结构
- 3.6.6 运行结果
- 3.7 【实例】Feign的降级回退处理——Feign的Fallback工厂
- 3.7.1 实例背景
- 3.7.2 编写Fallback降级工厂
- 3.7.3 整合Fallback降级工厂
- 3.7.4 实例易错点
- 3.8 本章小结
- 3.9 习题
- 第4章 分布式的客户端负载均衡
- 4.1 负载均衡
- 4.1.1 传统服务器端负载均衡
- 4.1.2 Ribbon客户端负载均衡
- 4.2 【实例】Feign整合Ribbon分发请求
- 4.2.1 实例背景
- 4.2.2 编写cloud-book-8086启动类与配置类支持Ribbon
- 4.2.3 Service和Controller
- 4.2.4 当前项目结构
- 4.2.5 运行效果
- 4.2.6 实例易错点
- 4.3 Ribbon的负载均衡策略配置
- 4.4 本章小结
- 4.5 习题
- 第5章 分布式的断路器
- 5.1 断路器
- 5.1.1 为什么需要断路器
- 5.1.2 Hystrix
- 5.1.3 Hystrix解决的问题
- 5.1.4 Hystrix如何解决问题
- 5.2 【实例】Hystrix断路器的降级回退
- 5.2.1 实例背景
- 5.2.2 编写相关Pom文件
- 5.2.3 编写application资源配置文件
- 5.2.4 编写Ribbon配置类
- 5.2.5 编写启动类
- 5.2.6 编写Service类
- 5.2.7 编写Controller类
- 5.2.8 当前项目结构
- 5.2.9 运行结果
- 5.2.10 实例易错点
- 5.3 Hystrix线程池
- 5.3.1 Hystrix断路器注解式的命令配置
- 5.3.2 Hystrix断路器的注解式线程池配置
- 5.3.3 Hystrix断路器注解式的整体定制配置
- 5.3.4 Hystrix断路器资源配置式的整体定制配置
- 5.4 【实例】Hystrix断路器的请求缓存
- 5.4.1 实例背景
- 5.4.2 通过Filter初始化Hystrix上下文
- 5.4.3 让启动类扫描Filter过滤器
- 5.4.4 编写Controller的Helper类
- 5.4.5 编写Controller类
- 5.4.6 当前项目结构
- 5.4.7 运行结果
- 5.4.8 销毁Hystrix的请求缓存
- 5.4.9 实例易错点
- 5.5 【实例】Hystrix的请求合并
- 5.5.1 实例背景
- 5.5.2 增加@HystrixCollapser请求合并修饰的函数
- 5.5.3 Controller中调用请求合并函数
- 5.5.4 当前项目结构
- 5.5.5 运行结果
- 5.5.6 实例易错点
- 5.6 【实例】Hystrix的可视化监控
- 5.6.1 实例背景
- 5.6.2 Hystrix可视化监控的依赖
- 5.6.3 Hystrix可视化监控的启动类
- 5.6.4 被监控的微服务增加响应地址
- 5.6.5 当前项目结构
- 5.6.6 运行结果
- 5.6.7 实例易错点
- 5.7 本章小结
- 5.8 习题
- 第6章 微服务的异步线程池
- 6.1 异步线程池
- 6.1.1 异步线程池特点
- 6.1.2 常见的线程池
- 6.2 【实例】创建无返回值异步线程池
- 6.2.1 实例背景
- 6.2.2 编写Pom文件
- 6.2.3 编写Spring Boot启动类
- 6.2.4 编写异步线程池任务接口与实现
- 6.2.5 编写外部可调用接口
- 6.2.6 当前项目结构
- 6.2.7 运行程序查看异步线程池效果
- 6.2.8 实例易错点
- 6.3 【实例】创建有返回值异步线程池
- 6.3.1 实例背景
- 6.3.2 增加新的服务接口
- 6.3.3 增加新的服务实现
- 6.3.4 增加新的调用
- 6.3.5 当前项目结构
- 6.3.6 运行程序查看异步线程池效果
- 6.3.7 实例易错点
- 6.4 【实例】优化异步线程池
- 6.4.1 实例背景
- 6.4.2 创建初始化线程池配置类
- 6.4.3 更改无返回值的异步线程池Service实现类
- 6.4.4 运行程序查看异步线程池效果
- 6.4.5 实例易错点
- 6.5 【实例】优雅停止异步线程池
- 6.5.1 实例背景
- 6.5.2 何为“优雅”
- 6.5.3 修改原Config配置类
- 6.5.4 修改原Controller控制层
- 6.5.5 当前项目结构
- 6.5.6 优雅停止异步线程池的执行效果
- 6.5.7 实例易错点
- 6.6 @Enable*注解
- 6.7 本章小结
- 6.8 习题
- 第7章 微服务整合持久化数据源
- 7.1 spring-data
- 7.1.1 ORM规范
- 7.1.2 JPA、Hibernate、spring-data-jpa之间的关系
- 7.1.3 安装MySQL
- 7.2 【实例】Spring Boot整合MyBaits注解式编程
- 7.2.1 实例背景
- 7.2.2 添加Pom文件
- 7.2.3 编写application资源配置文件
- 7.2.4 编写dao层
- 7.2.5 编写访问接口
- 7.2.6 当前项目结构
- 7.2.7 运行效果
- 7.2.8 实例易错点
- 7.3 @Mapper注解详解
- 7.3.1 @Mapper和XML形式的对应关系
- 7.3.2 MyBatis的注解式编程多表查询
- 7.3.3 MyBatis的注解式编程分页查询
- 7.3.4 注册DataSource数据源
- 7.4 【实例】Spring Boot整合spring-data-jpa
- 7.4.1 实例背景
- 7.4.2 添加Pom文件
- 7.4.3 添加资源配置文件中的相关信息
- 7.4.4 添加实体类映射
- 7.4.5 添加JPA的dao层
- 7.4.6 添加Controller控制层查询JPA的dao层
- 7.4.7 当前项目结构
- 7.4.8 运行结果
- 7.4.9 实例易错点
- 7.5 本章小结
- 7.6 习题
- 第8章 微服务事务
- 8.1 @Transactional注解
- 8.1.1 @Transactional声明式事务的传播行为
- 8.1.2 脏读、不可重复读与幻读
- 8.1.3 @Transactional声明式事务的隔离级别
- 8.1.4 @Transactional声明式事务的超时时间
- 8.1.5 @Transactional声明式事务的只读
- 8.1.6 @Transactional声明式事务指定异常
- 8.2 【实例】Spring Boot整合声明式事务
- 8.2.1 实例背景
- 8.2.2 整合@Transactional的Service层编写
- 8.2.3 整合@Transactional的Controller层编写
- 8.2.4 当前项目结构
- 8.2.5 运行结果
- 8.2.6 实例易错点
- 8.3 本章小结
- 8.4 习题
- 第9章 微服务的缓存与分布式的消息通信
- 9.1 Redis
- 9.1.1 BSD协议
- 9.1.2 Java与Redis的历史
- 9.1.3 Spring Data Redis
- 9.2 【实例】微服务整合Spring Data Redis增删改查
- 9.2.1 实例背景
- 9.2.2 编写application.properties资源配置文件
- 9.2.3 配置RedisTemplate模板
- 9.2.4 编写操作Redis的工具类
- 9.2.5 编写实体类及接口调用
- 9.2.6 当前项目结构
- 9.2.7 运行结果
- 9.2.8 实例易错点
- 9.3 【实例】分布式使用Redis实现消息通信
- 9.3.1 消息通信应用场景
- 9.3.2 Redis与MQ一系列消息队列的区别
- 9.3.3 实例背景
- 9.3.4 在send微服务中配置模板
- 9.3.5 在send微服务中定时向队列发布数据
- 9.3.6 在listener微服务中编写订阅渠道的配置信息
- 9.3.7 在listener微服务中编写监听实现类
- 9.3.8 当前项目结构
- 9.3.9 send微服务与listener微服务运行结果
- 9.3.10 实例易错点
- 9.4 Spring Cache与Spring Data Redis的区别
- 9.5 【实例】保持MySQL与Redis数据一致性
- 9.5.1 实例背景
- 9.5.2 编写资源配置文件
- 9.5.3 编写实体类Java Bean
- 9.5.4 编写JPA仓库
- 9.5.5 编写Service接口及实现类
- 9.5.6 编写Controller接口进行测试
- 9.5.7 当前项目结构
- 9.5.8 运行结果
- 9.5.9 实例易错点
- 9.6 本章小结
- 9.7 习题
- 第10章 微服务的任务调度与分布式的任务调度
- 10.1 【实例】微服务整合任务调度
- 10.1.1 实例背景
- 10.1.2 编写任务调度实现类
- 10.1.3 编写资源配置文件
- 10.1.4 当前项目结构
- 10.1.5 运行效果
- 10.1.6 实例易错点
- 10.2 @Scheduled注解详解
- 10.2.1 cron表达式
- 10.2.2 每个字段允许值
- 10.2.3 cron特殊字符意义
- 10.2.4 常用cron表达式
- 10.3 任务调度的分布式
- 10.3.1 任务调度的分布式解决方案
- 10.3.2 任务调度的分布式实现原理
- 10.4 【实例】微服务整合任务调度分布式
- 10.4.1 实例背景
- 10.4.2 增加Quartz依赖
- 10.4.3 在数据库中增加Quartz分布式的管理表
- 10.4.4 编写资源配置文件
- 10.4.5 创建任务调度管理Java Bean
- 10.4.6 创建所需执行的任务
- 10.4.7 创建执行任务的操作类
- 10.4.8 增加控制层
- 10.4.9 当前项目结构
- 10.4.10 运行效果
- 10.4.11 实例易错点
- 10.5 本章小结
- 10.6 习题
- 第11章 微服务的文件上传与分布式文件管理
- 11.1 文件上传/下载原理
- 11.1.1 SpringMVC文件上传原理
- 11.1.2 文件下载原理
- 11.2 【实例】微服务的单文件和多文件上传
- 11.2.1 实例背景
- 11.2.2 编写application.properties资源配置文件
- 11.2.3 编写相关接口
- 11.2.4 编写前台页面
- 11.2.5 当前项目结构
- 11.2.6 运行结果
- 11.2.7 实例易错点
- 11.3 分布式文件管理
- 11.3.1 分布式文件管理特性
- 11.3.2 分布式文件管理解决的问题
- 11.3.3 分布式文件管理解决方案
- 11.4 FastDFS解决方案
- 11.4.1 FastDFS的存储策略
- 11.4.2 FastDFS的文件上传过程
- 11.4.3 FastDFS的文件同步过程
- 11.4.4 FastDFS的文件下载过程
- 11.5 FastDFS的安装部署
- 11.5.1 安装LibFastCommon
- 11.5.2 安装FastDFS
- 11.5.3 配置FastDFS的跟踪服务器
- 11.5.4 配置FastDFS的数据存储服务器
- 11.5.5 配置FastDFS的客户端并测试
- 11.5.6 安装Nginx部署FastDFS
- 11.6 【实例】分布式微服务整合FastDFS
- 11.6.1 实例背景
- 11.6.2 编写FastDFS核心配置类
- 11.6.3 编写FastDFS工具类
- 11.6.4 编写测试接口
- 11.6.5 当前项目结构
- 11.6.6 运行结果
- 11.6.7 实例易错点
- 11.7 本章小结
- 11.8 习题
- 第12章 扩展与部署
- 12.1 微服务分布式架构相关方案总结
- 12.1.1 解决方案与目标
- 12.1.2 分布式部分技术细节扩展
- 12.1.3 动静分离
- 12.1.4 前后端分离
- 12.1.5 数据库读写分离与主从分离
- 12.1.6 应用层与数据层分离
- 12.1.7 CDN加速
- 12.1.8 异步架构
- 12.1.9 响应式编程
- 12.1.10 冗余化管理
- 12.1.11 灰度发布
- 12.1.12 页面静态化
- 12.1.13 服务端主动推送
- 12.2 微服务扩展
- 12.2.1 微服务整合日志
- 12.2.2 微服务整合单元测试
- 12.2.3 微服务整合全局异常
- 12.2.4 微服务整合JSR-303验证机制
- 12.2.5 微服务整合国际化
- 12.2.6 微服务整合安全与认证
- 12.2.7 微服务整合WebSocket协议
- 12.2.8 微服务整合HTTPS
- 12.2.9 微服务整合批处理
- 12.2.10 微服务整合lombok
- 12.2.11 微服务整合异步消息驱动
- 12.2.12 分布式链路监控
- 12.2.13 分布式单点登录
- 12.3 【实例】分布式网关的初步测试
- 12.3.1 实例背景
- 12.3.2 使用资源配置文件的方式配置分布式网关
- 12.3.3 使用注册Bean的方式配置分布式网关
- 12.3.4 运行结果
- 12.4 微服务打包
- 12.4.1 Jar包
- 12.4.2 War包
- 12.5 本章小结
- 12.6 习题
- 参考文献
- 反侵权盗版声明
出版方
电子工业出版社
电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。