要了解Spring Cloud,先要对“微服务”这个概念有一定的了解。微服务这个名词最早是由面向对象设计与分析专家Martin Fowler提出,他对微服务的理解如下:
简而言之,微服务架构的风格,就是讲单一程序开发成一个微服务,每个微服务运行在自己的进程当中,并使用轻量级机制通信,通常是 HTTP RESTFUL API。这些服务围绕业务能力来划分构建的,并通过完全自动化部署机制来独立部署。这些服务可以使用不同的编程语言,以及不同的数据存储技术,以保证最低限度的集中式管理。
那么,对于微服务,可以总结如下:
- 按业务划分为一个独立运行的程序,即服务单元。
- 服务之间通过HTTP协议相互通信。
- 自动化部署。
- 可以用不同的编程语言
- 可以用不同的存储技术
- 服务集中化管理
- 微服务是一个分布式系统
Spring Cloud 是基于Spring Boot的,继承了Spring Boot的一些优点,约定大于配置。Spring Cloud的首要目标就是通过一系列开发组件和框架,帮助开发者快速搭建一个微服务系统。Spring Cloud是通过包装其它技术框架来实现的,例如包装开源的Netflix OSS组件,实现了一套通过注解,Java配置和基于模板开发的微服务框架。Spring Cloud提供了开发分布式微服务系统的一些常用组件,例如服务注册和发现,配置中心,熔断器,智能路由,微代理,控制总线,全局锁,分布式会话等等。
常用组件:
1.服务注册和发现组件Eureka
利用Eureka组件可以很轻松的实现服务的注册和发现的功能,Eureka组件提供了服务的健康监测,以及友好页面UI,另外,Spring Cloud也支持Consul和Zookeeper用于注册和发现服务。
2.熔断组件Hystrix
Hystrix是一个熔断组件,除了基本的熔断器功能外,还能够实现服务降级,服务限流的功能。另外,Hystrix提供了熔断器的健康监测,以及熔断器健康数据的API接口。Hystrix Dashboard提供了单个服务熔断器的健康状态数据的界面展示功能,Hystrix Turbine提供了多个服务的熔断器的健康状态数据的界面展示功能。
3.负载均衡组件Ribbon
Ribbon是一个负载均衡组件,他通常和eureka,zuul,RestTemplate,Fegin配合使用。
4.路由网关Zuul
路由网关Zuul有智能路由和过滤的功能,内部服务的API接口通过Zuul网关同一对外暴露,内部服务的API接口不直接暴露,防止了内部服务的敏感信息对外暴露。
项目一览表:
- Spring Cloud Config:服务配置中心,将所有的服务的配置文件放到本地仓库或者远程仓库。
- Spring Cloud Netflix:它是通过包装Netflix公司的微服务组件实现的,也是Spring Cloud的核心组件,包括Eureka,Hystrix,Zuul,Archaius.
- Eureka:服务注册和发现组件
- Hystrix:熔断器组件
- Zuul:智能路由网关组件
- Fegin:声明式远程调度组件
- Ribbon:负载均衡组件
- Archaius:配置管理API的组件
- Spring Cloud Bus:消息总线组件
- Spring Cloud Sleuth:服务链路追踪组件
- Spring Cloud Data Flow:大数据操作组件
- Spring Cloud Security:安全模块组件
- Spring Cloud Consul:该组件是Spring Cloud对Consul的封装,和Eureka类似
- Spring Cloud Zookeeper:同上
- Spring Cloud Stream:数据流操作组件
- Spring Cloud CLI:该组件是对Spring Boot CLI的封装,可以让用户通过命令行方式快速运行和搭建容器
- Spring Cloud Task:基于Spring Task,提供了任务调度和管理的功能
- Spring Cloud Connectors:用于Paas云平台连接到后端。