编写ribbon的负载均衡算法

本文介绍了负载均衡的概念,详细讲解了Ribbon中的IRule接口及其默认负载轮询算法,包括轮询、随机、重试等策略。并探讨了如何重写Ribbon的负载轮询算法,通过编写自己的LoadBalancer接口实现定制化的服务选择策略。
摘要由CSDN通过智能技术生成

什么是负载均衡?

在这里插入图片描述
在这里插入图片描述

IRule

根据特定的算法中从服务列表中选取一个要访问的服务

  • com.netflix.loadbalancer.RoundRobinRule-轮询
  • com.netflix.loadbalancer.RandomRule -随机
  • com.netflix.loadbalancer.RetryRule -先按照RoundRobinrule的策略获取服务,如果获取服务失败则在指定时间内会进行重新选择
  • WeightedResponseTimeRule -对roundRobinRule的扩展,响应速度越快的实例选择权重越大,越容易别选择
  • BestAvailableRule-会先过滤出掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
  • AvailabilityFilteringRule-会先过来掉故障实例,在选择并发较小的实例
  • ZoneAvoidanceRule-默认规则,复合判断server所在区域的性能和server的可用性选择服务器

注意


配置Ribbon的负载均衡算法的自定义配置类不能放在@ComponentScan所扫描的当前包下以及其子包下否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,达不到特殊化定制的目的。 @ComponentScan所扫描的包,一般为Application类所在的包

Ribbon默认负载轮询算法原理:

负载均衡算法:

rest接口第几次请求数 % 服务器集群总数量=实际调用服务器位置下标,每次服务重启后rest接口计数从1开始。
List instances =dicoveryClient.getInstances(“CLOUD-PAYMENT_SERVICE”) //instance则为服务的实例数量
List[0] instances=127.0.0.1:8002 List[1] instances=127.0.0.1:8001

在这里插入图片描述
在这里插入图片描述

重写Ribbon负载轮询算法:

1、编写LoadBalancer接口

public interface LoadBalancer 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LLLDa_&

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

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

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

打赏作者

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

抵扣说明:

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

余额充值