2.2.1简介

Spring Cloud是基于 Spring Boot.的。 Spring Boot是由 Pivotal团队提供的全新Web框架,它主要的特点就是简化了开发和部署的过程,简化了 Spring复杂的配置和依赖管理,通过起步依赖和内置 Servlet容器能够使开发者迅速搭起一个web工程。所以 Spring Cloud在开发部署上继承了 Spring Boot的一些优点,提高其在开发和部署上的效率。

Spring Cloud的首要目标就是通过提供一系列开发组件和框架,帮助开发者迅速搭建一个分布式的微服务系统 Spring Cloud是通过包装其他技术框架来实现的,例如包装开源的 Netflix OSs组件,实现了一套通过基于注解、Java配置和基于模版开发的微服务框架。 Spring Cloud框架来自于 Spring Resouces社区,Pivotal和 Netflix两大公司和一些其他的开发者提供技术上的更新迭代。 Spring Cloud提供了开发分布式微服务系统的一些常用组件,例如服务注册和发现、配置中心、熔断器、智能路由、微代理、控制总线、全局锁、分布式会话等。

2.2.2常用组件

(1)服务注册和发现组件 Eureka

利用 Eureka组件可以很轻松地实现服务的注册和发现的功能。 Eureka组件提供了服务的健康监测,以及界面友好的U。通过 Eureka组件提供的UI, Eureka组件可以让开发人员随时了解服务单元的运行情况。另外 Spring Cloud也支持 Consul和 Zookeeper,用于注册和发现服务。

(2)熔断组件 Hystrix

Hystriⅸx是一个熔断组件,它除了有一些基本的熔断器功能外,还能够实现服务降级、服务限流的功能。另外 Hystrix提供了熔断器的健康监测,以及熔断器健康数据的API接口。Hystrix Dashboard组件提供了单个服务熔断器的健康状态数据的界面展示功能, Hystrix Turbine组件提供了多个服务的熔断器的健康状态数据的界面展示功能。

(3)负载均衡组件 Ribbon

Ribbon是一个负载均衡组件,它通常和 Eureka、zul、 RestTemplate、 Feign配合使用。Ribbon和Zul配合,很容易做到负载均衡,将请求根据负载均衡策略分配到不同的服务实例中。 Ribbon和 RestTemplate, Feign配合,在消费服务时能够做到负载均衡。

(4)路由网关Zuul

路由网关zuul有智能路由和过滤的功能。内部服务的API接口通过Zuul网关统一对外暴露,
内部服务的AP接口不直接暴露,防止了内部服务敏感信息对外暴露。在默认的情况下,Zuul和Ribbon相结合,能够做到负载均衡、智能路由。Zuul的过滤功能是通过拦截请求来实现的,可以对一些用户的角色和权限进行判断,起到安全验证的作用,同时也可以用于输出实时的请求日志。
上述的4个组件都来自于Neti的公司,统一称为 Spring Cloud Netflix

(5) Spring Cloud Config

Spring Cloud Config组件提供了配置文件统一管理的功能。 Spring Cloud Config包括 Server端和 Client端, Server端读取本地仓库或者远程仓库的配置文件,所有的 Client向 Server读取配置信息,从而达到配置文件统一管理的目的。通常情况下, Spring Cloud Config和 Spring Cloud Bus相互配合刷新指定 Client或所有 Client的配置文件。

(6)Spring Cloud Security

Spring Cloud Security是对 Spring Security组件的封装, Spring Cloud Security向服务单元提供了用户验证和权限认证。一般来说,单独在微服务系统中使Spring Cloud Security是很少见的,一般它会配合 Spring Security OAuth2组件一起使用,通过搭建授权服务,验证 Token或者JWT这种形式对整个微服务系统进行安全验证。

(7) Spring Cloud Sleuth

Spring Cloud Sleuth是一个分布式链路追踪组件,它封装了 Dapper、 Zipkin和 Kibana等组件,通过它可以知道服务之间的相互依赖关系,并实时观察链路的调用情况。

(8) Spring Cloud Stream

Spring Cloud Stream是 Spring Cloud框架的数据流操作包,可以封装 RabbitMq、 Active Mq、Kaka、 Redis等消息组件,利用 Spring Cloud Stream可以实现消息的接收和发送。
上述列举了一些常用的 Spring Cloud组件。一个简单的由 Spring Cloud构建的微服务系统,通
常由服务注册中心 Eureka、网关Zu、配置中心Cong和授权服务Auth构成。

2.2.3项目一览表

  • Spring Cloud Config:服务配置中心,将所有的服务的配置文件放到本地仓库或者远程仓库,配置中心负责读取仓库的配置文件,其他服务向配置中心读取配置。 Spring Cloud Config使得服务的配置统一管理,并可以在不人为重启服务的情况下进行配置文件的刷新。
  • Spring Cloud Netflix:它是通过包装了 Netflix公司的微服务组件实现的,也是 Spring Cloud 7核心的核心组件,包括 Eureka、 Hystrix、Zul、 Archaius等。
  • Eureka:服务注册和发现组件。
  • Hystrix:熔断器组件。 Hystrix通过控制服务的AP接口的熔断来转移故障,防止微
    服务系统发生雪崩效应。另外, Hystrix能够起到服务限流和服务降级的作用。使用Hystrix Dashboard组件监控单个服务的熔断器的状态,使用 Turbine组件可以聚合多个服务的熔断器的状态。
  • zul:智能路由网关组件。 Netflix Zuul能够起到智能路由和请求过滤的作用,是服
    务接口统一暴露的关键模块,也是安全验证、权限控制的一道门。
  • Feign:声明式远程调度组件
  • Ribbon:负载均衡组件。
  • Archaius:配置管理API的组件,一个基于Java的配置管理库,主要用于多配置的动态获取。
  • Spring Cloud Bus:消息总线组件,常和 Spring Cloud Config配合使用,用于动态刷新服务的配置。
  • Spring Cloud Sleuth:服务链路追踪组件,封装了 Dapper、 Zipkin、 Kibina等组件,可以实时监控服务的链路调用情况。
  • Spring Cloud Data Flow:大数据操作组件, Spring Cloud Data Flow是 Spring XD的替代品,也是一个混合计算的模型,可以通过命令行的方式操作数据流。
  • Spring Cloud Security:安全模块组件,是对 Spring Security的封装,通常配合 OAuth2使用来保护微服务系统的安全。
  • Spring Cloud Consul:该组件是 Spring Cloud对 Consul的封装,和 Eureka类似,它是另一个服务注册和发现组件。
  • Spring Cloud Zookeeper:该组件是 Spring Cloud对 Zookeeper的封装,和 Eureka、 Consul类似,用于服务的注册和发现。
  • Spring Cloud Stream:数据流操作组件,可以封装 Redis、 RabbitMQ、Kaka等组件,实现发送和接收消息等。
  • Spring Cloud CL:该组件是 Spring Cloud对 Spring Boot CLI的封装,可以让用户以命令行方式快速运行和搭建容器。
  • Spring Cloud Task:该组件基于 Spring Task,提供了任务调度和任务管理的功能。
  • Spring Cloud Connectors:用于Paas平台连接到后端。