作者 |
尹吉欢 朱荣鑫 张天 黄迪璇 |
丛书名 |
出版社 |
机械工业出版社 |
ISBN |
9782107241260 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8049518 - Spring Cloud微服务:全栈技术与案例解析--------------------------- 本书内容共18章,共分为4个部分。第1部分为准备篇,准备篇当中会对微服务以及SpringCloud做一个整体的介绍,同时将SpringCloud的基础内容进行讲解,比如SpringBoot。第2部分为基础篇,基础篇当中会对SpringCloud的几大常用模块进行讲解和简单使用。第3部分为实战篇,实战篇当中会通过对在微服务架构中普遍遇到的问题进行实战解决讲解。第4部分为高级篇,高级篇当中就是对SpringCloud进行一些扩展性的使用,比如API网关怎么限流,怎么做灰度发布等。 ---------------------------8052585 - Spring Cloud微服务架构进阶--------------------------- 本书重点介绍微服务架构的Spring Cloud框架,在实践的基础上进行用法的拓展与相关组件的源码分析,包括:服务发现、负载均衡、断路、声明式HTTP调用客户端、网关、分布式配置中心、安全权限、消息总线等组件。本书适合Java开发人员,特别适合正在进行微服务化改造的开发人员、架构师,在改造过程中进行参考与进阶应用。 |
目录 |
[套装书具体书目] 8049518 - Spring Cloud微服务:全栈技术与案例解析 - 9787111601555 - 机械工业出版社 - 定价 79 8052585 - Spring Cloud微服务架构进阶 - 9787111608684 - 机械工业出版社 - 定价 89 ---------------------------8049518 - Spring Cloud微服务:全栈技术与案例解析--------------------------- 前言 第一部分 准备篇 第1章 Spring Cloud与微服务概述 2 1.1 传统的单体应用 2 1.1.1 改进单体应用的架构 2 1.1.2 向微服务靠拢 3 1.2 什么是微服务 4 1.2.1 使用微服务架构的优势和劣势 4 1.2.2 重构前的准备工作 5 1.3 什么是Spring Cloud 5 1.3.1 Spring Cloud模块介绍 5 1.3.2 Spring Cloud版本介绍 6 1.4 本章小结 7 第2章 实战前的准备工作 8 2.1 开发环境的准备 8 2.2 Spring Boot入门 9 2.2.1 Spring Boot简介 9 2.2.2 搭建Spring Boot项目 9 2.2.3 编写第一个REST接口 11 2.2.4 读取配置文件 11 2.2.5 profiles多环境配置 13 2.2.6 热部署 13 2.2.7 actuator监控 15 2.2.8 统一异常处理 16 2.2.9 异步执行 18 2.2.10 随机端口 21 2.3 本章小结 23 第二部分 基础篇 第3章 Eureka注册中心 26 3.1 Eureka 26 3.2 使用Eureka编写注册中心服务 27 3.3 编写服务提供者 29 3.3.1 创建项目注册到Eureka 29 3.3.2 编写提供接口 30 3.4 编写服务消费者 31 3.4.1 直接调用接口 31 3.4.2 通过Eureka来消费接口 32 3.5 开启Eureka认证 33 3.6 Eureka高可用搭建 33 3.6.1 高可用原理 33 3.6.2 搭建步骤 34 3.7 常用配置讲解 35 3.7.1 关闭自我保护 35 3.7.2 自定义Eureka的Instance ID 35 3.7.3 自定义实例跳转链接 36 3.7.4 快速移除已经失效的服务信息 37 3.8 扩展使用 38 3.8.1 Eureka REST API 38 3.8.2 元数据使用 40 3.8.3 EurekaClient使用 41 3.8.4 健康检查 43 3.8.5 服务上下线监控 45 3.9 本章小结 46 第4章 客户端负载均衡Ribbon 47 4.1 Ribbon 47 4.1.1 Ribbon模块 47 4.1.2 Ribbon使用 48 4.2 RestTemplate结合Ribbon使用 49 4.2.1 使用RestTemplate与整合Ribbon 49 4.2.2 RestTemplate负载均衡示例 52 4.2.3 @LoadBalanced注解原理 53 4.2.4 Ribbon API使用 57 4.2.5 Ribbon饥饿加载 58 4.3 负载均衡策略介绍 59 4.4 自定义负载策略 60 4.5 配置详解 61 4.5.1 常用配置 61 4.5.2 代码配置Ribbon 62 4.6 重试机制 63 4.7 本章小结 64 第5章 声明式REST客户端Feign 65 5.1 使用Feign调用服务接口 65 5.1.1 在Spring Cloud中集成Feign 66 5.1.2 使用Feign调用接口 66 5.2 自定义Feign的配置 67 5.2.1 日志配置 67 5.2.2 契约配置 69 5.2.3 Basic认证配置 69 5.2.4 超时时间配置 70 5.2.5 客户端组件配置 71 5.2.6 GZIP压缩配置 72 5.2.7 编码器解码器配置 72 5.3 脱离Spring Cloud 使用Feign 73 5.3.1 原生注解方式 73 5.3.2 构建Feign对象 74 5.3.3 其他配置 75 5.4 本章小结 76 第6章 Hystrix 服务容错处理 77 6.1 Hystrix 77 6.1.1 Hystrix的简单使用 77 6.1.2 回退支持 78 6.1.3 信号量策略配置 79 6.1.4 线程隔离策略配置 79 6.1.5 结果缓存 80 6.1.6 缓存清除 81 6.1.7 合并请求 83 6.2 在Spring Cloud中使用Hystrix 84 6.2.1 简单使用 84 6.2.2 配置详解 85 6.2.3 Feign整合Hystrix服务容错 88 6.2.4 Feign中禁用Hystrix 90 6.3 Hystrix监控 91 6.4 整合Dashboard查看监控数据 92 6.5 Turbine聚合集群数据 94 6.5.1 Turbine使用 94 6.5.2 context-path导致监控失败 95 6.6 本章小结 95 第7章 API网关 96 7.1 Zuul 简介 96 7.2 使用Zuul构建微服务网关 97 7.2.1 简单使用 97 7.2.2 集成Eureka 98 7.3 Zuul路由配置 98 7.4 Zuul过滤器讲解 99 7.4.1 过滤器类型 100 7.4.2 请求生命周期 100 7.4.3 使用过滤器 101 7.4.4 过滤器禁用 103 7.4.5 过滤器中传递数据 103 7.4.6 过滤器拦截请求 104 7.4.7 过滤器中异常处理 106 7.5 Zuul容错和回退 108 7.5.1 容错机制 108 7.5.2 回退机制 109 7.6 Zuul高可用 111 7.7 本章小结 111 第三部分 实战篇 第8章 分布式配置管理 114 8.1 自研配置管理框架Smconf简介 114 8.2 Smconf工作原理 115 8.3 Smconf 部署 116 8.3.1 Mongodb安装 116 8.3.2 Zookeeper安装 117 8.3.3 Smconf Server部署 118 8.4 项目中集成Smconf 119 8.4.1 集成Smconf 119 8.4.2 使用Smconf 120 8.4.3 配置更新回调 121 8.5 Smconf详细使用 122 8.5.1 源码编译问题 122 8.5.2 后台账号管理 122 8.5.3 REST API 123 8.6 Smconf源码解析 125 8.6.1 Client启动 125 8.6.2 启动加载配置 127 8.6.3 配置修改推送原理 128 8.7 本章小结 129 第9章 Sleuth服务跟踪 130 9.1 Spring Cloud集成Sleuth 130 9.2 整合Logstash 131 9.2.1 ELK简介 131 9.2.2 输出JSON格式日志 131 9.3 整合Zipkin 133 9.3.1 创建Zipkin数据收集服务 133 9.3.2 项目集成Zipkin发送调用链数据 134 9.3.3 抽样采集数据 135 9.3.4 用RabbitMq代替Http发送调用链数据 135 9.3.5 用Elasticsearch存储调用链数据 136 9.4 本章小结 137 第10章 微服务之间调用的安全认证 138 10.1 什么是JWT 138 10.2 创建统一的认证服务 139 10.2.1 表结构 139 10.2.2 JWT工具类封装 139 10.2.3 认证接口 141 10.3 服务提供方进行调用认证 142 10.4 服务消费方申请Token 143 10.5 Feign调用前统一申请Token传递到调用的服务中 145 10.6 Zuul中传递Token到路由的服务中 147 10.7 本章小结 148 第11章 Spring Boot Admin 149 11.1 Spring Boot Admin的使用方法 149 11.1.1 创建Spring Boot Admin项目 149 11.1.2 将服务注册到Spring Boot Admin 150 11.1.3 如何在Admin中查看各个服务的日志 151 11.2 开启认证 152 11.3 集成Eureka 153 11.4 集成Turbine 154 11.5 监控服务 155 11.5.1 邮件警报 156 11.5.2 自定义钉钉警报 156 11.6 本章小结 159 第12章 服务的API文档管理 160 12.1 Swagger简介 160 12.2 集成Swagger管理API文档 161 12.2.1 封装Swagger Starter 161 12.2.2 在项目中集成Swagger starter 162 12.2.3 使用Swagger生成文档 162 12.2.4 在线测试接口 163 12.3 Swagger注解 164 12.4 Eureka 控制台快速查看Swagger文档 169 12.5 本章小结 169 第四部分 高级篇 第13章 API网关扩展 172 13.1 用户认证 172 13.1.1 动态管理不需要拦截的API请求 172 13.1.2 创建认证的用户服务 174 13.1.3 路由之前的认证 175 13.1.4 向下游微服务中传递认证之后的用户信息 176 13.1.5 内部服务间的用户信息传递 177 13.2 服务限流 179 13.2.1 限流算法 179 13.2.2 单节点限流 179 13.2.3 集群限流 184 13.2.4 具体服务限流 187 13.2.5 具体接口限流 188 13.3 服务降级 194 13.4 灰度发布 196 13.4.1 原理讲解 196 13.4.2 根据用户做灰度发布 197 13.4.3 根据IP做灰度发布 200 13.5 本章小结 200 第14章 微服务之缓存 201 14.1 Guava Cache本地缓存 201 14.1.1 Guava Cache简介 201 14.1.2 代码示例 202 14.1.3 回收策略 202 14.2 Redis缓存 203 14.2.1 用Redistemplate 操作Redis 203 14.2.2 用Repository操作Redis 204 14.2.3 Spring Cache 缓存数据 206 14.2.4 扩展Spring Cache支持对每个缓存的时间配置 211 14.2.5 缓存异常处理 212 14.2.6 自定义缓存工具类 214 14.3 防止缓存穿透方案 216 14.3.1 什么是缓存穿透 216 14.3.2 缓存穿透的危害 216 14.3.3 解决方案 217 14.3.4 布隆过滤器介绍 217 14.3.5 代码示例 217 14.4 防止缓存雪崩方案 219 14.4.1 什么是缓存雪崩 219 14.4.2 缓存雪崩的危害 219 14.4.3 解决方案 219 14.4.4 代码示例 219 14.4.5 分布式锁方式 220 14.5 本章小结 221 第15章 微服务之存储 222 15.1 存储选型 222 15.2 Mongodb 223 15.2.1 集成Spring Data Mongodb 223 15.2.2 添加数据操作 223 15.2.3 索引使用 225 15.2.4 修改数据操作 227 15.2.5 删除数据操作 228 15.2.6 查询数据操作 229 15.2.7 GridFS操作 231 15.2.8 用Repository方式操作数据 232 15.2.9 自增ID实现 236 15.2.10 批量更新扩展 239 15.3 Mysql 243 15.3.1 集成Spring JdbcTemplate 243 15.3.2 JdbcTemplate代码示例 243 15.3.3 封装JdbcTemplate 操作Mysql更简单 244 15.3.4 扩展JdbcTemplate使用方式 244 15.3.5 常见问题 248 15.4 Elasticsearch 251 15.4.1 集成Spring Data Elasticsearch 251 15.4.2 Repository示例 251 15.4.3 ElasticsearchTemplate示例 254 15.4.4 索引构建方式 257 15.5 本章小结 259 第16章 微服务之分布式事物解决方案 260 16.1 两阶段型 260 16.2 TCC补偿型 261 16.3 最终一致性 261 16.3.1 原理讲解 261 16.3.2 创建可靠性消息服务 263 16.3.3 消息存储表设计 264 16.3.4 提供服务接口 265 16.3.5 创建消息发送系统 269 16.3.6 消费消息逻辑 273 16.3.7 消息管理系统 275 16.4 最大努力通知型事物 276 16.4.1 介绍 276 16.4.2 原理 276 16.5 本章小结 276 第17章 分布式任务调度 277 17.1 Elastic-Job 277 17.1.1 Elastic-Job介绍 277 17.1.2 任务调度目前存在的问题 277 17.1.3 为什么选择Elastic-Job 278 17.2 快速集成 279 17.3 任务使用 280 17.3.1 简单任务 280 17.3.2 数据流任务 281 17.3.3 脚本任务 282 17.4 配置参数讲解 282 17.4.1 注册中心配置 283 17.4.2 作业配置 283 17.4.3 dataflow独有配置 284 17.4.4 script独有配置 284 17.5 多节点并行调度 285 17.5.1 分片概念 285 17.5.2 任务节点分片策略 285 17.5.3 业务数据分片处理 286 17.6 事件追踪 289 17.7 扩展功能 290 17.7.1 自定义监听器 290 17.7.2 定义异常处理 291 17.8 运维平台 291 17.8.1 功能列表 292 17.8.2 部署运维平台 292 17.8.3 运维平台使用 293 17.9 使用经验分享 296 17.9.1 任务的划分和监控 296 17.9.2 任务的扩展性和节点数量 297 17.9.3 任务的重复执行 297 17.9.4 overwrite覆盖问题 298 17.9.5 流水式任务 298 17.10 本章小结 299 第18章 分库分表解决方案 300 18.1 Sharding-JDBC 300 18.1.1 介绍 300 18.1.2 功能列表 301 18.1.3 相关概念 301 18.2 快速集成 302 18.3 读写分离实战 304 18.3.1 准备数据 304 18.3.2 配置读写分离 304 18.3.3 验证读从库 305 18.3.4 验证写主库 307 18.3.5 Hint强制路由主库 308 18.4 分库分表实战 309 18.4.1 常用分片算法 310 18.4.2 使用分片算法 310 18.4.3 不分库只分表实战 311 18.4.4 既分库又分表实战 314 18.5 分布式主键 317 18.6 本章小结 319 ---------------------------8052585 - Spring Cloud微服务架构进阶--------------------------- 前言 第1章 微服务架构介绍1 1.1 微服务架构的出现1 1.1.1 单体应用架构1 1.1.2 SOA架构2 1.1.3 微服务架构3 1.2 微服务架构的流派5 1.3 云原生与微服务9 1.4 本章小结12 第2章 Spring Cloud总览13 2.1 Spring Cloud架构13 2.2 Spring Cloud特性16 2.2.1 Spring Cloud Context:应用上下文16 2.2.2 Spring Cloud Commons:公共抽象19 2.3 本章小结21 第3章 Spring Cloud的基础:Spring Boot22 3.1 Spring Boot简介22 3.2 构建一个微服务24 3.3 Spring Boot配置文件29 3.3.1 默认配置文件29 3.3.2 外部化配置29 3.3.3 YAML30 3.3.4 自动载入外部属性到Bean30 3.3.5 多Profile31 3.3.6 Starter32 3.3.7 自制一个Starter32 3.3.8 Actuator36 3.4 本章小结38 第4章 服务注册与发现:Eureka39 4.1 基础应用40 4.1.1 Eureka简介40 4.1.2 搭建Eureka服务注册中心40 4.1.3 搭建Eureka服务提供者42 4.1.4 搭建Eureka服务调用者43 4.1.5 Eureka服务注册和发现44 4.1.6 Consul的简单应用46 4.2 服务发现原理48 4.3 Eureka Client源码解析49 4.3.1 读取应用自身配置信息50 4.3.2 服务发现客户端52 4.3.3 拉取注册表信息56 4.3.4 服务注册61 4.3.5 初始化定时任务62 4.3.6 服务下线68 4.4 Eureka Server源码解析70 4.4.1 服务实例注册表70 4.4.2 服务注册72 4.4.3 接受服务心跳74 4.4.4 服务剔除75 4.4.5 服务下线77 4.4.6 集群同步78 4.4.7 获取注册表中服务实例信息82 4.5 进阶应用84 4.5.1 Eureka Instance和Client的元数据84 4.5.2 状态页和健康检查页端口设置85 4.5.3 区域与可用区85 4.5.4 高可用性服务注册中心86 4.6 本章小结87 第5章 声明式RESTful客户端:Spring Cloud OpenFeign88 5.1 基础应用88 5.1.1 微服务之间的交互88 5.1.2 OpenFeign简介89 5.1.3 代码示例89 5.2 源码分析91 5.2.1 核心组件与概念91 5.2.2 动态注册BeanDefinition92 5.2.3 实例初始化98 5.2.4 函数调用和网络请求107 5.3 进阶应用111 5.3.1 Decoder与Encoder的定制化111 5.3.2 请求/响应压缩112 5.4 本章小结113 第6章 断路器:Hystrix114 6.1 基础应用114 6.1.1 RestTemplate与Hystrix115 6.1.2 OpenFeign与Hystrix117 6.2 Hystrix原理118 6.2.1 服务雪崩118 6.2.2 断路器119 6.2.3 服务降级操作120 6.2.4 资源隔离121 6.2.5 Hystrix实现思路122 6.3 源码解析123 6.3.1 封装HystrixCommand123 6.3.2 HystrixCommand类结构129 6.3.3 异步回调执行命令129 6.3.4 异步执行命令和同步执行命令137 6.3.5 断路器逻辑137 6.3.6 资源隔离143 6.3.7 请求超时监控148 6.3.8 失败回滚逻辑150 6.4 进阶应用152 6.4.1 异步与异步回调执行命令152 6.4.2 继承HystrixCommand153 6.4.3 请求合并157 6.5 本章小结161 第7章 客户端负载均衡器:Spring Cloud Netflix Ribbon162 7.1 负载均衡162 7.2 基础应用163 7.3 源码分析165 7.3.1 配置和实例初始化165 7.3.2 与OpenFeign的集成167 7.3.3 负载均衡器LoadBalancerClient171 7.3.4 ILoadBalancer173 7.3.5 负载均衡策略实现177 7.4 进阶应用184 7.4.1 Ribbon API184 7.4.2 使用Netty发送网络请求185 7.4.3 只读数据库的负载均衡实现186 7.5 本章小结187 第8章 API网关:Spring Cloud Gateway189 8.1 Spring Cloud Gateway介绍189 8.2 基础应用190 8.2.1 用户服务191 8.2.2 网关服务192 8.2.3 客户端的访问195 8.3 源码解析195 8.3.1 初始化配置196 8.3.2 网关处理器197 8.3.3 路由定义定位器202 8.3.4 路由定位器205 8.3.5 路由断言208 8.3.6 网关过滤器216 8.3.7 全局过滤器227 8.3.8 API端点234 8.4 应用进阶235 8.4.1 限流机制235 8.4.2 熔断降级238 8.4.3 网关重试过滤器240 8.5 本章小结241 第9章 配置中心:Spring Cloud Config243 9.1 基础应用244 9.1.1 配置客户端244 9.1.2 配置仓库245 9.1.3 服务端246 9.1.4 配置验证248 9.1.5 配置动态更新249 9.2 源码解析250 9.2.1 配置服务器251 9.2.2 配置客户端261 9.3 应用进阶267 9.3.1 为Config Server配置多个repo268 9.3.2 客户端覆写远端的配置属性268 9.3.3 属性覆盖269 9.3.4 安全保护269 9.3.5 加密解密270 9.3.6 快速响应失败与重试机制272 9.4 本章小结272 第10章 消息驱动:Spring Cloud Stream274 10.1 消息队列274 10.2 基础应用276 10.2.1 声明和绑定通道276 10.2.2 自定义通道276 10.2.3 接收消息276 10.2.4 配置278 10.3 源码分析278 10.3.1 动态注册BeanDefinition279 10.3.2 绑定服务282 10.3.3 获取绑定器284 10.3.4 绑定生产者289 10.3.5 消息发送的流程291 10.3.6 StreamListener注解的处理293 10.3.7 绑定消费者298 10.3.8 消息的接收304 10.4 进阶应用306 10.4.1 Binder For RocketMQ306 10.4.2 多实例311 10.4.3 分区311 10.5 本章小结313 第11章 消息总线:Spring Cloud Bus314 11.1 基础应用314 11.1.1 配置服务器315 11.1.2 配置客户端316 11.1.3 结果验证316 11.2 源码解析318 11.2.1 事件的定义与事件监听器319 11.2.2 消息的订阅与发布326 11.2.3 控制端点328 11.3 应用进阶329 11.3.1 在自定义的包中注册事件329 11.3.2 自定义监听器330 11.3.3 事件的发起者331 11.4 本章小结332 第12章 认证与授权:Spring Cloud Security333 12.1 基础应用333 12.1.1 OAuth2简介334 12.1.2 JWT336 12.1.3 搭建授权服务器338 12.1.4 配置资源服务器341 12.1.5 访问受限资源344 12.2 整体架构346 12.3 源码解析348 12.3.1 安全上下文349 12.3.2 认证350 12.3.3 授权357 12.3.4 Spring Security中的过滤器与拦截器361 12.3.5 授权服务器372 12.3.6 资源服务器387 12.3.7 令牌中继机制394 12.4 进阶应用395 12.4.1 Spring Security定制395 12.4.2 OAuth2定制399 12.4.3 SSO单点登录403 12.5 本章小结406 第13章 服务链路追踪:Spring Cloud Sleuth407 13.1 链路监控组件简介407 13.2 基础应用410 13.2.1 特性411 13.2.2 项目准备411 13.2.3 Spring Cloud Sleuth独立实现414 13.2.4 集成Zipkin414 13.3 本章小结420 |