原创

6.Springcloud的Ribbon的负载均衡算法解析及配置方式

项目地址:

github地址

配置方式

1.在restTemplate配置类里面添加一个bean,用于确认所属的负载均衡算法类类型,全部代码如下:

package com.debuggg.cloud.cfg;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RoundRobinRule;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class CfgBean {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

    @Bean
    public IRule myRule(){
        return new RoundRobinRule();//默认的轮询算法
//        return new RandomRule();//达到的目的,用我们重新选择的随机算法替代默认的轮询
//        return new RetryRule();//重试负载均衡,如果有服务端挂了,重试几次之后会排除该服务器
    }
}

2.系统提供负载均衡算法的种类:

RoundRobinRule 轮询

RandomRule 随机

AvailabilityFilteringRule 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问

WeightedResponseTimeRule 根据平均响应时间计算所有服务的权重,响应时间越快服务权重越大被选中的概率越高。刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够,会切换到WeightedResponseTimeRule

RetryRule 先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内会进行重试,获取可用的服务

BestAvailableRule 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务

ZoneAvoidanceRule 默认规则,复合判断server所在区域的性能和server的可用性选择服务器

正文到此结束
本文目录