SpringCloudAlibaba Ribbon Nacos 负载均衡的操作案例

目录

一、常见的负载均衡算法

二、ribbon默认轮询负载均衡的案例

三、配置基于Nacos随机权重的Ribbon负载均衡


一、常见的负载均衡算法

1、随机,通过随机的方式进行服务调用,一般使用较少。

2、轮询,ribbon负载均衡默认的使用方式,请求来了之后排队处理。需要注意的是本地轮询是没问题,但放到云上以后,服务器会默认按照当前区域进行轮询,如成都区域的服务器会在该区域内进行优先轮询,而不会直接调度轮询到浙江区域的服务器。

3、加权轮询,通过对服务器性能的分析,给高配置、低负载的服务器分配更高的权重,均衡各服务器的压力。

4、地址Hash,通过客户端请求的地址的Hash值取模进行服务器调度。ip-->hash。

5、最小连接数,即使请求均衡了,压力不一定会均衡,最小连接数法就是根据服务器的情况,将请求分配到当前压力最小的服务器上。通过最小活跃数确定对象。

二、ribbon默认轮询负载均衡的案例

负载均衡策略是基于服务消费方来实现的。

由于Nacos依赖自动集成了ribbon的负载均衡组件,这里就不再赘述,详情见我的Nacos的配置使用篇。这里我们采用了openFeign进行服务间远程的调用,详情见我的openFeign篇的使用案例。

这里我们开启4个服务进行实验,我们通过访问服务调用方来调用以下三个服务。

 这四个服务均注册到了Nacos中进行管理。

 此时我们清空所有服务的控制台打印。通过ApiPost进行访问测试。

15次请求调用中,可以看到通过轮询负载均衡3个服务提供方均被调用了5次 。

 

 可以看出Ribbon默认使用了轮询进行负载均衡。

三、配置基于Nacos随机权重的Ribbon负载均衡

方法一:基于配置类实现

 此时为全局生效

package com.dragonwu.stock.ribbon;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author DragonWu
 * @date 2022-09-30 13:29
 **/
@Configuration
public class RibbonRandomRuleConfig {

    @Bean
    //方法名一定要叫iRule
    public IRule iRule(){
        return new RandomRule();
    }
}

再次测试就可以看到对应的负载均衡效果了。

方法二:通过配置文件实现,同时适用于局部,推荐

# 部分服务的负载均衡策略配置
test-service:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule

 重启运行,在nacos中配置权重

 20次访问测试,结果检查:

结果可以看到NacosRule采用的是随机权重的负载均衡策略,权重越高访问概率越高

权重0.2的被访问2次 

 权重0.7的被访问17次

权重为0.1的被访问了1次

 测试次数越多会越接近于该百分比。这便是随机权重负载均衡策略。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值