首頁>技術>

來自:高可用架構原文:https://mp.weixin.qq.com/s/_Ih4AyL2c1JjyLwKCPmphg

本文是一篇關於 Dubbo 地址推送效能的壓測文章,我們期望透過對比的方式展現 Dubbo3 在效能方面的提升,尤其是新引入的應用級地址模型。但要注意,這並不是官方正式版本的效能參考基線,並且由於環境和時間原因,部分對比資料我們並沒有採集,但只要記住我們只是在定性的檢測階段成果,這些限制總體上並不會有太大影響。

1 摘要

本文主要圍繞下一代微服務框架 Dubbo 3.0 在地址推送鏈路的效能測試展開,也是在效能層面對 Dubbo 3.0 在阿里落地過程中的一個階段性總結,本輪測試了 Dubbo2 介面級地址發現、Dubbo3 介面級地址發現、Dubbo3 應用級地址發現。壓測資料表明,在百萬例項地址的壓測場景下:

基於介面級地址發現模型,Dubbo3 與 Dubbo2 對比,有超過 50% 常駐記憶體下降,Full GC 間隔更是明顯拉長Dubbo3 新引入的應用級服務發現模型,可以進一步可以實現在資源佔用方面的大幅下降,常駐記憶體比 Dubbo3 介面級地址進一步下降 40%,應用例項擴縮容場景增量記憶體分配基本為零,相同週期內(1小時) Full GC 減少為 2 次。

Dubbo 3.0 作為未來支撐業務系統的核心中介軟體,其自身對資源佔用率以及穩定性的提升對業務系統毫無疑問將帶來很大的幫助。

2 背景介紹2.1 下一代服務框架 Dubbo 3.0 簡介

一句話概括 Dubbo 3.0**,它是 HSF & 開源 Dubbo 後的融合產品,在相容兩款框架的基礎上做了全面的雲原生架構升級,它將成為未來面向阿里內部與開源社群的主推產品。**

Dubbo 3.0 誕生的大背景是阿里巴巴在推動的全站業務上雲,這為我們中介軟體產品全面擁抱雲上業務,提供內部、開源一致的產品提出了要求也提供了契機,讓中介軟體產品有望徹底擺脫自研體系、開源體系多線作戰的局面,有利於實現價值最大化的局面。一方面阿里電商系統大規模實踐的經驗可以輸出到社群,另一方面社群優秀的開發者也能參與到專案貢獻中。以服務框架為例,HSF 和 Dubbo 都是非常成功的產品:HSF 在內部支撐歷屆雙十一,效能優異且久經考驗;而在開源側,Dubbo 坐穩國內第一開源服務框架寶座,使用者群體非常廣泛。

同時維護兩款高度同質化的產品,對研發效率、業務成本、產品質量與穩定性都是非常大的考驗。舉例來說,首先,Dubbo 與 HSF 體系的互通是一個非常大的障礙,在阿里內部的一些生態公司如考拉、餓了麼等都在使用 Dubbo 技術棧的情況下,要實現順利平滑的與 HSF 的互調互通一直以來都是一個非常大的障礙;其次,產品不相容導致社群輸出成本過高、質量驗收等成本也隨之增長,內部業務積累的服務化經驗與成果無法直接賦能社群,二次改造適配 Dubbo 後功能性、穩定性驗收都要重新投入驗證。為徹底解決以上問題,結合上文提到的阿里集團業務整體上雲、開源以及雲產品輸出戰略,我們制定了全面發展 Dubbo 3.0 的計劃,

2.2 Dubbo 不同版本在地址推送鏈路上的效能壓測與對比

下圖是服務框架的基本工作原理,橙色路徑即為我們此次重點壓測的地址推送鏈路,我們重點關注在百萬地址例項推送的情況下,Dubbo 不同版本 Consumer 間的差異,尤其是 Dubbo 3.0 的實際表現。

作為對比,我們選取了以下場景進行壓測:

Dubbo2,此次壓測的參考基線Dubbo3 介面級地址發現模型,與 Dubbo2 採用的模型相同Dubbo3 應用級地址發現模型,由雲原生版本引入,詳細講解請參見這篇文章壓測環境與方法3 最佳化結果分析與對比3.1 GC 耗時與分佈

Dubbo2 介面級地址模型

Dubbo3 介面級地址模型

Dubbo3 應用級地址模型

3.2 增量記憶體分配情況

Dubbo2 介面級地址模型

Dubbo 3.0 介面級地址模型

Dubbo3 應用級地址模型

3.3 OLD 區與常駐記憶體

Dubbo2 介面級模型

Dubbo3 介面級模型

Dubbo3 應用級模型

3.4 Consumer 負載

Dubbo3 介面級模型

Dubbo3 應用級模型

4 詳細對比與分析4.1 Dubbo2介面模型 vs Dubbo3介面模型

在 200w 地址規模下,Dubbo2 很快吃滿了整個堆記憶體空間,並且大部分都無法得到釋放,而由此觸發的頻繁的 GC,使得整個 Dubbo 程序已無法響應,因此我們壓測資料採集也沒有持續很長時間;

同樣保持介面級地址模型不變,經過最佳化後的 Dubbo3 ,在 1 個小時之內只有 3 次 Full GC,並且持續推送期間不可釋放記憶體大概下降在 1.7G。

4.2 Dubbo3 介面模型 vs Dubbo3 應用模型

當切換到 Dubbo3 應用級服務發現模型後,整個資源佔用情況又出現了明顯下降,這體現在:

應用程序上下線場景,增量記憶體增長很小 (介面級的 MetadataData 基本得到完全複用,新增部分僅來自新擴容機器或部分服務的配置變更)常駐記憶體相比 Dubbo3 介面級又下降了近 40%,維持在 900M 左右

值得一提的是,當前的應用級地址推送模型在程式碼實現還有進一步最佳化的空間,比如 Metadata 複用、URL 物件複用等,這部分工作將是我們後續探索的重點。

5 總結

Dubbo 3.0 目前已經實現了 Dubbo&HSF 的全面融合,雲原生方案也在全面推進中。在剛剛過去的雙十一中,Dubbo 3.0 平穩支撐了考拉業務,並且也已經透過阿里其他一些電商應用的部分線上試點。後續我們將專注在推動 Dubbo 3.0 的進一步完善,一方面兌現應用級服務發現、全新服務治理規則、下一代 Triple 協議等,另一方面兌現我們立項之初設定的資源佔用、效能、叢集規模等非功能性目標。

此次推送鏈路的效能壓測,是落地/研發過程中的一次階段性驗收,應用級服務發現在資源佔用方面大幅下降,讓我們看到了新架構對未來構建真正可伸縮叢集的可行性,這更堅定了我們對應用級服務發現架構的信心。後續迭代中,在繼續完善介面級、應用級兩種模型並實現 Dubbo 3.0 的全面性能領先後,我們將專注在遷移方案的實現上,以支援老模型到新模型的平滑、透明遷移。

11
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Tokio 1.0 穩定版釋出,Rust 非同步程式設計框架