主编推荐语
全面系统地探索pringcloud微服务开发过程中应用到的技术和解决方案。
内容简介
本书技术包含了各种组件及框架的用法,包括注册和配置中心naco、负载均衡器loadbalancer、远程调用组件openfeign、远程调用框架dubbo、流量控制组件entinel、网关组件gateway、消息驱动框架tream及消息中间件rocketmq、链路追踪组件kywalking、分布式事务管理框架eata、分库分表中间件harphere、分布式缓存数据库redi、分布式任务调度框架xxljob。
本书不仅详细介绍了各种组件及框架技术的使用步骤,而且运用了许多生动形象的生活化比喻,帮助读者理解这些技术的运作。
本书中的范例具有实用,整合了pringboot、pringcloud、hibernate、mybati、druiddataource、hikaridataource、lombok软件包、lf4j等流行的框架或工具软件。本书主要面向具有java编程基础的开发人员和在校。对于不熟悉java编程的读者,通过阅读本书,也能了解pringcloud框架的基本用法和微服务开发的核心思想。
目录
- 版权信息
- 内容简介
- 作者简介
- 前言
- 第1章 微服务简介
- 1.1 微服务的概念与特征
- 1.1.1 微服务按照业务进行划分
- 1.1.2 微服务运行在独立的进程中
- 1.1.3 微服务采用简单协议通信
- 1.1.4 微服务采用统一的管理框架
- 1.2 Spring Cloud框架概述
- 1.3 Spring Cloud Alibaba框架概述
- 1.4 各种软件的版本匹配
- 1.5 搭建微服务的开发和运行环境
- 1.5.1 安装Intellij IDEA
- 1.5.2 为IDEA配置Maven
- 1.5.3 安装和启动Nacos服务器
- 1.5.4 访问Nacos服务器的管理平台
- 1.5.5 查看Nacos服务器的日志
- 1.6 云原生的概念
- 1.7 小结
- 第2章 范例:helloapp项目
- 2.1 提供者和消费者的通信及实现原理
- 2.2 在IDEA中创建helloapp项目
- 2.3 创建hello-provider模块
- 2.3.1 在IDEA中创建hello-provider模块
- 2.3.2 在pom.xml文件中添加Spring Cloud Alibaba依赖
- 2.3.3 创建控制器类HelloProviderController
- 2.3.4 在application.properties文件中配置微服务
- 2.3.5 启动hello-provider模块
- 2.4 创建hello-consumer模块
- 2.4.1 在IDEA中创建hello-consumer模块
- 2.4.2 在启动类中加入@EnableFeignClients注解
- 2.4.3 创建HelloFeignService接口
- 2.4.4 创建控制器类HelloConsumerController
- 2.4.5 在application.properties文件中配置微服务
- 2.4.6 启动和访问hello-consumer模块
- 2.4.7 HelloFeignService接口的默认方法
- 2.5 启动微服务的多个实例
- 2.6 LoadBalancer负载均衡器
- 2.7 通过RestTemplate类访问微服务
- 2.7.1 使用LoadBalancerClient接口整合
- 2.7.2 使用@LoadBalanced注解整合
- 2.8 小结
- 第3章 微服务的注册与发现
- 3.1 Nacos Discovery组件的配置属性
- 3.1.1 禁止注册微服务
- 3.1.2 Nacos Discovery组件的客户端缓存
- 3.1.3 微服务的分组和命名空间
- 3.2 微服务的健康检测
- 3.2.1 微服务的临时实例
- 3.2.2 微服务的永久实例
- 3.3 访问DiscoveryClient接口
- 3.4 通过Actuator监控Nacos Discovery组件的端点
- 3.5 Nacos Discovery组件对微服务列表的监控
- 3.6 小结
- 第4章 Nacos服务器配置中心
- 4.1 在Nacos服务器中创建配置属性
- 4.2 在微服务中读取配置属性
- 4.2.1 创建bootstrap.properties配置文件
- 4.2.2 Nacos Config组件的配置属性
- 4.2.3 通过Environment对象读取配置属性
- 4.2.4 通过@Value注解读取配置属性
- 4.2.5 通过@ConfigurationProperties注解读取配置属性
- 4.3 配置单元的Data ID、分组和命名空间
- 4.4 配置属性的动态更新
- 4.5 不同环境下配置属性的切换
- 4.6 扩展的配置单元
- 4.7 监控Nacos Config组件的端点
- 4.8 设置YAML格式的配置属性
- 4.9 配置属性的持久化
- 4.10 配置属性的回滚
- 4.11 小结
- 第5章 Nacos集群
- 5.1 Nacos集群的Raft算法
- 5.1.1 节点之间数据的同步
- 5.1.2 节点的选举机制
- 5.2 搭建Nacos集群
- 5.2.1 配置Nacos节点
- 5.2.2 启动Nacos节点
- 5.2.3 避免Nacos节点之间的端口冲突
- 5.2.4 Nacos集群的选举
- 5.2.5 通过微服务访问Nacos集群
- 5.2.6 Nacos集群的同步
- 5.3 Nacos集群的AP和CP运行模式
- 5.4 使用Nginx反向代理服务器
- 5.5 通过Keepalived建立Nginx集群
- 5.6 小结
- 第6章 远程调用组件:OpenFeign
- 6.1 优化设定所访问的微服务的名字
- 6.2 优化设定映射URL的根路径
- 6.3 输出详细日志
- 6.4 请求数据和响应数据的压缩
- 6.5 超时配置
- 6.6 异常处理
- 6.6.1 OpenFeign与Sentinel的整合
- 6.6.2 创建回调类
- 6.6.3 创建回调类和工厂类
- 6.7 传递对象参数
- 6.7.1 传递简单对象
- 6.7.2 传递复杂对象
- 6.8 小结
- 第7章 远程调用框架:Dubbo
- 7.1 比较Dubbo和OpenFeign
- 7.2 创建采用Dubbo框架的范例
- 7.2.1 创建hello-provider模块
- 7.2.2 创建hello-consumer模块
- 7.2.3 消费者远程访问提供者
- 7.3 超时时间和重试次数设置
- 7.4 异常处理
- 7.5 传递复杂对象类型数据
- 7.6 负载均衡
- 7.7 Dubbo与Sentinel的整合
- 7.8 提供者回调消费者
- 7.9 消费者异步调用提供者的服务方法
- 7.10 小结
- 第8章 流量控制组件:Sentinel
- 8.1 微服务容错的基本原理
- 8.2 微服务与Sentinel的整合
- 8.2.1 hello-consumer模块与Sentinel的整合
- 8.2.2 安装Sentinel控制台
- 8.2.3 在Sentinel控制台中查看微服务的流量
- 8.3 流控规则
- 8.3.1 流控模式
- 8.3.2 流控效果
- 8.4 熔断规则
- 8.4.1 慢调用比例
- 8.4.2 异常比例
- 8.4.3 异常数
- 8.5 系统规则
- 8.6 授权规则
- 8.7 @SentinelResource注解
- 8.7.1 热点规则
- 8.7.2 请求被拒绝的处理方式
- 8.7.3 对异常的处理
- 8.8 自定义处理BlockException异常的方式
- 8.9 集群流控
- 8.9.1 集群流控的原理
- 8.9.2 Token Server的部署模式
- 8.9.3 配置集群流控
- 8.10 Sentinel规则的持久化
- 8.10.1 流控规则的持久化
- 8.10.2 熔断规则的持久化
- 8.10.3 系统规则的持久化
- 8.11 小结
- 第9章 网关组件:GateWay
- 9.1 GateWay简介
- 9.2 创建网关服务模块
- 9.3 GateWay与Nacos的整合
- 9.4 断言
- 9.4.1 内置的断言工厂类
- 9.4.2 自定义断言工厂类
- 9.5 过滤器
- 9.5.1 局部内置过滤器
- 9.5.2 默认过滤器
- 9.5.3 全局内置过滤器
- 9.5.4 自定义局部过滤器
- 9.5.5 自定义全局过滤器
- 9.5.6 SLF4J日志工具
- 9.6 GateWay与Sentinel的整合
- 9.6.1 对路由限流
- 9.6.2 对自定义的API入口限流
- 9.6.3 同时对路由和API入口限流
- 9.7 跨域配置
- 9.8 超时配置
- 9.9 通过Actuator监控网关
- 9.10 网关集群
- 9.11 小结
- 第10章 消息驱动框架:Stream
- 10.1 消息中间件简介
- 10.1.1 消息中间件的运用场景
- 10.1.2 消息中间件的缺点
- 10.1.3 消息中间件产品
- 10.2 RocketMQ简介
- 10.2.1 RocketMQ涉及的基本概念
- 10.2.2 RocketMQ的消息收发模型
- 10.2.3 安装和启动RocketMQ
- 10.2.4 安装和启动RocketMQ控制台
- 10.3 搭建RocketMQ集群
- 10.3.1 搭建NameServer集群
- 10.3.2 搭建BrokerServer集群
- 10.3.3 多Master模式
- 10.3.4 多Master多Slave的异步复制模式
- 10.3.5 多Master多Slave的同步双写模式
- 10.4 Spring Cloud Stream简介
- 10.5 在微服务中收发消息
- 10.5.1 创建消息生产者
- 10.5.2 创建消息消费者
- 10.5.3 运行消息生产者和消息消费者
- 10.5.4 收发Message类型的消息
- 10.6 通过StreamBridge类发送消息
- 10.6.1 StreamBridge类的用法
- 10.6.2 用ChannelInterceptor拦截消息
- 10.7 发送HTTP请求正文
- 10.8 通过Function函数式接口收发消息
- 10.9 响应式收发消息
- 10.10 多输入通道和输出通道
- 10.11 批量消费消息
- 10.12 批量生产消息
- 10.13 处理错误
- 10.13.1 清除失败消息
- 10.13.2 把失败消息发送到DLQ
- 10.13.3 尝试重新消费失败消息
- 10.14 消费者分组和分区
- 10.15 消息正文的类型转换
- 10.16 通过Actuator监控Stream
- 10.17 小结
- 第11章 链路追踪组件:SkyWalking
- 11.1 SkyWalking简介
- 11.2 链路追踪软件
- 11.3 安装和运行SkyWalking
- 11.4 在微服务中安置探针
- 11.4.1 查看拓扑图
- 11.4.2 追踪链路
- 11.4.3 查看监控数据
- 11.4.4 性能分析
- 11.5 采集日志
- 11.6 自定义链路追踪
- 11.7 忽略端点
- 11.8 告警
- 11.8.1 编写满足告警规则的方法
- 11.8.2 创建处理告警的webhook
- 11.8.3 测试告警
- 11.9 整合Elasticsearch数据库
- 11.10 整合MySQL数据库
- 11.11 通过Nacos建立SkyWalking集群
- 11.12 小结
- 第12章 分布式事务管理框架:Seata
- 12.1 分布式事务概述
- 12.2 Seata简介
- 12.3 Seata的事务模式
- 12.3.1 AT模式
- 12.3.2 TCC模式
- 12.3.3 Saga模式
- 12.3.4 XA模式
- 12.4 安装和运行Seata Server
- 12.5 创建AT模式下的范例
- 12.5.1 创建Seata Server的MySQL存储源
- 12.5.2 处理分布式事务的微服务的架构
- 12.5.3 创建order-service微服务
- 12.5.4 声明全局事务和分支事务
- 12.5.5 演示全局事务的提交和撤销
- 12.6 搭建与Nacos整合的Seata Server集群
- 12.6.1 在MySQL中创建seata数据库和表
- 12.6.2 在Nacos配置中心配置Seata Server
- 12.6.3 在Seata Server的配置文件中配置Nacos
- 12.6.4 在微服务中配置Seata
- 12.6.5 运行和访问Seata Server集群
- 12.7 事务组与Seata Server集群的映射
- 12.8 小结
- 第13章 分库分表中间件:ShardingSphere
- 13.1 分库分表概述
- 13.2 ShardingSphere简介
- 13.2.1 Sharding-JDBC简介
- 13.2.2 Sharding-Proxy简介
- 13.3 ShardingSphere的核心概念
- 13.3.1 与表相关的概念
- 13.3.2 与分片相关的概念
- 13.4 ShardingSphere的工作流程
- 13.5 ShardingSphere的SQL规范
- 13.6 运用Sharding-JDBC的范例
- 13.6.1 加入Sharding-JDBC等的依赖
- 13.6.2 创建拆分后的订单表
- 13.6.3 配置Sharding-JDBC和MyBatis
- 13.6.4 创建Order实体类
- 13.6.5 创建访问数据的OrderDao接口
- 13.6.6 创建OrderService类
- 13.6.7 创建OrderController类
- 13.6.8 运行演示SQL路由的范例
- 13.6.9 把订单表拆分到两个数据库中
- 13.6.10 配置绑定表
- 13.6.11 配置广播表
- 13.6.12 主从数据库和读写分离
- 13.7 Sharding-Proxy简介
- 13.7.1 安装和配置Sharding-Proxy
- 13.7.2 在微服务中访问Sharding-Proxy
- 13.7.3 配置读写分离
- 13.7.4 配置数据加密
- 13.7.5 配置影子数据源
- 13.8 小结
- 第14章 分布式缓存数据库:Redis
- 14.1 Redis简介
- 14.2 安装和启动Redis
- 14.3 在微服务中访问Redis
- 14.4 Redis数据类型
- 14.4.1 读写list类型数据
- 14.4.2 读写set类型数据
- 14.4.3 读写zset类型数据
- 14.4.4 读写hash类型数据
- 14.4.5 序列化Java对象
- 14.5 Redis集群
- 14.5.1 主从模式
- 14.5.2 哨兵模式
- 14.5.3 集群模式
- 14.5.4 搭建Redis集群
- 14.6 在微服务中访问Redis集群
- 14.7 小结
- 第15章 分布式任务调度框架:XXL-JOB
- 15.1 安装和运行XXL-JOB
- 15.1.1 创建XXL-JOB的数据库
- 15.1.2 配置XXL-JOB调度中心
- 15.1.3 运行和访问XXL-JOB调度中心
- 15.1.4 配置XXL-JOB执行器
- 15.1.5 运行XXL-JOB执行器
- 15.2 创建和执行GLUE模式的任务
- 15.3 创建和执行BEAN模式的任务
- 15.3.1 任务的初始化和销毁
- 15.3.2 带参数的任务
- 15.4 执行器集群和分片执行任务
- 15.5 搭建调度中心的集群
- 15.6 小结
出版方
清华大学出版社
清华大学出版社成立于1980年6月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专著为主的鲜明特色,在教育出版领域树立了强势品牌。
