屌的一批!阿里 P8 推荐的 Spring Cloud 实战笔记
Spring Cloud 前世今生
Spring Cloud 体系由 Spring 在 2015 年年初推出,至今已经五年多,其子项目在不断增加与完善,其所包含的功能点已经基本满足整个微服务体系的需求。加上 Spring 本身强大的技术后盾和活跃的技术社区氛围,Spring Cloud 已经形成了一股势不可挡的力量,迅速扩张、覆盖至整个互联网技术公司。尝试调研使用并在生产环境落地 Spring Cloud 的互联网公司越来越多,Netflix 公司也在不断迭代与完善其组件,源源不断地供给 Spring Cloud 更新的源泉。
Spring Cloud 问世之前各大互联网公司都有自己的服务框架,大多数是在参考业内的基础上自主研发,导致各个公司重复造轮子,浪费了资源并降低了效率,一旦开发人员更替有很大可能停止维护又重新造个轮子。技术人员在更换工作的时候要重新熟悉新公司的整个技术体系,带来的成本也很高,像很多年前 SSH 一统江湖的时候每个公司都是 SSH,在技术层面形成了大一统之势。利用 SpringCloud,无技术体系切换的学习成本,由 Apache、Spring 等开源组织维护技术框架,互联网公司可以更多专注于自身公司的业务层面。
今天给大家分享一份《极简Spring Cloud实战》本书精巧实用、快速入门,资深 Spring Cloud 践行者经验集结,组件应用与原理分析结合,并以综合案例融合微服务和 DevOps 实践
如何阅读本书
本书分为三篇,共 14 章内容。
基础服务篇(第 1~9 章):本篇内容是实践微服务必备的知识点和技能,需要重点学习。
任务与消息篇(第 10~13 章):主要介绍消息处理以及任务流依赖处理方面的组件的使用及其实现原理。
微服务实战篇(第 14 章):本篇是基于 Spring Cloud、Docker、OAuth2 构建微服务的一个完整案例。
第一篇 基础服务篇
本篇将为读者介绍微服务架构的演进过程,带领读者了解什么是微服务,为什么需要微服务,以及微服务与 Spring Cloud 之间是什么关系,为什么要选择 Spring Cloud 来实现微服务而不是市面上现存的其他解决方案。了解之后,相信读者会有自己的答案。
第 1 章 微服务与 Spring Cloud:第 1 章对微服务演进历程以及 Spring Cloud 的全貌进行了提纲挈领的介绍,以期读者有全局性认知,使后面的学习不会碎片化。
第 2 章 服务发现: Eureka:Eureka 是 Netflix 开源的一款提供服务注册和发现的产品,提供了完整的服务注册和服务发现实现,也是 Spring Cloud 体系中最重要、最核心的组件之一。通俗讲,Eureka 就是一个服务中心,将所有可以提供的服务都注册到它这里来管理,其他各调用者需要的时候去注册中心获取,然后服务调用方再向服务提供方发起调用,避免了服务之间的直接调用,方便后续的水平扩展、故障转移等。
第 3 章 配置中心:Config:Spring Could Config 是一个提供了分布式配置管理功能的 Spring Cloud 子项目。在以往的单体应用中往往是代码与配置文件放在一个应用包中,但是随着系统的体量越来越大,我们会将系统分成多个服务,对于这么多服务的配置管理以及热生效等方面的支持将会越来越麻烦。Spring Cloud Config 完美解决了这些问题。
第 4 章 客户端负载均衡:Ribbon:Ribbon 是一个基于 HTTP 和 TCP 客户端的负载均衡器。它可以在客户端配置 ribbonServerList(服务端列表),然后轮询请求以实现负载均衡。它在联合 Eureka 使用时,ribbonServerList 会被 DiscoveryEnabledNIWSServerList 重写,扩展成从 Eureka 注册中心获取服务端列表。同时它会用 NIWSDiscoveryPing 来取代 IPing,它将职责委托给 Eureka 来确定服务端是否已经启动。
第 5 章 RESTful 客户端:Feign:在实际开发过程中,尽管 Eureka 的注册发现和 Ribbon 的客户端负载均衡很强大,但是我们不可能每次都对 URL 进行远程调用,像拼参数这种事情会让每个开发人员痛苦不堪,而 Feign 将会解决这些问题。Feign 是一个 Web 服务的客户端框架,它让 Web 服务的客户端开发变得更容易。只需要使用 Feign 创建一个接口加上一个注解就行了。在使用 Feign 时,Spring Cloud 还可以整合 Ribbon 和 Eureka,为 HTTP 客户端提供负载均衡的能力。
第 6 章 熔断器:Hystrix:微服务架构中,一般存在着很多服务单元。这样就有可能某个单元因为网络原因或自身问题而出现故障或延迟,导致调用方的对外服务也出现延迟。如果此时调用方的请求不断增加,时间一长就会由于等待故障方响应而形成任务积压,最终导致调用方自身服务的瘫痪。为了解决这种问题,便出现了断路器(或称熔断器,Circuit Breaker)模式。
第 7 章 路由网关:Zuul:Spring Cloud 体系中支持 API Gateway 落地的技术就是 Zuul。Spring Cloud Zuul 路由是微服务架构中不可或缺的一部分,提供动态路由、监控、弹性和安全等边缘服务。
第 8 章 网关新选择:Gateway:Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0、Spring Boot 2.0 和 Project Reactor 等技术开发的网关,Spring Cloud Gateway 旨在为微服务架构提供一种简单而有效的统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,目标是替代 Netflix Zuul。其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如安全、监控/埋点和限流等。
第 9 章 调用链追踪:Spring Cloud Sleuth:主要介绍了 Spring Cloud 中注册中心的其他实现和快速调试、开发脚手架。
第 10 章 加密管理:Vault:通常项目中敏感配置信息一般需要进行加密处理,比如数据库密码等,但 Spring Boot 内置不提供加密支持,不能加密配置文件信息。HashiCorp Vault 则可以解决这个问题,它提供集中管理密文和保护敏感数据的服务,而 Spring Cloud Vault 作为 HashiCorp Vault 的客户端,支持访问 HashiCorp Vault 内存储的数据,避免了在 Spring Boot 程序中存储敏感数据,为该场景提供了解决方案。它允许应用程序以透明的方式访问存储在 Vault 实例中的密文。比如 API 令牌、SSL 证书和口令。它还可以负责处理用户的访问控制,具有撤销令牌、审计功能,跟踪用户等功能。
第 11 章 公共子项目:Spring Boot CLI 是 Spring Boot 提供的一个命令行工具,它可以提供快速运行 SpringBoot 程序的功能,并支持插件功能,当我们为 Spring Boot CLI 安装上 Spring Cloud 插件时,它提供的命令行操作也可以用于 Spring Cloud。我们可以支持 Spring Cloud Config 客户端对配置信息的加解密处理,甚至可以直接通过 CLI 在命令行上运行诸如 Eureka、Zipkin、Config Server 等服务。它为我们日常开发中调试搭建环境测试等场景提供了极大的便利。
第二篇 任务与消息篇
上一篇全面介绍了 Spring Cloud 生态中偏重于服务调用、服务治理、服务监控等方面的各个组件,接下来将进入一个新篇。这一篇将介绍 Spring Cloud 生态中有关消息总线、任务广播、批处理等方面的各个组件,同样非常实用。
第 12 章 消息驱动:Spring Cloud Stream:在企业级应用中处理非同步场景、消息通知、应用间解耦等场景经常会使用到消息中间件。我们可能已经使用过或者听过一些市面上常用的消息中间件,如 ActiveMQ,RabbitMQ、MetaQ、kafka、 Redis 中的消息队列功能等。Spring Cloud Stream 是一个构建消息驱动微服务的框架,基于 Spring Integration 并利用 Spring Boot 提供了自动配置,支持发布–订阅模型、消费者分组、数据分片等功能,提供极为方便的消息中间件使用体验。
第 13 章 消息总线:Spring Cloud Bus:Spring Cloud Bus 通过轻量级消息代理连接各个分布的节点,以广播状态的变化(如配置变化)或者其他的消息指令。Spring Cloud Bus 的一个核心思想是通过分布式的启动器对 Spring Boot 应用进行扩展,也可以用来建立多个应用之间的通信频道。目前唯一实现的方式是用 AMQP 消息代理作为通道队列,目前常用的有 Kafka 和 RabbitMQ。
第 14 章 批处理:Spring Cloud Task:Spring Cloud Task 是支持短生命周期的微服务 Spring Cloud 子项目,作用于定时任务、批处理一类的需求场景。
第三篇 微服务实战篇
前两篇我们已经把 Spring Cloud 生态中的每一个组件都进行了梳理。本篇中将针对之前学习的各个组件进行综合实战,通过案例让大家更深刻地理解每个组件。我们还会介绍微服务体系下的持续性构建交付的理论,阐述在软件研发生产线上的流程工具。
第 15 章 利用 Docker 进行编排与整合:基于前面讲述的内容,我们将 Spring Cloud 的各个组件整合成一个五脏俱全的小项目,通过 Docker Compose 进行编排、整合,达到实战练习的目的。
牛人点赞
我们迫切地希望 Spring 与各大技术公司能够形成一个良性的循环,使用者越多,技术社区越活跃,Spring Cloud 的更新迭代速度越快,功能越完善、越稳定、越成熟,然后会带来更多的使用者。
由于篇幅限制,仅展示部分目录,想要获取这份资料的小伙伴【直接点击此处】即可获取哦
评论