springcloud学习笔记(二):LoadBalancer自定义负载均衡策略配置

本文介绍如何在springcloud中通过自定义配置,实现修改LoadBalancer的默认负载均衡策略配置(默认策略为轮询)。

从springcloud2020版本开始默认移除了对Ribbon的依赖,官方默认推荐使用Spring Cloud Loadbalancer正式替换Ribbon,并成为了Spring Cloud负载均衡器的唯一实现。所以以后主要学习Loadbalancer的相关配置和使用。

本例使用的springcloud版本为:2021.0.3,springboot版本为:2.6.8

1、默认负载均衡策略

​ Loadbalancer默认实现了如下两种负载均衡策略:

  • RandomLoadBalancer - 随机分配策略
  • (默认) RoundRobinLoadBalancer - 轮询分配策略

2、自定义负载均衡策略

2.1 创建配置类

​ 如果想要修改默认的负载均衡策略,比如采用随机分配策略。则可以如下创建配置类,不需要添加@Configuration注解。

import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.loadbalancer.core.RandomLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ReactorLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;
 
/**
 * @Description: 负载均衡配置
 * @Author: knight
 * @Date: Created in 2022/7/19 10:30
 */
public class LoadBalancerConfig {
    @Bean
    public ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory){
        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
        return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);
    }
}






扫描下方二维码,关注公众号:程序进阶之路,实时获取更多优质文章推送。


扫码关注

评论