什么是 Spring Cloud?
Spring Cloud 是微服务系统架构的一站式解决方案,是各个微服务架构落地技术的集合体,让架构师、 开发者在使用微服务理念构建应用系统的时候, 面对各个环节的问题都可以找到相应的组件来处理,比如我们构建微服务的过程中需要用到的注册中心、配置中心、负载均衡、断路器、网关等,Spring Cloud 都给我们提供了成熟的组件供我们来使用。
Spring Cloud 官网传送门
Spring Cloud 官网
Spring Cloud 和 Spring Boot 的版本对应关系
Spring Cloud 的组件
Spring Cloud 的组件非常多,其中有部分组件已经不在更新,不在更新的组件是可以继续使用的,不过不在更新的组件基本都有比较好的替代组件,由于 Spring Cloud 的组件非常多,这里简单的分享一些热门常用的组件。
Spring Cloud Netflix 的五大组件:
- Eureka:注册中心,用于服务注册和发现,它提供了一个服务注册中心、服务发现的客户端,提供了一个可以查看所有注册的服务的界面,早期的微服务基本都是使用 Eureka 作为注册中心,现在基本被 Nacos 取代。
- Zuul:网关,客户端请求通过网关访问后台的服务,它可以使用一定的路由配置来判断某一个 URL 由哪个服务来处理,并从 Eureka 获取注册的服务来转发请求,早期的微服务基本都是使用 Zuul 作为网关,现在基本被 Gateway 取代。
- Ribbon:负载均衡,网关将一个请求转发给某一个服务的时候,如果这个服务启动了多个实例,就会通过 Ribbon 来通过一定的负载均衡策略来发送给某个服务实例。
- Feign:微服务之间的相互访问,使用 Feign 客户端来访问,如果某一个服务有多个实例的时候,默认会使用Ribbon来实现负载均衡。
- Hystrix:微服务容错组件,提供了开箱即用的服务降级、熔断、监控等能力,Hystrix 可以通过短路器监控,返回一个可以处理的响应结果,保证服务调用线程不会长时间被占用,避免故障蔓延引发雪崩。
Spring Cloud Alibaba 组件
- Nacos:我们使用 Nacos 最常用的功能就是注册中心,Nacos 除了注册中心之外还可以当配置中心、DNS服务来使用,也就是说 Nacos 可以完成服务发现、配置管理、DNS服务,一个组件可以完成 Config、Eureka、Bus 三个组件的功能。
- Sentinel:直译是哨兵的意思,Sentinel 主要以流量为切入点,从流量控制、熔断降级、系统负载等多个维度来帮助用户提升服务的稳定性。
- dubbo:Alibaba 提供了spring-cloud-starter-dubbo,对 dubbo 进行了封装,方便我们更好的让 dubbo 和 Spring Cloud 其他组件进行集成使用。
- RocketMQ:Alibaba 开源的分布式消息系统,它基于高可用分布式集群技术,提供低延迟、高稳定性的消息发布和订阅服务,Alibaba 提供了spring-cloud-starter-stream-rocketmq,方便让 RocketMQ 和 Spring Cloud 的其他组件集成。
其他组件
- Spring Cloud Gateway:网关组件,目前市场上最流行的网关服务,功能强大丰富,性能好,官方测试性能是 Zuul 的1.6倍,能与 SpringCloud 生态很好兼容,深得广大开发者的喜爱。
- Spring Cloud OpenFeign:同Feign是一样的,是一个远程调用框架,Feign 已经停止更新,OpenFeign 在 Feign的基础上添加了对 Spring MVC 注释的支持,OpenFeign 的功能更加强大。
- Spring Cloud Consul:Consul 是 HashiCorp 公司推出的开源工具,用于服务发现与配置,可以用作注册中心和配置中心,与其它分布式服务注册与发现的方案,Consul 更加全面,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具, 并且使用起来也非常简单,Consul 安装包含一个可执行文件,部署简单,因为 Consul 是使用 go 语言编写的,移植性强。
- Spring Cloud Config:Config 是一个配置中心组件,它包含了 client 和 server 两个部分,server 端提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client 端通过接口获取数据、并依据此数据初始化自己的应用。
- Spring Cloud Bus:Bus 服务总线组件,使用轻量级的消息代理来连接微服务架构中的各个服务,可以将其用于广播状态更改(例如配置中心配置更改)或其他管理指令。
- Spring Cloud Sleuth:Sleuth 是 Spring Cloud 提供的分布式跟踪解决方案,Sleuth 提供了链路追踪、性能分析、数据分析、优化链路、可视化错误分析等。
总结:本篇简单简单列出 Spring Cloud 相关组件,先对 Spring Cloud 组件有一个简单的认知,方面我们继续深入学习 Spring Cloud 知识。
如有不正确的地方请各位指出纠正。