❒ spring cloud负载均衡组件有两个传统的是Ribbon,目前官方维护的是LoadBalancer。
✅Ribbon可以自己创建类实现IRue接口,然后再通过配置类或者配置文件配置即可,通过定义IRule实现可以修改负载均衡规则,有两种方式:
❒ 全局配置
@Bean
public iRule randomRule(){
return new RandomRule();
}
❒单个服务局部配置
xxxservice:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.oadbalancer.RandomRule #负载均衡规则
✅LoadBalancer可以自己创建类实现ReactorLoadBalancer接口,然后再通过配置类或者配置文件配置即可:
public class CustomLoadBalancer implements ReactorLoadBalancer {
@Override
public ServiceInstance choose(String serviceId) {
List instances = // 获取serviceId对应的所有实例
if (instances.isEmpty()) {
return null;
}
// 实现自定义的选择逻辑,例如随机选择一个实例
return instances.get(new Random().nextInt(instances.size()));
}
}
@Bean
public ReactorLoadBalancer customLoadBalancer() {
return new CustomLoadBalancer();
}
❒ 在需要调用其他服务的地方,可以使用@LoadBalanced注解来启用负载均衡。例如:
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}