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