码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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负载均衡

    方法一:基于配置类实现

     此时为全局生效

    1. package com.dragonwu.stock.ribbon;
    2. import com.netflix.loadbalancer.IRule;
    3. import com.netflix.loadbalancer.RandomRule;
    4. import org.springframework.context.annotation.Bean;
    5. import org.springframework.context.annotation.Configuration;
    6. /**
    7. * @author DragonWu
    8. * @date 2022-09-30 13:29
    9. **/
    10. @Configuration
    11. public class RibbonRandomRuleConfig {
    12. @Bean
    13. //方法名一定要叫iRule
    14. public IRule iRule(){
    15. return new RandomRule();
    16. }
    17. }

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

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

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

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

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

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

    权重0.2的被访问2次 

     权重0.7的被访问17次

    权重为0.1的被访问了1次

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

  • 相关阅读:
    动态规划:路径和子数组问题(C++)
    音视频从入门到精通——MediaMuxer API 简介
    java计算机毕业设计网上书城网站源码+系统+数据库+lw文档+mybatis+运行部署
    阿里三面:Redis大key怎么处理?
    @Transactional失效场景/原因
    借身份证给别人办理流量卡有风险吗?这些情况你必须要知道!
    【Linux】【minicom】usb转串口
    【unity与android的交互(一)】安卓打包相关的常见参数详解
    【DS】实现二叉树的基本操作
    物联网设备带你进入物联网时代,轻松实现数据互联互通
  • 原文地址:https://blog.csdn.net/qq_50909707/article/details/127121681
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号