SpringCloud(一)微服务介绍 SpringCloud(二)【单体服务及远程调用】 SpringCloud(三)【Eureka注册中心】
Ribbon负载均衡
一、负载均衡原理二、负载均衡策略三、懒加载
一、负载均衡原理
上一篇提到在注入RestTamplate的时候使用了注解@LoadBalanced,自动实现负载均衡,接下来就要讨论它是如何实现负载均衡的。
二、负载均衡策略
Ribbon的负载均衡规则是通过一个叫做IRule的接口来定义的,每一个子接口都是一个规则。 下图是各个规则的说明: 启动一个服务的两个实例,注意需要更改端口号,方式:
一个服务启动两个端口号不同的实例:
直接更改appplication.yml的端口直接启动;复制服务,更改端口号。(选中要启动的服务 -> Ctrl+D -> 配置-Dservice.port=8082 ) 注意:需要更改服务的名称 可以看到该服务已经在Eureka注册成功
负载均衡规则可以通过配置来进行更改,有两种方式:
直接通过代码方式在注入的时候进行配置
@Bean
public IRule iRule(){
return new RandomRule();
}
连续多次访问,查看两个服务是谁收到请求是随机的: 2. 通过yaml文件进行配置
# 配置userservice这个服务的负载均衡规则为RandomRule
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则
重新启动测试后和前一种方式一样,不截图了。
三、懒加载
Ribbon默认采用懒加载的方式,所以首次访问的时候会比较耗时,我们也可以通过配置yml文件来将加载方式改为饥饿加载。
ribbon:
eager-load:
enabled: true # 开启饥饿加载方式
clients: #指定饥饿加载的服务名称,是个list可以配置多个服务
- userservice
# - anotherservice # 如果其他的服务也需要配置为饥饿加载则在后面添加就行
可以看到服务启动后直接加载(饥饿加载),没有等到使用的时候再加载(懒加载)。
推荐阅读
发表评论