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. 高峰期跨集群流量分担,必须通过手动调整权重实现。
相关推荐
csdn_aspnet21 小时前
GitHub Actions自动化运维实战,用CI/CD流水线实现测试、部署、安全扫描一体化
运维·安全·ci/cd·自动化·github
Inhand陈工1 天前
数据中心UPS无功补偿与智能化监控方案:基于IG502的Modbus RTU转IEC61850实战
运维·人工智能·物联网·信息与通信
qetfw1 天前
CentOS 7 搭建 LDAP 目录服务
linux·运维·centos
IT方大同1 天前
linux简介
linux·运维·服务器
Dear~yxy1 天前
时间同步服务器搭建
运维·服务器
Gem_S_6081 天前
产品任务流转工具实践:构建需求到交付的全流程协作体系
运维
项目管理与代码1 天前
基于Webhook+消息队列的自动化项目进度跟踪方案设计
运维·自动化
wbs_scy1 天前
仿 muduo 高并发服务器项目:实现 LoopThread 与 LoopThreadPool 多线程事件循环
运维·服务器
微道道1 天前
Linux盒子局域网内使用 .local 域名访问,告别IP变化烦恼
linux·运维·服务器·hermes
霸道流氓气质1 天前
CodeBuddy中配置Playwright MCP 浏览器自动化完全指南
运维·自动化