当前位置:首页 > 教育

ribbon Spring Cloud Netflix Ribbon介绍

在上一篇文章中,我们介绍了如何使用功能区的轮询机制为消费者配置负载平衡策略。这一次,我们将进一步了解功能区的一些细节以及如何自定义负载平衡策略。

谈谈Ribbon上负载均衡的总体思路。它用@ LoadBalanced修改RestTemplate,并将其提交到功能区进行配置。它为RestTemplate定义了一个拦截器,拦截rest请求,并将其提交给Ribbon进行处理,然后将其发送出去。Ribbon主要负责选择合适的实例和构造URL。(不想详细分析。如果你有兴趣,可以看看LoadBalancerAutoConfiguration,LoadBalancerClient和LoadBalancerClient。).

让我们来看看以下我们可能使用的重要接口。

load平衡器:Ribbon的负载平衡器接口,定义了添加服务实例、选择服务实例、标记服务实例离线、获取当前可用实例和获取所有服务实例的方法。通过方法定义可以看出,这个类是Ribbon最重要的管理类。它管理所有实例,并通过在实例方法中获取负载平衡策略来选择要返回的适当实例。主要涉及到AbstractLoadBalancer平衡器的实现接口,定义了一些基本方法。

1.baseload平衡器:继承了负载平衡器的基本实现类AbstractLoad平衡器,有几点需要注意:IP(检测实例状态的方法)对象没有实现,是空,需要在构造时传入。检查实例状态的默认策略是串行策略,它使用传入规则和轮询实例来检查它们的状态,这在网络中是不好的。检查策略也可以自定义传入。定义了IRule对象,主要用于定义负载均衡策略。iLoad平衡器将通过构造函数将自身传递到IRule中,IRule将通过select函数获取服务器列表,并返回规则下的服务器。均衡器的默认规则是RoundRobinRule,其策略是线性轮询服务实例返回。

2.这个类继承了抽象负载平衡器。从名字可以看出来,反正也没啥用。。。

3.动态服务器列表负载均衡器继承了BaseLoadBalancer,实现了在运行过程中动态更新服务列表的能力,并具有过滤服务列表的功能。你可以自己看,我也没仔细看。

4.继承了DynamicServerlistloadBalancer的ZoneWareloadBalancer是功能最完善、最强大的。由于DynamicServerlistloadBalancer平衡器使用轮询方法调用实例,在不同的区域,网络延迟可能会影响性能,因此出现了Zonewareload平衡器,它具有区域亲和力,会优先考虑同一区域的实例。它使用区域回避规则作为负载平衡策略。

规则:负载平衡策略接口

1.抽象负载平衡规则,实现一些基本方法。iLoad平衡器对象已定义。

2.随机规则:随机选择策略。

3.圆形轮询规则:线性轮询策略

4.RetryRule:内部定义了另一种轮换策略,它具有判断一个实例是否存活的能力,如果不存活,轮询选择其他实例,判断实例的状态。它还设置了一个超时函数,如果在指定的时间内无法选择可用的实例,则返回null。

5.加权响应时间规则:RoundRobinRule的扩展,它定义了一个计算实例权重的算法。权重与实例的响应时间有关。反正最后的效果就是响应时间短的实例更容易被选中。

6.clientconfigenabledroundorbinrule:实现与roundRobinrule一致,后者用于其他类通过继承来扩展。

7.BestAvailableRule从ClientConfigenableDroundroBinrule继承,后者通过遍历所有实例来筛选故障实例,并找到需要返回的并发请求最少的实例。谁最闲找谁做事。

8.PredicateBasedRule:这个规则首先实现过滤(一种判断实例是否有故障且没有空忙的算法),然后遍历寻找一个实例。这个我不太清楚。

9.AvailabilityFilteringRule:Inherit PredicateBasedRule,直接遍历实例,根据规则找到合适的实例后返回。

10.区域回避规则:继承了表语基本规则,具有区域亲和策略。首先,通过区域过滤掉同一区域中的实例,然后选择一个实例。如果同一区域中没有实例,则线性遍历其他实例。

检测实例是否可用的接口

1.抽象负载平衡器:实现IPing,定义抽象负载平衡器。

2.no apping:ipping被实现并返回true,表示默认情况下所有实例都可用。

3.DummyPing:默认情况下返回true,构造一个initwithinWSConfig空方法,应该用来给开发人员提供自己继承的类。

4.NiwsDiscoverging:与尤里卡结合使用时,以注册中心管理的实例状态为准,处于UP状态的实例返回为可用。

5.PingConstant:实现IPing,可以通过设置setConstant来设置当前或所有实例的状态。

6.pingur:实现IP,通过发送http请求判断实例返回值的状态码是否为200,判断实例是否存活。默认地址为http或https://ip: port,可以通过setPingAppendString将ip后的字符串联起来形成。

以上三个接口是Ribbon上最重要的接口,其他接口这里不介绍。

先说一下Ribbon使用的默认接口。注意,与尤里卡整合后,界面发生了变化。

1.iLoad平衡器,所用的区域负载平衡器

2.I规则,已使用区域回避规则

3.IPing,使用NoOpPing,可以默认完成

4.服务器列表服务器,由ConfigurationBasedServerList决定。配置模式为:servername . ribbon . list of server = localhost:8001,localhost: 8002,localhost: 8003

