微服务从小白到专家:Spring Cloud和Kubernetes实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.5 了解Spring Cloud组件库

4.5.1 Spring Cloud的整体架构

Spring Cloud的总体架构如图4-1所示,可以看出它的体系架构非常庞大,图4-1中不仅包含了Spring Cloud的原生组件,也包含了Netflix和Alibaba组件库的内容。因此,部分模块有不止一个组件可供选择。

图4-1 Spring Cloud的总体架构

4.5.2 Spring Cloud的子项目

Spring Cloud的核心子项目一共有19个,具体介绍如下。

1. Spring Cloud Config

Spring Cloud Config是一个中心化的配置管理工具,它目前支持本地文件、数据库和版本控制系统(GitHub和Subversion)三种存储方式。在Spring Boot应用的启动阶段,应用程序会主动访问Config Server拉取配置文件,并且将配置文件中的配置项注入Spring上下文中。此外,Spring Cloud Config还可以在运行期间动态推送配置属性变更到服务集群。

2. Spring Cloud Bus

Spring Cloud Bus是一个“事件总线”,它通过分布式消息在集群环境中传播“状态更改”事件。它也可以与Spring Cloud Config进行无缝集成,用以批量推送配置属性变更到业务集群。

3. Spring Cloud Consul

Spring Cloud Consul是一个服务治理框架,它对原生的Consul项目(HashiCorp公司用Go语言开发的一个项目)进行了封装,提供了服务注册、服务发现、健康检查等服务生命周期管理的功能。

4. Spring Cloud Sleuth

Spring Cloud Sleuth为Spring Cloud应用提供了分布式环境下的调用链路追踪功能。

5. Spring Cloud Stream

Spring Cloud Stream是一个轻量级的事件消息驱动框架,它简化了应用程序与Apache Kafka、RabbitMQ消息中间件的对接。

6. Spring Cloud Gateway

Spring Cloud Gateway是一个基于Project Reactor响应式编程技术构建的网关路由组件,用于替代Zuul。

7. Spring Cloud OpenFeign

Spring Cloud OpenFeign通过动态代理机制简化了REST接口的调用过程。

8. Spring Cloud Cloudfoundry

Spring Cloud Cloudfoundry组件可以将应用与Pivotal Cloud Foundry(简称PCF)集成,在提供服务发现功能的同时,简化了SSO和OAuth2的访问认证流程。PCF是由Pivotal公司在开源Cloud Foundry基础上研发的商业版本,提供了云原生的应用开发PaaS(Platform as a Service)平台。

9. Spring Cloud Open Service Broker

Spring Cloud Open Service Broker提供了一个Spring Boot框架,使开发人员能够在Open Service Broker API的平台(比如Cloud Foundry和Kubernetes)之上构建应用。

10. Spring Cloud Cluster

Spring Cloud Cluster为分布式环境中的组件(如ZooKeeper和Redis)提供了构建“集群”的功能,例如Leader选举、集群状态的一致性、全局锁和一次性Token等常见的状态模式的抽象层和具体实现。

11. Spring Cloud Security

Spring Cloud Security基于Spring Security构建,提供应用安全方面的支持。

12. Spring Cloud Data Flow

Spring Cloud Data Flow是一个云原生的流处理和批处理数据管道,主要用于大规模数据集成和实时数据处理的场景,通过简化的DSL、可拖放的GUI组件和REST-API来简化数据管道的构建。

13. Spring Cloud Task

Spring Cloud Task可以将微服务作为一个短期任务来执行和调度。

14. Spring Cloud ZooKeeper

Spring Cloud ZooKeeper基于ZooKeeper的特性提供了配置管理与服务治理等功能。

15. Spring Cloud Connectors

Spring Cloud Connectors提供了一个简单的抽象,使PaaS应用可以轻松连接各类云平台的后台资源。

16. Spring Cloud Starters

Spring Cloud Starters是Spring Boot风格构建的启动项目,提供了依赖管理和“开箱即用”的使用体验。

17. Spring Cloud CLI

Spring Cloud CLI插件可以通过命令行、Groovy和YML配置文件等方式快速构建Spring Cloud组件。

18. Spring Cloud Contract

Spring Cloud Contract是CDC(Consumer-Driver Contracts,消费者驱动契约)的一种实现,提供了一种基于接口的测试方式。

19. Spring Cloud Function

Spring Cloud Function是一个函数计框架,用于在FaaS(Function as a Service)平台上部署基于函数的软件。

4.5.3 Netflix组件库

Netflix就是大家熟知的“奈飞”公司,Netflix是位于美国的一家流媒体巨头,它为Spring Cloud的发展做出了很大的贡献,在Spring Cloud中很多鼎鼎大名的组件都由Netflix开发和贡献,有些组件至今依然是Spring Cloud家族使用最为广泛的组件。Netflix的核心组件具体介绍如下:

1. Eureka

Eureka是一款基于HTTP的服务治理组件,利用Eureka可以轻松搭建一个高可用的服务注册中心集群,它提供了完善的服务生命周期管理功能,比如服务注册、服务发现、心跳检查、服务下线、服务剔除和自保等。

2. Hystrix

Hystrix是一款客户端服务容错管理组件,它提供了服务降级、服务熔断和线程隔离等服务容错功能。Hystrix可以与Turbine集成,利用Turbine聚合集群内的服务调用数据,再通过Hystrix Dashboard监控大盘实时反映服务的健康状态。

3. Ribbon

Ribbon是一个客户端负载均衡组件,内置了多种负载均衡策略,也支持通过扩展的方式编写自己的负载均衡器。

4. Archaius

Archaius包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架和回调机制等功能。

5. Zuul

Zuul是一个路由组件,它可以作为服务层网关入口,还可以提供动态路由、限流、性能监测和安全等功能。

4.5.4 Alibaba组件库

阿里近年来逐渐加大了开源方向上的投入,在Spring Cloud项目中也逐渐大放异彩。由阿里研发并开源的组件具体介绍如下:

1. Sentinel

Sentinel是一个流控组件,从流量控制、熔断降级、负载保护等多个维度保障系统的可用性,它还可以与Nacos和Apollo等组件集成,对流控规则进行持久化。

2. Nacos

Nacos是一个服务治理组件,同时也可以作为配置中心来使用,它提供了服务发现和配置管理等功能。

3. RocketMQ Binder

RocketMQ Binder作为Spring Cloud Stream的底层组件,承担了与RocketMQ集成的工作。

4. Seata

Seata是一个分布式事务框架,它提供了AT、TCC和Saga三种分布式解决方案。

5. Dubbo RPC

Dubbo是一个高性能的RPC(远程方法调用)框架。

6. Alibaba Cloud Object Storage Service

Alibaba Cloud Object Storage Service是一个加密安全的云存储服务。