??从 Spring Cloud Netflix 3.0 以后的版本开始,就已经没有ribbon的依赖,它的负载均衡是依靠的Spring Cloud的负载均衡策略,并且只有两种:轮询策略 和 随机策略,实现的是 ReactorServiceInstanceLoadBalancer 接口,有兴趣的可以去看看源码 ??当然相应的修改方法也有很大的改变,可以参考官方文档:https://docs.spring.io/spring-cloud-commons/docs/current/reference/html/#spring-cloud-loadbalancer ??本文就对新版的负载均衡器的使用做一个简要的说明 注意: ??本文的负载均衡器版本为spring-cloud-starter-loadbalancer:3.1.1
全局定义
??顾名思义,就是会在全局生效
public class LoadBalancerConfig {
@Bean
ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,
LoadBalancerClientFactory loadBalancerClientFactory) {
String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
return new RandomLoadBalancer(loadBalancerClientFactory
.getLazyProvider(name, ServiceInstanceListSupplier.class),
name);
}
}
局部使用
??仅在指定的服务生效
@Configuration
@LoadBalancerClient(name = "eureka-provider-demo", configuration = LoadBalancerConfig.class)
public class MyConfiguration {
}
??Spring Cloud Netflix 3.0以上的版本还可以按照以前的方式修改负载均衡策略,相关的修改代码网上有很多,本文不在进行说明
|