一、Ribbon主要作用在哪一环节?
流程讲解:
案例依然采用Eureka章节提供的案例,orderService根据服务名称发起请求,请求传达至Ribbon,此时Ribbon从Eureka中心拉取userService服务列表,Ribbon根据负载均衡算法对服务列表进行选择,最后决定将请求发送至哪个userService服务实例。
二、开启负载均衡
@Bean
@LoadBalanced//负载均衡
public RestTemplate restTemplatest(){
return new RestTemplate();
}
使用@LoadBalanced注解后表示RestTemplate以后发送的请求将会被Ribbon进行拦截和处理。
三、Ribbon负载均衡源码分析
1.获取拦截到的请求路径;
2.获取主机名(服务名称);
3.根据服务名称找Eureka获取服务列表
4.使用负载均衡算法选择服务实例
5.发送请求并获取返回值
四、负载均衡策略
4.1、修改策略
①、在SpringBoot启动类当中添加如下代码指明负载均衡策略(全局生效,不管访问哪个服务都采用此规则):
@Bean
public IRule randomRule(){
return new RandomRule();
}
②、在配置文件当中配置负载均衡规则(仅对userService服务生效):
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #针对某微服务设置其负载均衡规则
五、 饥饿加载
Ribbon默认采用懒加载,即第一次访问时才会去创建LoadBalancerClient(负载均衡客户端),请求时间会很长(服务列表拉取耗时较长),而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过一下配置开启饥饿加载:
#开启饥饿加载 即程序启动时就加载
ribbon:
eager-load:
enabled: true
clients:
- userservice