赞誉

Spring Cloud是开发分布式系统的“全家桶”,它实现了很多分布式应用中的“套路”。目前Spring Cloud 正被越来越多的企业用于生产。本书知识体系非常全面,涵盖了微服务、Spring Cloud、分布式事务、缓存、存储等话题,让读者能够快速上手构建自己的分布式系统,值得一读。

本书行文流畅,由浅入深。不仅介绍了分布式开发的市场布局,更是对Spring Cloud进行了一次全方位的实践与对话。本书结合作者多年的开发和项目管理经验,为读者徐徐展开了一幅优雅的技术画卷。

本书从技术原理、工程实践、进阶提升3个维度详解Spring Cloud微服务的架构与开发

指导零基础读者快速入门并掌握工程实践能力,最终进阶为Spring Cloud微服务技术达人

详细介绍

全书共分为四篇:准备篇,基础篇,实战篇,高级篇。

准备篇(1~2章)

第1章Spring Cloud 与微服务概述

微服务架构是一种架构风格,而Spring Cloud是实现微服务架构的一系列框架的有序集合。本章将带你进入神秘的微服务世界,去探索微服务存在的价值及意义,并为阅读后面的章节打下扎实的理论基础。

  • 1.1 传统的单体应用
  • 1.2 什么是微服务
  • 1.3 什么是Spring Cloud

第2章实战前的准备工作

工欲善其事,必先利其器。在开始学习之前,最重要的事情就是准备开发环境了,各位读者需要准备JDK1.8、Maven3.3.3、 Spring Tools 4 for Eclipse。为了保证读者在实践的时候所用及所见跟本书介绍的一样,建议大家的环境跟本书所用的一致。

  • 2.1 开发环境的准备
  • 2.2 Spring Boot入门
  • 2.3 Spring Boot Starter自定义

基础篇(3~7章)

第3章Eureka注册中心

注册中心在微服务架构中是必不可少的一部分,主要用来实现服务治理功能,本章我们将学习如何用Netflix 提供的Eureka作为注册中心,来实现服务治理的功能

  • 3.1 Eureka
  • 3.2 使用 Eureka 编写注册中心服务
  • 3.3 编写服务提供者
  • 3.4 编写服务消费者
  • 3.5 开启 Eureka 认证
  • 3.6 Eureka 高可用搭建
  • 3.7 常用配置讲解
  • 3.8 扩展使用

第4章客户端负载均衡Ribbon

目前主流的负载方案分为两种: -种是集中式负载均衡,在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件的(比如F5),也有软件的(比如Nginx)。另一种则是客户端自己做负载均衡,根据自己的请求情况做负载,Ribbon 就属于客户端自己做负载。

  • 4.1 Ribbon
  • 4.2 RestTemplate结合 Ribbon 使用
  • 4.3 负载均衡策略介绍
  • 4.4 自定义负载策略
  • 4.5 配置详解
  • 4.6 重视机制

第5章声明式 REST客户端Feign

  • 5.1 使用 Feign 调用服务接口
  • 5.2 自定义 Feign的配置
  • 5.3 脱离 Spring Cloud 使用 Feign

第6章Hystrix服务容错处理

在微服务架构中存在多个可直接调用的服务,这些服务若在调用时出现故障会导致连锁效应,也就是可能会让整个系统变得不可用,这种情况我们称之为服务雪削效应。我们可以通过Hystrix解决服务雪崩效应。下面我们一起来学习如何用Hystrix实现服务容错处理。

  • 6.1 Hystrix
  • 6.2 在 Spring Cloud 中使用Hystrix
  • 6.3 Hystrix监控
  • 6.4 整合 Dashboard 查看监控数据
  • 6.5 Turbine 聚合集群数据

第7章API 网关

API网关是对外服务的一个入口,其隐藏了内部架构的实现,是微服务架构中必不可少的一个组件。API网关可以为我们管理大量的API接口,还可以对接客户、适配协议、进行安全认证、转发路由、限制流量、监控日志、防止爬虫、进行灰度发布等

  • 7.1 Zuul简介
  • 7.2 使用Zuul构建微服务网关
  • 7.3 Zuul路由配置
  • 7.4 Zuul过滤器讲解
  • 7.5 Zuul容错和回退
  • 7.6 Zuul使用小经验
  • 7.7 Zuul高可用

