本文主要简单介绍spring cloud的子项目,后续文章会专门就每个子项目进行以示例的形式介绍其使用。
本文分为11个部分,即spring cloud的11个子项目。
一、spring cloud整体架构
- SpringCloud对常见的分布式系统模式提供了简单易用的编程模型,帮助开发者构建弹性、可靠、协调的应用程序。
- SpringCloud是在SpringBoot的基础上构建的,使开发者可以轻松入门并快速提高工作效率。 - SpringCloud为开发人员提供了快速构建分布式系统架构的工具,例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,领导选举,分布式会话,集群状态等。
二、子项目介绍
1、Spring Cloud Config
集中配置管理工具,分布式系统中统一的外部配置管理,默认使用Git来存储配置,可以支持客户端配置的刷新及加密、解密操作。
2、Spring Cloud Netflix
Netflix OSS 开源组件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。
1.Eureka:服务治理组件,包括服务端的注册中心和客户端的服务发现机制;
2.Ribbon:负载均衡的服务调用组件,具有多种负载均衡调用策略;
3.Hystrix:服务容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错能力;
4.Feign:基于Ribbon和Hystrix的声明式服务调用组件;
5.Zuul:API网关组件,对请求提供路由及过滤功能。
3、Spring Cloud Bus
用于传播集群状态变化的消息总线,使用轻量级消息代理链接分布式系统中的节点,可以用来动态刷新集群中的服务配置。
4、Spring Cloud Consul
基于Hashicorp Consul的服务治理组件。
5、Spring Cloud Security
安全工具包,对Zuul代理中的负载均衡OAuth2客户端及登录认证进行支持。
6、Spring Cloud Sleuth
SpringCloud应用程序的分布式请求链路跟踪,支持使用Zipkin、HTrace和基于日志(例如ELK)的跟踪。
7、Spring Cloud Stream
轻量级事件驱动微服务框架,可以使用简单的声明式模型来发送及接收消息,主要实现为Apache Kafka及RabbitMQ。
8、Spring Cloud Task
用于快速构建短暂、有限数据处理任务的微服务框架,用于向应用中添加功能性和非功能性的特性。
9、Spring Cloud Zookeeper
基于Apache Zookeeper的服务治理组件。
10、Spring Cloud Gateway
API网关组件,对请求提供路由及过滤功能。
11、Spring Cloud OpenFeign
基于Ribbon和Hystrix的声明式服务调用组件,可以动态创建基于Spring MVC注解的接口实现用于服务调用,在SpringCloud 2.0中已经取代Feign。
从上图可以看出 Spring Cloud 各个组件相互配合,合作支持了一套完整的微服务架构。
1.其中 Eureka 负责服务的注册与发现,很好将各服务连接起来
2.Hystrix 负责监控服务之间的调用情况,连续多次失败进行熔断保护
3.Hystrix dashboard,Turbine 负责监控 Hystrix 的熔断情况,并给予图形化的展示
4.Spring Cloud Config 提供了统一的配置中心服务 当配置文件发生变化的时候
5.Spring Cloud Bus 负责通知各服务去获取最新的配置信息
6.所有对外的请求和服务,都通过 Zuul 来进行转发,起到 API 网关的作用
7.最后使用 Sleuth+Zipkin,将所有的请求数据记录下来,方便进行后续分析