Spring Cloud微服务和分布式系统实践
本书特色
[
《Spring Cloud微服务和分布式系统实践》从企业的真实需求出发,理论结合实际,深入讲解Spring Cloud微服务和分布式系统的知识。书中既包括Spring Cloud微服务的各类常用组件的讲解,又包括分布式系统的常用知识的介绍。Spring Cloud组件方面主要讲解服务注册和服务发现(Eureka)、服务调用(Ribbon和OpenFeign)、断路器(Hystrix和Resilience4j)、网关(Zuul和Gateway)、配置(Config)、全链路追踪(Sleuth)、微服务的监控(Admin)等;分布式系统方面主要讲解分布式数据库、分布式缓存、会话和权限以及发号机制等。本书的实践部分通过Apache Thrift讲解了远程过程调用(RPC)在分布式系统中的应用,并且分析了处理高并发的一些常用方法,*后还通过一个简单的实例讲解了微服务系统的搭建。 本书适合想要学习Spring Cloud微服务、分布式系统开发的各类Java开发人员阅读,包括初学者和开发工程师。本书对架构师也有一定的帮助。
]
内容简介
[
– 结合实践讲解Spring Cloud 微服务系统基础组件的原理和应用 – 结合微服务讲解分布式系统的相关知识 – 结合企业真实需求讲解微服务(分布式)系统的开发 – 基于Spring Boot 2.x和Greenwich.RELEASE进行讲解。 本书是讲述Spring Cloud微服务及其组件的专业技术书籍。微服务系统作为分布式系统的一种形式,必然会带有分布式系统的各种弊病,因此本书也会介绍分布式系统的一些常见知识,以更好满足企业构建系统的需求。 本书首先介绍分布式系统和微服务的概念以及技术基础;然后介绍Spring Cloud的主要组件,包含服务治理和服务发现、服务调用、断路器、API网关、服务配置和服务监控等,这部分是本书的主要内容;接着介绍企业实践中经常用到的分布式技术,包括分布式数据库事务、分布式Redis缓存等;*后介绍远程过程调用(RPC)以及微服务设计和高并发实践。
]
作者简介
[
杨开振,精通Java互联网技术,拥有十余年企业一线开发和实践经验,著有《深入浅出Spring Boot 2.x》《深入浅出MyBatis技术原理与实战》《Java EE互联网轻量级框架整合开发——SSM框架(Spring MVC Spring MyBatis)和Redis实现》等业内畅销书。
]
目录
目 录第 一部分 概述和基础第 1章 分布式和微服务概述 31.1 互联网系统的特征 41.2 分布式系统概述 41.2.1 分布式的切分方法 51.2.2 分布式系统所面临的问题 81.2.3 分布式的衡量标准 91.3 分布式系统的设计原则 101.3.1 CAP原则 101.3.2 BASE理论 111.4 微服务架构 121.4.1 概述 121.4.2 微服务的风格 121.4.3 微服务和分布式系统的关系 151.5 Spring Cloud 151.5.1 Spring Cloud的各个组件的简介 161.5.2 Spring Cloud版本说明 161.6 微服务系统样例简介 17第 2章 技术基础 192.1 Spring Boot 192.1.1 创建Spring Boot工程 192.1.2 Spring Boot开发简介 212.1.3 多文件配置 252.1.4 打包和运行 272.1.5 Spring Boot监控 282.1.6 Spring Boot小结 292.2 REST风格简介 292.2.1 REST风格概述 302.2.2 REST风格端点开发 312.2.3 状态码和响应头 352.2.4 客户端RestTemplate的使用 38第二部分 Spring Cloud微服务第3章 服务治理——Eureka 433.1 服务治理中心 433.1.1 搭建Eureka服务治理中心 433.1.2 服务发现 473.1.3 多个服务治理中心实例 513.2 Eureka治理机制 543.2.1 基础架构 543.2.2 服务治理中心工作原理 573.2.3 Region和Zone 603.2.4 Eureka关键源码解读 623.2.5 Eureka使用注意点 693.3 Eureka配置 693.3.1 客户端服务注册配置 703.3.2 客户端服务实例配置 71第4章 客户端负载均衡——Ribbon 734.1 负载均衡概述 734.2 初识Ribbon 744.2.1 Ribbon概述 744.2.2 Ribbon是如何实现负载均衡的 754.3 Ribbon负载均衡器和策略 804.3.1 负载均衡器 804.3.2 负载均衡策略 844.4 Ribbon服务实例清单维护 934.4.1 获取服务实例清单 944.4.2 更新服务实例清单 964.4.3 服务实例的心跳监测 974.4.4 IPing接口 994.5 自定义Ribbon客户端 1004.5.1 全局配置 1014.5.2 局部定义 1014.6 Ribbon使用实践 103第5章 断路器——Hystrix 1055.1 概述 1055.1.1 熔断的概念 1055.1.2 服务降级 1075.1.3 Hystrix的功能简介 1085.2 入门实例 1085.3 Hystrix工作原理 1125.3.1 Hystrix命令 1135.3.2 缓存 1145.3.3 断路器 1155.3.4 隔离 1195.4 Hystrix实践 1225.4.1 使用Hystrix命令 1235.4.2 请求缓存 1295.4.3 请求合并 1375.4.4 线程池划分 1455.5 仪表盘 1465.5.1 单体监控 1475.5.2 Turbine聚合监控 1515.6 Hystrix属性配置 1535.6.1 命令属性配置 1545.6.2 线程池属性配置 157第6章 新断路器——Resilience4j 1586.1 断路器(CircuitBreaker) 1606.1.1 断路器配置和注册机 1606.1.2 断路器的状态 1626.1.3 使用断路器的实例 1626.1.4 异常处理 1656.1.5 拾遗 1666.2 限速器(RateLimiter) 1686.2.1 使用实践 1686.2.2 拾遗 1706.3 舱壁隔离(Bulkhead) 1716.3.1 使用舱壁隔离 1716.3.2 拾遗 1736.4 重试器(Retry) 1736.4.1 使用重试机制 1736.4.2 拾遗 1756.5 缓存(Cache) 1766.5.1 使用Resilience4j缓存 1766.5.2 拾遗 1786.6 时间限制器(TimeLimiter) 1786.7 组件混用 1796.8 使用Spring Boot 2的配置方式 1816.8.1 通过配置创建断路器 1816.8.2 通过配置创建限速器 183第7章 声明式调用——OpenFeign 1857.1 OpenFeign的使用 1867.1.1 入门实例 1867.1.2 常见的传参场景 1887.1.3 OpenFeign客户端接口的继承 1907.1.4 OpenFeign客户端的配置 1917.1.5 OpenFeign的全局配置 1977.2 配置Hystrix 1997.2.1 使用服务降级 2007.2.2 Hystrix中关于OpenFeign的其他配置 2037.2.3 使用建议 2047.3 使用Resilience4j调用OpenFeign接口 204第8章 旧API网关——Zuul 2078.1 什么是网关 2088.2 Zuul入门实例 2098.3 Zuul原理——过滤器 2118.3.1 过滤器设计和责任链 2118.3.2 开发过滤器 2148.3.3 Zuul自动装配的过滤器 2188.4 限流 2208.4.1 Resilience4j限速器限流 2208.4.2 spring-cloud-zuul-ratelimit限速 2228.5 动态路由 2248.5.1 动态路由原理 2248.5.2 动态路由实例 2268.6 灰度发布(金丝雀发布) 2308.6.1 标记微服务是否为灰色发布 2308.6.2 网关过滤 2318.7 使用Hystrix熔断 232第9章 新网关——Spring CloudGateway 2359.1 认识Gateway 2369.1.1 入门实例 2379.1.2 Gateway执行原理 2389.2 断言(Predicate) 2429.2.1 Before路由断言工厂 2429.2.2 After路由断言工厂 2439.2.3 Between路由断言工厂 2449.2.4 Cookie路由断言工厂 2459.2.5 Header路由断言工厂 2469.2.6 Host路由断言工厂 2469.2.7 Method路由断言工厂 2479.2.8 Path路由断言工厂 2489.2.9 Query路由断言工厂 2499.2.10 RemoteAddr路由断言工厂 2509.2.11 Weight路由断言工厂 2509.3 过滤器(Filter)概述 2539.4 内置过滤器工厂 2539.4.1 AddRequestHeader过滤器工厂 2549.4.2 AddRequestParameter过滤器工厂 2549.4.3 AddResponseHeader过滤器工厂 2559.4.4 Retry过滤器工厂 2569.4.5 Hystrix过滤器工厂 2589.4.6 RequestRateLimiter过滤器工厂 2599.4.7 StripPrefix过滤器工厂 2629.4.8 RewritePath过滤器工厂 2639.4.9 SetStatus过滤器工厂 2649.4.10 小结 2659.5 自定义过滤器 2659.5.1 自定义过滤器——使用Resilience4j限流 2659.5.2 全局过滤器——转发token 2689.5.3 过滤器的顺序 2699.6 Gateway知识补充 2739.6.1 基于服务发现的路由 2739.6.2 度量和动态更新路由 274第 10章 配置——Spring Cloud Config 27710.1 入门实例——使用Git仓库 27710.1.1 服务端开发 27810.1.2 客户端开发 28010.1.3 验证配置 28110.1.4 小结 28210.2 使用其他方式实现配置 28210.2.1 使用本地文件 28210.2.2 使用SVN配置 28310.2.3 使用数据库 28410.3 服务端的使用详解 28610.3.1 敏感配置加密和解密 28610.3.2 查看配置文件和监控端点 28910.3.3 安全认证 29110.3.4 高可用的Config配置 293第 11章 Spring Cloud Sleuth全链路追踪 29511.1 链路追踪的基本概念 29511.2 Spring Cloud Sleuth和Zipkin 29711.3 实例 29811.3.1 搭建Zipkin服务器 29811.3.2 搭建服务提供者和服务消费者 30011.3.3 搭建网关服务 30311.3.4 查看全链路追踪 30411.3.5 在链路中自定义样本标记属性 30611.4 持久化 30811.4.1 在数据库中存储链路样本 30811.4.2 在Elasticsearch中存储链路样本 309第 12章 微服务的监控——Spring Boot Admin 31212.1 本章实例简介 31312.2 URL注册方式 31312.2.1 Admin服务端开发 31312.2.2 Admin客户端开发 31412.2.3 查看Admin服务端监测平台 31512.3 服务发现注册方式 31612.4 使用Spring Security保护Admin服务端 319第三部分 分布式技术第 13章 生成唯一的ID——发号机制 32313.1 生成ID的常见办法 32313.1.1 使用UUID 32413.1.2 为什么不用UUID 32413.1.3 数据库自增长 32513.1.4 使用Redis生成ID 32713.1.5 时钟算法 32913.1.6 变异时钟算法——SnowFlake算法 33113.1.7 小结 33413.2 自定义发号机制 334第 14章 分布式数据库技术 33714.1 基础知识 33714.1.1 数据库的分表、分库和分区的概念 33714.1.2 Spring多数据源支持 33914.2 开发环境搭建 34114.2.1 SSM框架整合 34214.2.2 配置多数据源 34514.3 分片算法 35014.3.1 哈希分片之求余算法 35114.3.2 一致性哈希算法 35214.3.3 热点分配法 35714.4 分片中间件ShardingSphere 35814.4.1 概述 35814.4.2 ShardingSphere的重要概念 35914.4.3 ShardingSphere的分片 36014.4.4 实例 36114.4.5 结束语 363第 15章 分布式数据库事务 36415.1 强一致性事务 36415.1.1 两阶段提交协议——XA协议 36515.1.2 三阶段提交协议 37115.1.3 为什么微服务不适合使用强一致性事务 37215.2 弱一致性事务 37315.2.1 本节样例模型和冲正交易的概念 37415.2.2 使用状态表 37515.2.3 使用可靠消息源——RabbitMQ 37615.2.4 提高尝试次数和幂等性 38015.2.5 TCC补偿事务 38115.2.6 小结 38315.3 分布式事务应用的实践理论 38315.3.1 什么时候使用分布式事务 38315.3.2 数据修复思路 384第 16章 分布式缓存——Redis 38716.1 Redis的高可用 38816.1.1 哨兵模式 38916.1.2 Redis集群 39416.2 使用一致性哈希(ShardedJedis) 40216.3 分布式缓存实践 40316.3.1 大对象的缓存 40316.3.2 缓存穿透、并发和雪崩 40416.3.3 缓存实践的一些建议 406第 17章 分布式会话 40717.1 分布式会话的几种方式 40717.2 黏性会话 40817.3 服务器会话复制 40817.4 使用缓存(spring-session-data-redis) 40917.5 持久化到数据库 411第 18章 分布式系统权限验证 41218.1 Spring Security 41218.1.1 简单使用Spring Security 41318.1.2 使用自定义用户验证 41518.1.3 使用缓存共享实现分布式权限 42118.1.4 跨站点请求伪造(CSRF)攻击 42318.1.5 使用自定义页面 42518.2 自定义微服务权限控制 42718.2.1 基础包开发 42818.2.2 开发Eureka客户端 43218.2.3 网关开发 43418.2.4 服务调用 43818.3 OAuth 2.0概述 44118.3.1 OAuth的概念和流程 44118.3.2 使用JWT进行安全认证 44318.3.3 spring-security-oauth2 44418.4 Spring Cloud Security 44518.4.1 构建认证服务器 44618.4.2 开发SSO客户端 45018.4.3 测试 453第四部分 微服务系统实践第 19章 远程过程调用 45919.1 远程过程调用 45919.1.1 REST风格服务调用性能测试 45919.1.2 RPC入门 46019.1.3 RPC和REST风格服务调用的对比 46119.2 Thrift简介 46219.2.1 配置Thrift 46219.2.2 Thrift的数据结构和服务接口 46319.2.3 开发业务逻辑 46419.2.4 启动Thrift服务器 46519.2.5 Thrift客户端 46619.2.6 使用断路器保护服务调用 46819.3 RPC小结 469第 20章 微服务设计和高并发实践 47020.1 微服务设计原则 47020.1.1 服务拆分方法 47020.1.2 微服务的设计原则 47120.1.3 微服务架构 47120.2 高并发系统的一些优化经验 47220.2.1 提高性能 47320.2.2 服务高可用 47920.3 简易微服务系统实例 48820.3.1 服务治理中心(ms-eureka) 48920.3.2 搭建产品微服务(ms-product) 49020.3.3 网关微服务开发(ms-zuul) 49820.3.4 资金微服务(ms-fund) 50820.3.5 服务实例监测平台(ms-admin) 51020.3.6 Hystrix仪表盘(ms-dashboard) 51120.3.7 服务链路追踪(ms-sleuth) 512
封面
书名:Spring Cloud微服务和分布式系统实践
作者:杨开振著
页数:514页
定价:¥119.0
出版社:人民邮电出版社
出版日期:2020-05-01
ISBN:9787115532206
PDF电子书大小:62MB 高清扫描完整版
本文标题:《Spring Cloud微服务和分布式系统实践》PDF下载
资源仅供学习参考,禁止用于商业用途,请在下载后24小时内删除!