spring.cloud.loadbalancer.nacos.enabled=true
spring.cloud.loadbalancer.configurations=weighted

把一台实例权重从 1 调到 0.1,观察了半小时访问日志,两台机器还是一半一半,权重字段像从来没被读过一样。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,默认的轮询负载均衡不读 Nacos 的权重字段,要换成 Nacos 提供的负载均衡实现,或者自己写策略,请求才会按权重分配,否则配了也是白配。

这次卡住的地方就在「Nacos 权重负载」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。改完隔一天再看一次,当场正常不代表能稳住。

测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。

处理上按这个顺序:确认依赖里有没有引入 nacos 那套负载均衡的适配包;把 LoadBalancer 的策略换成按权重计算流量的那个具体实现类;重启之后核对实例列表里的权重值有没有同步过来。

改完只确认一件事:权重 0.1 的实例请求量降到一成左右,另一台机器承担其余流量,比例符合预期。

作者 9823189