5.服务器列表过滤服务器,默认使用ZonePreferenceServerListFilter,优先过滤同一区域的实例。

6.功能区的客户端配置IClientConfig默认使用默认客户端配置

与尤里卡集成后,界面实例的使用有以下变化:

1.服务器列表服务器,由DiscoveryEnabledNIWSServerList替换。这个类实现了尤里卡注册中心对服务实例列表的管理。指示Ribbon直接从尤里卡注册中心获取服务列表。

2.IPing被。NIWSDiscoveryPing,这意味着实例的状态由尤里卡注册表维护,如果注册表列表中的实例处于UP状态,它将返回可用。

以上介绍完毕,我们来看看如何定制这些策略的实现类。如果想实现这些接口,可以自己做。

通过查看功能区源代码,我们可以找到以下类,其构造函数定义了这些配置的字段。

publicPropertiesFactory(){

class to property . put(iLoad平衡器. class,NFLoadBalancerClassName);

class topproperty . put(ipping . class,nfloadbalancerspingClassName);

class topproperty . put(irule . class,nfloadbalancercruleclassname);

class topproperty . put(serverlist . class,niwsserverlist class name);

class topproperty . put(serveristfilter . class,niwsserveristfilterclassname);

}

我们可以看到它支持五个接口的实现类配置。例如,通过servername . ribbon . nfloadbalancercruleclassname = com . Netflix . load balancer . random rule,配置servername的负载平衡策略以随机选择一个实例。没有服务名的配置意味着全局效应。好了,结束了,亲测有效。您可以尝试自定义自己的负载平衡配置!

1.《ribbon Spring Cloud Netflix Ribbon介绍》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《ribbon Spring Cloud Netflix Ribbon介绍》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/824197.html

上一篇

儿子活埋母亲:用黄土封住但没踩实

下一篇

澳大利亚彩虹海滩发现银币水母Porpita porpita 通体青蓝梦幻

劳动手抄报 五一劳动节手抄报,海量素材、边框、实例!

  • 劳动手抄报 五一劳动节手抄报,海量素材、边框、实例!
  • 劳动手抄报 五一劳动节手抄报,海量素材、边框、实例!
  • 劳动手抄报 五一劳动节手抄报,海量素材、边框、实例!

公路工程预算实例 《公路工程预算定额》应用要点及实例!这一篇全了!

  • 公路工程预算实例 《公路工程预算定额》应用要点及实例!这一篇全了!
  • 公路工程预算实例 《公路工程预算定额》应用要点及实例!这一篇全了!
  • 公路工程预算实例 《公路工程预算定额》应用要点及实例!这一篇全了!

双t板 双T板应用实例——上海李尔亚洲总部大楼项目

  • 双t板 双T板应用实例——上海李尔亚洲总部大楼项目
  • 双t板 双T板应用实例——上海李尔亚洲总部大楼项目
  • 双t板 双T板应用实例——上海李尔亚洲总部大楼项目

什么淡什么轻 什么是轻,什么是重?6大要点、7个实例、5种方法让你明白画面中的“轻”与“重”

  • 什么淡什么轻 什么是轻,什么是重?6大要点、7个实例、5种方法让你明白画面中的“轻”与“重”
  • 什么淡什么轻 什么是轻,什么是重?6大要点、7个实例、5种方法让你明白画面中的“轻”与“重”
  • 什么淡什么轻 什么是轻,什么是重?6大要点、7个实例、5种方法让你明白画面中的“轻”与“重”

建筑面积怎么算 造价辅导:建筑面积怎么算?用实例进行分析解读

平面图,如下图所示:  雨篷建筑面积=雨篷顶盖水平投影面积的1/2 其中: r =(10.09+0.125)m = 10.215m; d =(3.0×3+3.9×2+0.125×2)m = 17.05m; h =(2.4+2.1+0.125-0.225)m = 4....

剪裁照片 如何裁剪好人像照片?摄影师用实例分享这6大关键点

  • 剪裁照片 如何裁剪好人像照片?摄影师用实例分享这6大关键点
  • 剪裁照片 如何裁剪好人像照片?摄影师用实例分享这6大关键点
  • 剪裁照片 如何裁剪好人像照片?摄影师用实例分享这6大关键点

济南写字楼出租 实例分析!100㎡写字楼,月租金12000元,100㎡住宅,月租金不足5000元,你选哪个?

  • 济南写字楼出租 实例分析!100㎡写字楼,月租金12000元,100㎡住宅,月租金不足5000元,你选哪个?
  • 济南写字楼出租 实例分析!100㎡写字楼,月租金12000元,100㎡住宅,月租金不足5000元,你选哪个?
  • 济南写字楼出租 实例分析!100㎡写字楼,月租金12000元,100㎡住宅,月租金不足5000元,你选哪个?
负载箱 阻性负载柜,容性负载柜,感性负载箱区别

负载箱 阻性负载柜,容性负载柜,感性负载箱区别

电源负载柜 JAY-3119 嘉义JAY-3119电力负荷柜(三工位)厂家可定制新国标实验机 一、产品概述 负载柜按GB4943、GB2099、GB16915.1、GB7000.1、IEC60884、IEC61058、IEC60669.1等国家相关要求设计制造。适用...