实战篇(8~14章)

第8章API 网关之Spring Cloud Gateway

Spring Cloud Gateway是Spring官方基于Spring 5.0、Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单有效的、 统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,其目标是替代Netlix Zuul,它不仅提供统一的路由方式, 并且基于Filter链的方式提供了网关基本的功能,例如:安全、监控/埋点和限流等。

  • 8.1 Spring Cloud Gateway介绍
  • 8.2 Spring Cloud Gateway工作原理
  • 8.3 Spring Cloud Gateway快速上手
  • 8.4 Spring Cloud Gateway路由断言工厂
  • 8.5 Spring Cloud Gateway过滤器工厂
  • 8.6 全局过滤器
  • 8.7 实战案例

第9章自研分 布式配置管理

微服务架构下,服务的数量少则几十,多则几百甚至上千。每次修改一个配置都需要跟进修改多个项目,然后再重启这些项目。配置的集中管理在这种情况下显得格外重要。分布式配置管理可以将多个项目的配置进行集中化的管理,统-.修改,实时生效,避免重复的劳动,可以节约时间,降低出错的概率。

  • 9.1 自研配置管理框架Smconf简介
  • 9.2 Smconf工作原理
  • 9.3 Smconf部署
  • 9.4 项目中集成Smconf
  • 9.5 Smconf详细使用
  • 9.6 Smconf源码解析

第10章分布式配置中心Apollo

