nacos:负载均衡 3大核心操作

Nacos 负载均衡核心能力总结


一、核心前提:开启 Nacos 负载均衡

要让下面所有功能生效,必须在调用方(如 order-service)的配置文件中开启 Nacos 负载均衡

yaml

复制代码
spring:
  cloud:
    loadbalancer:
      nacos:
        enabled: true

不加这个配置,默认的 Spring Cloud 轮询策略会让「权重」「同集群优先」都失效。


二、核心能力 1:服务上线下线(故障自动剔除)

1. 功能说明

  • 当服务实例正常关闭或意外宕机时,Nacos 会自动将其从服务列表中剔除。
  • 负载均衡器会立刻停止向下线的实例转发请求,只发给健康实例。

2. 你关心的问题

  • 问题 :某个实例下线了,会不会影响其他实例?
    • 回答:不会。只要还有其他健康实例,请求会自动转发到可用实例,不影响业务。
  • 问题 :服务下线是立刻生效吗?
    • 回答:主动关闭(优雅下线)是立刻生效;宕机 / 断网的实例,Nacos 会在健康检查失败后自动剔除(几秒内)。

三、核心能力 2:权重配置(流量分配控制)

1. 功能说明

  • 每个服务实例都可以设置 0~100 的权重,数值越大,分到的请求越多。
  • 权重为 0 时,实例直接下线,不接收任何请求(可用于优雅停机、灰度发布)。

2. 你关心的问题

  • 问题 :为什么权重配置了不生效?
    • 回答 :因为没开启 spring.cloud.loadbalancer.nacos.enabled=true,默认轮询策略不认权重。
  • 问题 :权重怎么用?
    • 回答
      • 灰度发布:新实例设高权重,旧实例逐步调低到 0,实现无痛切换。
      • 故障止损:故障实例设为 0,立刻停止流量,不影响用户。
      • 流量分担:高峰期通过调整权重,将部分流量导到其他集群实例。

四、核心能力 3:同集群优先访问(就近访问)

1. 功能说明

  • 服务可以通过 spring.cloud.nacos.discovery.cluster-name 配置所属集群(如 beijing)。
  • 负载均衡策略会优先选择同集群内的实例,只有当同集群实例全部下线 / 不健康时,才会降级访问其他集群的实例。

2. 你关心的问题

  • 问题 :同集群的机器处理不过来,会自动分流到其他集群吗?
    • 回答 :不会。默认策略只有在同集群实例全挂 / 不健康时,才会跨集群访问。
    • 想主动分流,必须通过手动调整权重实现(降低本集群权重,提高其他集群权重)。
  • 问题 :同集群优先的优先级比权重高吗?
    • 回答 :是的。执行顺序是:
      1. 优先筛选同集群实例
      2. 在同集群内按权重分配流量
      3. 同集群无可用实例时,才会跨集群访问

五、三者协同的完整执行流程

当 order-service 调用 product-service 时,完整的负载均衡逻辑是:

  1. 筛选集群:优先选择和自己同集群的 product-service 实例。
  2. 过滤健康实例:剔除已下线、不健康的实例。
  3. 按权重分配:在可用实例中,根据权重比例分发请求。
  4. 跨集群兜底:如果同集群没有可用实例,才会降级访问其他集群的实例。

六、关键结论

  1. 「权重」和「同集群优先」生效的前提是开启 Nacos 负载均衡。
  2. 服务下线自动剔除,实现高可用。
  3. 权重可手动控制流量分配,支持灰度发布和故障止损。
  4. 同集群优先是就近访问,不会自动跨集群分担压力,仅用于故障兜底。
  5. 高峰期跨集群流量分担,必须通过手动调整权重实现。
相关推荐
乘云数字DATABUFF2 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
荣--4 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森4 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜5 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB6 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode7 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220708 天前
如何搭建本地yum源(上)
运维
大树8811 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠11 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质11 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务