全部產品
Search
文件中心

Microservices Engine:如何解決Nacos上修改服務執行個體的權重不生效問題

更新時間:Nov 01, 2024

本文介紹如何解決Nacos上修改服務執行個體的權重不生效問題。

問題現象

在MSE控制台上添加或修改服務執行個體時,設定了對應執行個體的權重並希望按照權重比例進行負載平衡。但實際調用流量時,流量分配未按照預期權重進行分配。

問題原因

  • 您使用的應用程式框架不支援按權重分配流量負載平衡。

  • 您使用的應用程式框架有自身的負載平衡配置方式,不使用Nacos的權重屬性進行負載平衡。

  • 您的應用未使用權重值進行地址選擇。

解決方案

Nacos中服務執行個體的權重僅為執行個體的一個屬性。當修改權重值後,權重值會伴隨執行個體資訊被推送到Nacos用戶端。實際使用時由於使用方式的不同,可能會導致權重屬性被忽略。

  • 若您所使用的應用程式框架不支援按權重分配流量。例如Spring Cloud Alibaba等架構,此類架構僅識別流量值為0(不引入流量)非0(引入流量),不支援按照Nacos執行個體中的流量值進行流量負載平衡。您可以按照以下方法解決。

    • 查看所使用的應用程式框架是否支援此功能的擴充,若支援擴充可以按照擴充方式使用。

    • 更換其他應用程式框架。

  • 您使用的應用程式框架有自身的負載平衡配置方式,不支援使用Nacos的權重屬性。如DubboSpring Cloud Alibaba + Loadbalance等。

    您可以在社區中詢問或根據對應架構文檔查看如何配置負載平衡。

  • 您可能未使用應用程式框架進行開發,但是應用在處理時未使用權重值進行地址選擇。

    • 應用在擷取到執行個體列表後,根據其中的weight欄位實現自訂的選擇邏輯。

    • 使用Nacos用戶端預設的selectOneHealthyInstance方法進行選擇。更多資訊,請參見Nacos Java SDK