IRule 自定义Ribbon负载均衡

七大负载算法

  • RoundRobinRule 
    1. 轮询,依次执行每个执行一次(默认)
  • RandomRule
    1. 随机执行服务
  • AvailabilityFilteringRule 
    1. 会先过滤掉多次访问故障而处于断路器跳闸状态的服务 和过滤并发的连接数量超过阀值得服务,然后对剩余的服务列表安装轮询策略进行访问
  • WeightedResponseTimeRule
    1. 根据平均响应时间计算所有的服务的权重,响应时间越快服务权重越大,容易被选中的概率就越高。
    2. 刚启动时,如果统计信息不中,则使用RoundRobinRule(轮询)策略,等统计的信息足够了会自动的切换到WeightedResponseTimeRule
  • RetryRule
    1. 先按照RoundRobinRule(轮询)的策略获取服务,如果获取的服务失败侧在指定的时间会进行重试,进行获取可用的服务
    2. 如多次获取某个服务失败,这不会再再次获取该服务如(高德地图上某条道路堵车,司机不会走那条道路)
  • BestAvailableRule 
    1. 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
  • ZoneAvoidanceRule 
    1. 默认规则,复合判断Server所在区域的性能和Server的可用性选择服务器

首先创建自定义负载均衡需要在启动类之外的包下创建一个配置类

自定义的Rlue配置类不放在@ComponentScan注解所扫描到,否则自定义的配置类就会被所有的Ribbon共享

这这边自定义在myrule下

package com.xinlus.myrule;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MySelfRule {
    @Bean
    public IRule myRule(){
        return new RandomRule();
    }
}

需注意不能再启动类以下的子包

package com.xinlus.cloud;

import com.xinlus.myrule.MySelfRule;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.ribbon.RibbonClient;

@EnableEurekaClient
@SpringBootApplication
@RibbonClient(name = "CART-SERVICE",configuration = MySelfRule.class)
public class Main {

    public static void main(String[] args) {
        SpringApplication.run(Main .class,args);
    }

}

需要注意的是我们在启动类上添加@RibbonClient注解

configuration 这个属性就是我们写的自定义负载均衡配置类

而name是我们在注册中心对外曝光微服务的名称,需负载均衡的服务 这个不能写错,否则就会失效

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值