Spring Cloud 五大核心组件解析之Ribbon组件IRule详解(下)

点击关注上方“JAVA开发大本营”,设为“置顶或星标”,第一时间送达技术干货。

 

全文阅读预计5分钟

JAVA开发大本营

前言:上篇文章介绍了IRule的几种负载策略,还剩下几种,本章将会进行讲解。

往期回顾:

Spring Cloud 五大核心组件解析之Ribbon组件IRule详解(上)

本文为原创资源,欢迎分享,转载。

7.WeightedResponseTimeRule

介绍:

WeightedResponseTimeRule这个策略每30秒计算一次服务器响应时间,以响应时间作为权重,响应时间越短的服务器被选中的概率越大。

工作原理:

WeightedResponseTimeRule很有意思,它默认起了一个循环的定时任务,时间是30S,每30S就调度一次任务DynamicServerWeightTaskDynamicServerWeightTask的关键方法是run(),在run()中调用了serverWeight.maintainWeights(),maintainWeights()的作用是计算出每个服务器的响应时间,用来给choose()选择服务器。

8.ZoneAvoidanceRule

介绍:

ZoneAvoidanceRulePredicateBasedRule的一个实现类,但是比PredicateBasedRule多了一个过滤条件。

工作原理:

ZoneAvoidanceRule中的过滤条件是以ZoneAvoidancePredicate为主过滤条件和以AvailabilityPredicate为次过滤条件组成的一个叫做CompositePredicate的组合过滤条件,过滤成功之后,继续采用线性轮询的方式从过滤结果中选择一个出来。

注意:不论是主过滤条件还是次过滤条件,都需要判断下面两个条件,只要有一个条件符合,就不再过滤,将当前结果返回供线性轮询。

1)过滤后的实例总数>=最小过滤实例数(默认为1)

2)过滤后的实例比例>最小过滤百分比(默认为0)

9.AvailabilityFilteringRule

介绍:

AvailabilityFilteringRule策略继承自抽象策略PredicateBasedRule,所以也继承了"先过滤清单,再轮询选择"的基本处理逻辑了"先过滤清单,再轮询选择"的基本处理逻辑。该策略通过线性抽样的方式直接尝试可用且较空闲的实例来使用,优化了父类每次都要遍历所有实例的开销。

工作原理:

AvailabilityFilteringRule的过滤条件中有一个AvailabilityPredicate的过滤条件,这个条件用于判断两个条件

1)断路器是否生效已打开,满足该条件,过滤掉。

2)实例的并发请求数大于阈值。大约阈值,过滤掉。

过滤成功之后,继续采用线性轮询的方式从过滤结果中选择一个出来。

下期预告:

IRule我们在这里就讲完了,大家有兴趣的可以去多看看源码,源码的代码风格以及编程思想才是我们应该学习的。下期我们将会讲解IPing的原理知识,不用枯燥的代码就让你了解深入的知识。

点个在看是最大的支持 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

carl的分享笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值