【4.2】Ribbon负载均衡策略


Ribbon负载均衡原理 中学习到:
在这里插入图片描述
IRule接口决定了负载均衡的策略。
接下来学习IRule接口的实现有哪些?以及如何修改它的实现。


1 Ribbon–负载均衡策略

Ribbon的负载均衡规则是一个叫做IRule的接口来定义的,每一个子接口都是一种规则:
在这里插入图片描述
默认的实现是ZoneAvoidanceRule
在这里插入图片描述


2.1 修改负载均衡规则–代码方式

通过定义IRule 实现可以修改负载均衡规则,有两种方式:

  1. 代码方式:在order-service中的OrderApplication类中,定义一个新的IRule:
@Bean
public IRule randomRule() {
	return new RandomRule();
}

这个Bean总的类型是IRule,但是实现的时候可以是IRule的任何一种实现。这里RandomRule也就是随机。
这样配置以后就会让负载均衡规则从轮询变成随机


2.1.1 具体测试:

首先启动四个服务:
在这里插入图片描述
将日志清空,然后进入浏览器依次访问
localhost:8080/order/101

localhost:8080/order/104

可以看到8081中有1 和3
在这里插入图片描述
8082中有2和4
在这里插入图片描述
显然这里的规则是轮询
接下来我们尝试改变负载均衡的规则:
打开OrderApplication
在这里插入图片描述
这样我们就将负载均衡的规则设置为了随机。
接下来重启OrderApplication:
再次进入浏览器依次访问
localhost:8080/order/101

localhost:8080/order/104

可以看到8081里面有2 3 4
在这里插入图片描述
8082里面有1
在这里插入图片描述
可以看出这里负载均衡的规则是随机。

注意,代码方式的配置是作用于全局的,在order-service里不管是调用哪一个微服务,都会变成随机。


2.2 修改负载均衡规则–配置文件方式

通过定义IRule实现可以修改负载均衡规则的第二种方式:

  1. 配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则:
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则

在这种方式可以看到,它会先指定服务名称再去指定负载均衡的规则。
因此,这种方案是针对于某一个微服务而言。


2.2.1 具体配置

找到order-service的application.yml文件,添加:
在这里插入图片描述
接下来重启Order服务,回到浏览器:依次访问
localhost:8080/order/101

localhost:8080/order/104
在这里插入图片描述
可以看出这里是随机而不是轮询。


3 总结

在这里插入图片描述
第一种方式作用范围是全局
第二种配置方式是只针对某个服务而言。


By --Suki 2023/1/5

知识内容来自于黑马程序员视频教学和百度百科。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值