You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Spring Cloud LoadBalancer实现最少连接负载均衡策略?

切换Spring Cloud LoadBalancer为最少连接(Least Connections)策略及网关支持说明

一、修改配置实现最少连接策略

Spring Cloud LoadBalancer内置了LeastConnectionsLoadBalancer来实现最少连接路由逻辑,只需替换你现有BalancerConfig中的RandomLoadBalancer即可完成切换:

修改后的BalancerConfig.java

import org.springframework.cloud.loadbalancer.core.LeastConnectionsLoadBalancer;
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.context.annotation.Configuration;
import org.springframework.core.env.Environment;

@Configuration
public class BalancerConfig {
    @Bean
    ReactorLoadBalancer<ServiceInstance> leastConnectionsLoadBalancer(Environment environment,
            LoadBalancerClientFactory loadBalancerClientFactory) {
        String serviceName = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
        // 路由至当前连接数最少的服务实例
        return new LeastConnectionsLoadBalancer(
                loadBalancerClientFactory.getLazyProvider(serviceName, ServiceInstanceListSupplier.class),
                serviceName);
    }
}

注意事项

  • 确保项目依赖包含spring-cloud-starter-loadbalancer(Spring Cloud 2020.0及以上版本默认集成该组件)
  • 原RestConfig中的@LoadBalancerClient注解无需修改,它会自动将上述配置绑定到目标负载均衡客户端

二、Spring Cloud Gateway对最少连接策略的支持

Spring Cloud Gateway默认集成Spring Cloud LoadBalancer作为负载均衡组件,完全支持最少连接策略,配置方式分为两种:

  • 针对特定服务:使用@LoadBalancerClient注解(与你当前RestTemplate的配置逻辑一致),为网关路由的目标服务单独配置LeastConnectionsLoadBalancer
  • 全局配置:在应用配置文件(如application.yml)中添加以下配置,让所有负载均衡客户端默认使用最少连接策略:
spring:
  cloud:
    loadbalancer:
      configurations: least-connections

内容的提问来源于stack exchange,提问作者Soumalya Bhattacharya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 06:05:01