Spring Cloud是一系列框架的有序集合(框架集),他利用Spring Boot的开发便利性巧妙的简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。
SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等,它们都可以用SpringBoot的开发风格做到一键启动和部署。
SpringCloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包
组件\框架 | Spring Cloud | Spring Cloud Alibaba |
---|---|---|
微服务注册中心 | Eureka、Zookeeper、Consul | Nacos |
微服务调用(负载均衡) | Feign(Ribbon) | Dubbo RPC |
服务熔断 | Hystrix | Sentinel |
微服务网关(路由) | Gateway、Zuul | Dubbo PROXY |
消息中间件 | RabbitMQ | RocketMQ |
配置中心 | Config、Zookeeper | Nacos |
分布式事务 | - | Seata |
链路追踪 | Zipkin | - |
下面是Spring Cloud的整体架构图:
1、Spring Cloud Eureka(微服务注册中心)
注册中心可以说是微服务架构中的“通讯录”,他记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其他服务时,就在这里找到对应服务的地址,进行调用。
注册中心的主要作用
服务发现
-服务注册/反注册:
-服务订阅/取消订阅:
-服务路由:服务配置
-配置订阅:
-配置下发:服务健康检测
-检测服务提供者的健康情况:
2、Spring Cloud Ribbon(负载均衡)
Ribbon是Netflix发布的一个负载均衡,有助于控制HTTP和TCP客户端行为。在Spring Cloud中,Eureka一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Eureka中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。
在Spring Cloud中可以将注册中心和Ribbon配合使用,Ribbon自动的从注册中心中获取服务提供者的列表信息,并基于内置的负载均衡算法,请求服务。
Ribbon原理
- 通过LoadBalanceInterceptro拦截器,拦截请求的域名,在本地客户端实现一个负载均衡(默认轮询)
- 会在客户端开启一个定时任务,拉取注册中心的服务地址
- 如果一个地址调用失败,会从新从本地服务地址获取一个新的,从新发起请求。(比如 一个机器离线了,但是本地的服务地址还没有及时刷新)
几种负载均衡策略:
- RandomRule:随机选取负载均衡策略。
- RoundRobinRule:轮询负载均衡策略。
- WeightedResponseTimeRule:响应时间作为选取权重的负载均衡策略,根据平均响应时间计算所有服务的权重,响应时间越短的服务权重越大,被选中的概率越高。刚启动时,如果统计信息不足,则使用线性轮询策略,等信息足够时,再切换到WeightedResponseTimeRule。
- AvailabilityFilteringRule:按可用性进行过滤服务的负载均衡策略,会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,还有并发的连接数超过阈值的服务,然后对剩余的服务列表进行线性轮询。
3、Spring Cloud Hystrix(熔断组件)
Hystrix是Netflix开源的一款容错框架,包含常用的容错方法。在高并发访问下,系统所依赖的服务的稳定性对系统的影响非常大,依赖有很多不可控的因素,比如网络连接变慢,资源突然繁忙,暂时不可用,服务脱机等。Hystrix利用熔断、线程池隔离、信号量隔离、降级回退等方法来处理依赖隔离,使系统变得高可用。
Hystrix主要提供了以下几种容错方法:
- 资源隔离
- 服务降级
- 服务熔断
- 服务限流
4、Spring Cloud Gateway(服务网关)
Spring Cloud Gateway是Spring官方推出的服务网关的实现框架,相对于服务网关的概念有点类似于传统的反向代理服务器(如nginx),但反向代理一般都只是做业务无关的转发请求,而服务网关与服务的整合程度更高,可以看作也是整个服务体系的组成部分,通过过滤器等组件可以在网关中集成一些业务处理的操作(比如权限认证等)。
核心功能:
- 路由
- 断言
- 过滤器
- 网关限流
5、Spring Cloud Stream(消息驱动微服务)
Spring Cloud Stream是一个用来为微服务应用构建消息驱动能力的框架。
特点:
屏蔽底层 MQ 实现细节,Spring Cloud Stream 的 API 是统一的。如果从 Kafka 切到 RocketMQ,可以直接修改配置。
与 Spring 生态整合更加方便。Spring Cloud Data Flow的流计算都是基于 Spring Cloud Stream;Spring Cloud Bus 消息总线内部也是用的 Spring Cloud Stream。
6、Spring Cloud Config (配置中心)
配置中心功能:
- 集中式的管理所有微服务中的配置文件
- 针对不同环境提供不同的配置
- 运行期的动态更新
7、Spring Cloud Sleuth (链路追踪)
分布式链路追踪,就是将一次分布式请求还原成调用链路,进行日志记录,性能监控并将一次分布式请求的调用情况集中展示。比如各个服务节点上的耗时,请求具体到达哪台机器上、每个服务节点的请求状态等等。
分布式链路追踪方案:
- Twitter的Zipkin
- 阿里的鹰眼
参考文章
https://www.zhihu.com/question/283286745/answer/1700883396