Apollo (阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

  • 10.1 Apollo简介
  • 10.2 Apollo的核心功能点
  • 10.3 Apollo核心概念
  • 10.4 Apollo本地部署
  • 10.5 Apollo Portal管理后台使用
  • 10.6 Java中使用Apollo
  • 10.7 Apollo的架构设计

第11章Sleuth 服务跟踪

在微服务架构下,服务之间的调用关系越来越复杂,通过Zuul转发到具体的业务接口,一个接口中会涉及多个微服务的交互,只要其中某个服务出现问题,整个请求都将失败。这个时候我们要想快速定位到问题所在,就需要用到链路跟踪了。每个请求都是一-条完整的调用链,通过调用链我们可以清楚地知道这个请求经过了哪些服务,在哪个服务上耗时多长时间,进而达到快速定位问题的目的。

  • 11.1 Spring Cloud 集成 Sleuth
  • 11.2 整合 Logstash
  • 11.3 整合Zipkin

第12章微服务之间调用的安全认证

在微服务架构下,我们的系统根据业务被拆分成了多个职责单- -的微服务。每个服务都有自己的一套API提供给别的服务调用,那么如何保证安全性呢?不是说你想调用就可以调用,一定要有认证机制,即只有我们内部服务发出的请求,才可以调用我们的接口。

  • 12.1 什么是 JWT
  • 12.2 创建统一的认证服务
  • 12.3 服务提供方进行调用认证
  • 12.4 服务消费方申请 Token
  • 12.5 Feign 调用前统一申请 Token 传递到调用的服务中
  • 12.6 RestTemplate调用前统一申请 Token 传递到调用的服务中
  • 12.7 Zuul中传递 Token 到路由的服务中

第13章Spring Boot Admin

Spring Boot有一个非常好用的监控和管理的源软件,这个软件就是Spring BootAdmin。该软件能够将Actuator中的信息进行界面化的展示,也可以监控所有SpringBoot应用的健康状况,提供实时警报功能。

  • 13.1 Spring Boot Admin 的使用方法
  • 13.2 开启认证
  • 13.3 集成 Eureka
  • 13.4 监控服务

第14章服务的API文档管理

随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,演变成了前后端分离的形式,App就是典型的前后端分离。前端和后端的唯一联系变成了 API接口; API文档变成了前后端开发人员联系的纽带,变得越来越重要

  • 14.1 Swagger 简介
  • 14.2 集成 Swagger 管理 API 文档
  • 14.3 Swagger 注解
  • 14.4 Eureka 控制台快速查看 Swagger 文档
  • 14.5 请求认证
  • 14.6 Zuul中聚合多个服务Swagger

高级篇(15~21章)

第15章API网关扩展

Spring Cloud Zuul只是为我们提供了-一个构建网关的架子,各种高级操作还是得结合自身的业务去做扩展,本章将扩展学习网关中必不可少的一些功能。

  • 15.1 用户认证
  • 15.2 服务限流
  • 15.3 服务降级
  • 15.4 灰度发布

第16章微服务之缓存

缓存也是高并发系统的三把利器之- -,这足以说明其重要性。缓存有很多种,可以缓存在客户端,也可以缓存在服务端,本章我们主要讲解服务端的缓存方式。在日常的开发中,获取一些数据可能特别费时,频繁查数据库会导致磁盘和CPU负载过高,缓解的方法就是将数据缓存在内存中,当下次有相同的请求过来时就直接返回内存中的数据。利用缓存可以提升用户体验,减轻数据库压力。

  • 16.1 Guava Cache 本地缓存
  • 16.2 Redis 缓存
  • 16.3 防止缓存穿透方案
  • 16.4 防止缓存雪崩方案

第17章微服务之存储

在微服务架构下,推荐每个服务都有自己独立的数据库、缓存、搜索等,这样做的优点是能够让服务之间的耦合度降低,同时可以让不同的服务根据不同的业务需求选择自己合适的存储方式。搜索服务可以用Elasticsearch,日志服务可以用Mongodb,业务数据可以用MySQL,缺点就是对于事务的处理比较麻烦。所以我们尽量避免分布式事务,采用合理的设计。

  • 17.1 存储选型
  • 17.2 Mongodb
  • 17.3 Mysql
  • 17.4 Elasticsearch

第18章微服务之分 布式事务解决方案

事务是一组单元化的操作,这组操作可以保证要么全部成功,要么全部失败;或者只要有一个失败的操作,就会把其他已经成功的操作回滚,以此来保证数据的完整性。分布式事务的产生就是为了能够解决分布式环境下数据的一致性问题,单--数据库可以通过ACID来保证自身的事务处理,但在分布式环境下,涉及的就是不同的服务不同的数据库,仅靠单一的事务处理已经满足不了需求。

  • 18.1 两阶段性
  • 18.2 TCC 补偿型
  • 18.3 最终一致性
  • 18.4 最大努力通知型事务

第19章分布式任务调度

分布式任务调度和微服务架构紧密相关,普通的调度任务在微服务架构下变成了复杂的分布式任务,分布式任务需要有全局的调度功能,否则相同的任务在多节点同时执行,会导致数据错误。本章将带领大家学习--个优秀的分布式任务调度框架一Elastic-Job。

  • 19.1 Elastic-Job
  • 19.2 快速集成
  • 19.3 任务使用
  • 19.4 配置参数讲解
  • 19.5 多节点并行调度
  • 19.6 事件追踪
  • 19.7 扩展功能
  • 19.8 运维平台
  • 19.9 使用经验分享

第20章分库分表解决方案

随着时间和业务的发展,数据库中的表会越来越多,表中的数据也会越来越多,带来的问题就是对于数据的操作会越来越慢。由于不是分布式部署,单台服务器的资源有限,最终数据库的数量和数据处理能力会遇到瓶颈,这时采用分库分表就能解决上述的问题

  • 20.1 Sharding-JDBC
  • 20.2 快速集成
  • 20.3 读写分离实战
  • 20.4 分库分表实战
  • 20.5 分布式组件

第21章最佳生产实践经验

在开发过程中会遇到这样- -种情况,那就是只需要修改一个服务,但是这个服务依赖了其他的3个服务,导致开发人员本地也要启动其他3个服务,还要启动一个Eureka注册中心。问题显而易见,在依赖过多的情况下,本地需要启动很多无须修改的服务。

  • 21.1 开发环境和测试环境共用Eureka
  • 21.2 Swagger和Actuator访问进行权限控制
  • 21.3 Spring Boot Admin监控被保护的服务
  • 21.4 Apollo配置中心简化版搭建分享
  • 21.5 Apollo使用小经验
  • 21.6 Apollo动态调整日志级别
  • 21.7 Apollo存储加密
  • 21.8 扩展Apollo支持存储加解密
  • 21.9 Apollo结合Zuul实现动态路由
  • 21.10 Apollo整合Archaius
  • 21.11 Elastic-Job的Spring-Boot-Starter封装
  • 21.12 Spring Boot中Mongodb多数据源封装
  • 21.13 Zuul中对API进行加解密

目录详情