ribbon负载8种策略

类图

RandomRule 随机策略

在服务列表中使用随机策略。使用concurrent 包下的ThreadLocalRandom生产随机数

RoundRobinRule 轮询策略

在服务列表中使用随机策略。使用AtomicInteger的compareAndSet方式保证多线程不会出错

WeightedResponseTimeRule 按平均响应时间计算权重策略

继承RoundRobinRule策略,但算法跟RoundRobinRule关系不大。只有在权重计算出错的时候才使用轮询方式,例如新加入的节点没权重的情况。

给定4个服务A\B\C\D平均响应时间为10\30\40\20。

计算总权重:10+30+40+20=100

响应时间越短我们希望分配概率越大,

权重转换:100-10,100-30,100-40,100-20=90,70,60,80

改成累加递增:90,160,220,300

0-300生成随机数,如果是80路由到A,如果是230路由到D

RetryRule 重试策略

默认子策略是RoundRobinRule,当第一次获取的不可用时,门限值时间内一直获取可用服务,门限值默认500ms。

使用Thread.interrupted()、Thread.yield() 控制超时。

ClientConfigEnabledRoundRobinRule 客户端配置轮询基类

默认使用RoundRobinRule策略、一般使用他的子类、提供客户端配置接口

BestAvailableRule 最佳可用策略

单位时间内在可用服务中找出请求数最少的。默认1分钟

PredicateBasedRule 筛选条件的抽象类

不能直接使用

AvailabilityFilteringRule 降级策略

启用熔断:niws.loadbalancer.availabilityFilteringRule.filterCircuitTripped 默认true

设置最大可用连接数:niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit 默认Integer最大值

也可按服务配置 serviceName.ribbon.ActiveConnectionsLimit=100

ZoneAvoidanceRule 多区域降级策略

自定义HashKey策略

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值