微服务分布式架构基础与实战——基于SpringBoot+SpringCloud

微服务分布式架构基础与实战——基于SpringBoot+SpringCloud

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

微服务架构更新快,本书覆盖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 习题

参考文献

反侵权盗版声明

微服务分布式架构基础与实战——基于SpringBoot+SpringCloud是2020年由电子工业出版社出版,作者张方兴。

得书感谢您对《微服务分布式架构基础与实战——基于SpringBoot+SpringCloud》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
微服务分布式构架开发实战 电子书
本书语言简洁,内容丰富,适合具备初级Java后端开发能力的开发人员,大中专相关专业师生,网站培训班学员,以前拥有单工程开发经验并且想尝试分布式微服务架构的人员。 · Java工程师 · 初级架构师 · 大中专院校相关专业师生 · Java培训班学员 · 独立开发者与自学读者
Linux基础与服务管理(基于CentOS 7.6) 电子书
本书以目前广泛使用的CentOS7.6平台为例,由浅入深、系统地介绍了Linux基础及对Linux各种服务的管理。全书共11章,主要内容包括Linux简介、基础操作命令、账户与权限管理、文件系统与磁盘管理、网络管理与系统监控、软件包管理、进程与基础服务、常用服务器配置、常用集群配置、常用系统安全配置和Shell编程基础。本书可作为电子信息类相关专业的教材,也可作为广大计算机爱好者和网络管理员的参考
微服务架构基础:SpringBoot+SpringCloud+Docker 电子书
本书适合所有Java开发人员,尤其适合正在学习微服务,以及正在尝试使用微服务架构开发项目的人员阅读和参考。
微服务设计原理与架构 电子书
本书共分为四大篇幅内容,包括:1.直面微服务篇,剖析微服务架构的基本特征、优势和劣势,并给出实施微服务架构的系统方法。2.服务建模篇,介绍服务建模的思路和方法,并从服务拆分和集成角度对服务模型进行重点展开。3.服务实现篇,介绍微服务架构涉及的基础组件、关键要素以及目前主流的技术实现体系。4.服务转型篇,包括对遗留系统进行微服务架构的改造方法以及对研发过程转型的讨论。
微服务与事件驱动架构 电子书
本书教你从头开始构建完整的事件驱动型微服务架构。