个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~
Ribbon的负载均衡策略是一个叫做IRule
的接口来定义的,每一个子接口都是一种规则。
在微服务的服务消费者(order-service)中的启动类OrderApplication类内部,定义一个新的
IRule
@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
@EnableFeignClients(clients = UserClient.class,defaultConfiguration = DefaultFeignConfiguration.class)
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
/**
* 创建RestTemplate并注入Spring容器
*/
@Bean
@LoadBalanced//实现负载均衡
public RestTemplate restTemplate() {
return new RestTemplate();
}
//重新定义IRule,达到调整负载均衡规则的效果
@Bean
public IRule randomRule() {
//默认是轮询规则,这里负载均衡策略调整成——随即规则
return new RandomRule();//随机规则
}
}
这里在微服务的服务消费者(order-service)的配置文件
application.yml
中,添加新的配置也可以修改负载均衡规则,下述配置信息指定调用服务名称为:userservice的服务时,使用的负载均衡规则。
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则——随机规则
可通过在application.yml配置文件中添加配置相关信息,开启饥饿加载:
ribbon:
eager-load:
enabled: true # 开启饥饿加载
clients:
- userservice # 指定饥饿加载的服务名称,可加载多个