微服务 - 修改Ribbon默认负载均衡策略

【Ribbon框架自带的负载策略类】

常见框架自带7种实现:
 # com.netflix.loadbalancer.RoundRobinRule  - 轮询
 # com.netflix.loadbalancer.RandomRule  - 随机
 # com.netflix.loadbalancer.RetryRule - 重试,先按RoundRobinRule进行轮询,如果失败就在指定时间内进行重试
 # com.netflix.loadbalancer.WeightedResponseTimeRule - 权重,响应速度越快,权重越大,越容易被选中。
 # com.netflix.loadbalancer.BestAvailableRule  - 先过滤掉不可用的处于断路器跳闸转态的服务,然后选择一个并发量最小的服务
 # com.netflix.loadbalancer.AvailabilityFilteringRule - 先过滤掉故障实例,再选择并发量较小的实例
 # com.netflix.loadbalancer.ZoneAvoidanceRule - 默认规则,复合判断server所在区域的性能和server的可用性进行服务的选择。


【主要步骤】

第一步:新建一个不会被@ComponentScan组件扫描到的包,如:com.rules
第二步:在该包下新建自己的负载均衡算法的规则类
第三步:主启动类上添加注解:@RibbonClient

【替换的策略类】

package com.rules;

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

/**
 * @desc 自定义负载均衡策略(用于替换默认的RoundRobinRule轮询策略)
 */
@Configuration
public class MyLoadBalanceRule {

  /**
   * @desc 自定义负载均衡规则,默认是轮询规则
   * @return
   */
  @Bean
  public IRule myRule(){
    return new RandomRule(); // 改为随机算法规则
  }

}

【主启动类】

package com.cloud.application;

import com.rules.MyLoadBalanceRule;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.ribbon.RibbonClient;

@SpringBootApplication(scanBasePackages = {"com.cloud"})
@EnableDiscoveryClient
@RibbonClient(name = "cloud-payment-service",configuration = MyLoadBalanceRule.class)
public class OrderServiceApplication {

  public static void main(String[] args) {

    SpringApplication.run(OrderServiceApplication.class, args);

  }

}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值