如何配置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
相关产品推荐
相关产品推荐

