Ribbon框架原理及解析

1、简介

Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端的行为。为Ribbon配置服务提供者地址后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon认为我们提供了很多负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义负载均衡算法。
在Spring Cloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。

2、接口

Ribbon提供了抽象接口,如IClient,IClientConfig,IRule,ILoadBalancer

2.1 IClient

IClient:客户端接口,依赖IClientConfig配置执行请求,返回响应。 

IClientConfig:客户端配置,主要是属性配置,依赖于IClientConfigKey

IClientConfigKey:客户端配置键,包含key,类型及对应值信息。

ReloadableClientConfig支持重新加载的客户端配置,其依赖Property以及PropertyResolver

Property:动态配置的封装。

ReloadableProperty:支持重新加载的动态配置

PropertyResolver:配置解析器,用于解耦配置与属性源。

2.2 ILoadBalancer

负载均衡接口,其依赖于Server类,支持添加Server,选择Server以及获取所有及可用 Server列表。

 AbstractLoadBalancer:包含大多数LoadBalancer的公有特征,同时提供了抽象方法根据ServerGroup获取服务器列表方法

BaseLoadBalancer:实现了AbstractLoadBalancer,也是其它类的基类,其依赖IRule,IPing,IPingStrategy接口。

DynamicServerListLoadBalancer:可以根据数据源动态更新Server列表

ZoneAwareLoadBalancer:分区的动态负载均衡。

其它**LoadBalancer继承自BaseLoadBalancer,决定了**LoadBalancer的依赖组件

2.2.1 IRule

负载均衡的规则接口,有很多不同的实现类,主要是根据各自的规则从负载均衡得到 的Server列表中选取其中的一个Server。

AbstractLoadBalancerRule:是其它规则类的公共基类,是公共的特征即依赖ILoadBalancer。

ClientConfigEnabledRoundRobinRule:内部包含RoundRobinRule,同时也提供根据客户端配置来设置规则。

PredicateBasedRule:基于AbstractServerPredicate过滤,然后基于round robin

AvailabilityFilteringRule:先基于round robin得到server,如果server不可用,继续下一个

ZoneAvoidanceRule:首先基于zone区选择,然后再根据server的可用性来选择。

BestAvailableRule:选择并发数最小的

Randomrule:随机选择

RoundRobinRule:轮询方式

ResponseTimeWeightedRule:基于响应时间的权重

WeightedResponseTimeRule:基于响应时间的权重

2.2.2 IPing

判断服务器是否是存活的接口

AbstractLoadBalancerPing:抽象基类,提供基本实现, 主要是成员AbstractLoadBalancer。

NIWSdiscoveryPing:基于服务发现,通过发现实例信息的状态 判断服务器是否是存活

PingUrl:主要是通过向服务器发送get请求, 根据响应来判断是否是存活

2.2.3 IPingStrategy

对于多个服务器判断存活的策略,当前只有一个实现类SerialPingStrategy,遍历Server依次IPing。

2.2.4 AbstractServerPredicate

对于Server的过滤器,有不同的实现类

ZoneAffinityPredicate:过滤与当前客户端不在同一服务区的服务器

AvailabilityPredicate:过滤处于断路以及有太多并发连接的服务器

CompositePredicate:多个过滤器and操作

ZoneAvoidancePredicate:过滤测量指标超过阀值的服务区


 

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...
win11本地账户怎么改名?win11很多操作都变了样,用户如果想要...