本文介紹如何解決Nacos上修改服務實例的權重不生效問題。
問題現象
在MSE控制臺上添加或修改服務實例時,設置了對應實例的權重并希望按照權重比例進行負載均衡。但實際調用流量時,流量分配未按照預期權重進行分配。
問題原因
您使用的應用框架不支持按權重分配流量負載均衡。
您使用的應用框架有自身的負載均衡配置方式,不使用Nacos的權重屬性進行負載均衡。
您的應用未使用權重值進行地址選擇。
解決方案
Nacos中服務實例的權重僅為實例的一個屬性。當修改權重值后,權重值會伴隨實例信息被推送到Nacos客戶端。實際使用時由于使用方式的不同,可能會導致權重屬性被忽略。
若您所使用的應用框架不支持按權重分配流量。例如
Spring Cloud Alibaba
等框架,此類框架僅識別流量值為0(不引入流量)和非0(引入流量),不支持按照Nacos實例中的流量值進行流量負載均衡。您可以按照以下方法解決。查看所使用的應用框架是否支持此功能的擴展,若支持擴展可以按照擴展方式使用。
更換其他應用框架。
您使用的應用框架有自身的負載均衡配置方式,不支持使用Nacos的權重屬性。如
Dubbo
、Spring Cloud Alibaba + Loadbalance
等。您可以在社區中詢問或根據對應框架文檔查看如何配置負載均衡。
您可能未使用應用框架進行開發,但是應用在處理時未使用權重值進行地址選擇。
應用在獲取到實例列表后,根據其中的
weight
字段實現自定義的選擇邏輯。使用Nacos客戶端默認的
selectOneHealthyInstance
方法進行選擇。更多信息,請參見Nacos Java SDK。
文檔內容是否對您有幫助?