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 # 如果其他的服务也需要配置为饥饿加载则在后面添加就行

可以看到服务启动后直接加载(饥饿加载),没有等到使用的时候再加载(懒加载)。

推荐阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。