Spring-Cloud Ribbon

2018-08-21  本文已影响17人  Jimhou

Ribbon的功能

Ribbon是Netflix发布的负载均衡器,有助于控制HTTP和TPC客户端的行为。为Ribbon配置了服务的提供者地址列表后,Ribbon就可以基于某种负载均衡算法,自动帮助服务消费者请求。Ribbon默认提供了很多负载均衡算法,比如:轮询、随机、加权等,当然,我们也可以利用Ribbon实现我们自己的负载均衡算法。
Ribbon是客户端负载均衡器,不是一个单独的服务。需要依赖Spring Cloud 中的服务来使用。在Spring Cloud中,当Ribbon与Eureka配合使用,Ribbon能够自动从Eureka Server中获取服务提供者地址列表,并基于负载均衡算法,请求服务的提供者实例(因为Eureka Client 中已经整合Ribbon,只要开启Ribbon功能即可)。

服务架构

在一个SpringCloud 集群中,一个服务实例既是服务的提供者、也是服务的消费者,因为Ribbon是消费端负载均衡器,所以每个服务的实例都可以使用Ribbon。
假如一个Spring Cloud集群内有服务A(实例A1、A2、A3)和服务B(B1、B2),B需要调用A,那么使用Ribbon之后架构以及调用顺序如下图。


ribbon.png

Ribbon的使用

Step1 引入依赖

Step2 启用Ribbon

Step3 RestTemplate 调用

Ribbon中组件

接口 spring容器中Bean名称 实现类 功能
IClientConfig ribbonClientConfig DefaultClientConfigImpl 客户端配置
IRule ribbonRule ZoneAvoidanceRule 一个逻辑规则,决定到底将要调用哪个服务实例
IPing ribbonPing DummyPing 一个后台运行的组件,用来检测服务实例是否可用
ServerList<Server> ribbonServerList ConfigurationBasedServerList 服务列表
ServerListFilter<Server> ribbonServerListFilter ZonePreferenceServerListFilter 服务列表过滤器,将可用服务列表精确到最佳
ILoadBalancer ribbonLoadBalancer ZoneAwareLoadBalancer (Ribbon)负载均衡入口
ServerListUpdater ribbonServerListUpdater PollingServerListUpdater 服务列表更新器

参考文档

https://github.com/Netflix/ribbon/wiki/Working-with-load-balancers#components-of-load-balancer

上一篇下一篇

猜你喜欢

热点阅读