Ribbon负载规则

Ribbon默认自带的负载规则

1、RoundRobinRule—轮询
2、RandomRule—随机
3、RetryRule--先按照RoundRobinRule的策略获取服务,若获取失败则在指定时间内进行重试,获取可用的服务
4、WeightedResponseTimeRule--RoundRobinRule扩展,响应速度越快的实例选择权重越大,越容易被选择
5、BestAvailableRule—会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
6、AvailabilityFileteringRule—先过滤掉故障实例,在选择并发较小的实例
7、ZoneAvoidanceRule—默认规则,复合判断server所在区域的性能和server的可用性选择服务器

Ribbon负载规则替换

1、根据官方提示,不可放在主函数同包下,需新建package
2、新建包下新建规则类

@Configuration
public class MyselfRule {
    //自定义Ribbon规则

    @Bean
    public IRule myRule(){
        //随机
        return new RandomRule();
    }
}

3、主启动类添加@RibbonClient注解

@RibbonClient(name="SPRINGCLOUD-PAYMENT-SERVICE",configuration = MyselfRule.class)

name为访问微服务名称,configuration 指定规则类

Ribbon负载均衡算法

负载均衡算法:rest接口第几次请求数%服务器集群总数量=实际调用服务器位置下标,每次服务重启后rest接口计数从1开始。
例:
list[0] instances = 127.0.0.1:8002
list[1] instances = 127.0.0.1:8001
集群总数为2
当第1次访问 : 1%2 = 1 对应下标为1 则请求服务为127.0.0.1:8001
当第2次访问 : 2%2 = 0 对应下标为0 则请求服务为127.0.0.1:8002
当第3次访问 : 3%2 = 1 对应下标为1 则请求服务为127.0.0.1:8001
当第4次访问 : 4%2 = 1 对应下标为0 则请求服务为127.0.0.1:8002
如此类推....

你可能感兴趣的:(Ribbon负载规则)