04-Nacos中负载均衡规则的配置

负载均衡规则

同集群优先

默认的ZoneAvoidanceRule实现并不能根据同集群优先的规则来实现负载均衡,Nacos中提供了一个实现叫NacosRule可以优先从同集群中挑选服务实例

  • 当服务消费者在本地集群找不到服务提供者时也会去其他集群中寻找,但此时会在服务消费者的控制台报警告

第一步: 在order-service模块的application.yml文件中添加集群配置属性spring.cloud.nacos.discovery.cluster-name

YML 复制代码
spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称(杭州)

第二步: 在order-service模块的application.yml文件中给userservice服务添加同集群优先的负载均衡规则

YML 复制代码
# 该属性和spring属性同级
userservice: # 给userservice服务配置负载均衡规则
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则

第三步: 访问http://localhost:8080/order/101(查询订单)-->http://localhost:8081/user/订单中的用户ID(查询用户), 观察服务实例的日志输出

  • 启动userservice服务的三个实例: 集群名称为HZ的两个userservice服务实例看到日志输出,而集群名称为SHuserservice服务实例看不到日志输出
  • 停掉集群名称为HZ的两个userservice服务实例: 集群名称为SHuserservice服务实例也会输出日志,但orderservice的控制台提示跨集群访问警告

权重占比

实际部署时不同的服务器设备性能有差异(有的性能好,有的性能较差),此时我们更希望性能好的机器承担更多的用户请求

默认情况下NacosRule实现类负载均衡的规则是同集群内随机挑选(不看机器的性能),所以Nacos另外提供了权重配置来控制访问频率(权重越大则访问频率越高)

在Nacos控制台找到userservice服务的实例,点击编辑即可以修改权重,权重一般是在0-1之间,权重为0表示该实例永远不会被访问

  • 灰度测试: 对服务进行版本升级时,可以给刚更新后的该服务设置一个很小的权重,这样就会有一小部分用户来访问该服务,测试该服务是否稳定
相关推荐
ACRELKY2 小时前
光伏运维迎来云端革命!AcrelCloud-1200如何破解分布式光伏四大痛点?
运维·分布式
only-qi2 小时前
146. LRU 缓存
java·算法·缓存
xuxie133 小时前
SpringBoot文件下载(多文件以zip形式,单文件格式不变)
java·spring boot·后端
星期天要睡觉4 小时前
Linux 综合练习
linux·运维·服务器
重生成为编程大王4 小时前
Java中的多态有什么用?
java·后端
666和7774 小时前
Struts2 工作总结
java·数据库
saynaihe4 小时前
proxmox8升级到proxmox9
linux·运维·服务器
中草药z4 小时前
【Stream API】高效简化集合处理
java·前端·javascript·stream·parallelstream·并行流
Delphi菜鸟4 小时前
docker 部署RustDesk服务
运维·docker·容器
野犬寒鸦4 小时前
力扣hot100:搜索二维矩阵 II(常见误区与高效解法详解)(240)
java·数据结构·算法·leetcode·面试