彈性負載平衡(彈性服務)
彈性服務是一個去中心化的智慧負載平衡組件,也是 Dubbo-go 3.0 版本的一個主要新特性。彈性服務目前仍處於早期實驗階段,後續版本將持續優化此功能,我們也將與 Dubbo 社群一起探索一套適用於微服務場景的最佳實踐。
傳統的負載平衡演算法是透過隨機節點、RoundRobin 等演算法實現的,它們的局限性在於不了解當前服務提供者的負載情況,演算法總是盡可能以公平的機率呼叫不同的服務提供者。實際上,公平並不意味著高效能,叢集服務效能還與服務負載、任務複雜度等多個因素相關。為了彌補傳統負載平衡演算法的不足,Dubbo-go 3.0 版本引入了彈性服務,實現了動態的容量評估和分配功能。
容量評估是彈性服務的核心,它可以動態地評估伺服器的容量等級。在容量評估的過程中,兩個核心指標是 TPS 和響應時間。需要平衡系統利用率和系統效能之間的關係,使整體處於最佳狀態。
- TPS 從服務提供者的角度反映了系統利用率,在系統壓力未飽和之前,請求數量越大,系統利用率越高。但是,如果進一步增加請求量,直到系統過飽和,就會出現過載問題,導致整體效率呈現下降趨勢。
- 響應時間從服務呼叫者的角度反映了系統效能,在系統壓力未飽和之前,響應時間隨著請求數量的增加線性增長,但當進一步增加請求量,直到系統過飽和時,響應時間與請求數量的增加呈現指數級增長。
彈性服務在呼叫過程中會進行採集
在 Dubbo-go 3.0 版本中,支援服務彈性負載平衡。在微服務場景下,客戶端會在呼叫過程中採集服務下游伺服器實例的硬體資源消耗情況,透過容量評估和篩選策略,選擇最合適的下游實例進行呼叫,從而提升整體系統效能。
服務彈性將在後續迭代中持續優化,並尋求與 Dubbo 社群一起探索最佳實踐。