Nacos 2.0 升級先後性能對比壓測

簡介:Nacos 2.0 經過升級通訊協議和框架、數據模型的方式將性能提高了約 10 倍,解決繼 Nacos 1.0 發佈逐步暴露的性能問題。本文經過壓測 Nacos 1.0,Nacos 1.0 升級 Nacos 2.0 過程當中,Nacos 2.0 進行全面性能對比,直觀的展現 Nacos 2.0 所帶來的性能提高。

做者|席翁segmentfault

 title=

Nacos 2.0 經過升級通訊協議和框架、數據模型的方式將性能提高了約 10 倍,解決繼 Nacos 1.0 發佈逐步暴露的性能問題。本文經過壓測 Nacos 1.0,Nacos 1.0 升級 Nacos 2.0 過程當中,Nacos 2.0 進行全面性能對比,直觀的展現 Nacos 2.0 所帶來的性能提高。框架

壓測準備

環境準備

爲了方便 Nacos 部署升級和展現核心性能指標,咱們是從阿里雲微服務引擎 MSE(\_https://cn.aliyun.com/product/aliware/mse\_)中購買的一個 2 核 CPU+4G 內存的三節點 Nacos 集羣。
ide

壓測模型

爲了展現不一樣規模下的系統表現,咱們採用逐步增壓的方式進行壓測,將壓力分爲 3個批次進行逐步啓動,並觀察每一個批次下集羣的運行表現。同時會在壓力集羣以外,再增長一個 Dubbo 服務的 Demo ,並使用 Jmeter 以 100 TPS 的壓力不停的調用,以模擬不一樣壓力下,對實際業務調用存在的可能影響。微服務

壓測過程當中,會在適當的時候對服務端和客戶端進行升級;服務端的升級將直接使用 MSE 提供的一鍵升級功能,客戶端的升級會使用分批次輪流重啓的方式進行。
 title=性能

壓測過程

Nacos1.X Server + Nacos1.X Client測試

首先啓動第一批施壓集羣,對 MSE Nacos1.2.1 進行施壓,在 6000 個 Providers 的壓力下,集羣穩定時 CPU 大約 25% ,可以穩定保持 6000 實例。阿里雲

 title= title=

隨後啓動第二批施壓集羣,增長 4000 個 Provider ,合集 10000 個 Provider 。此時集羣峯值 CPU 已經達到 60% ,穩定運行時大約在 45% 左右,集羣可以穩定運行。
 title= title=url

在前兩批的壓力下,集羣沒有出現穩定性問題,因此 Dubbo 的調用保持正常,沒有錯誤發生。spa

 title=

當第三批施壓集羣啓動以後,壓力總計 14000 個 Provider 。此時集羣先是短暫的註冊到 13000 個實例,以後很快出現實例數下跌,CPU 跑滿的問題。而且縮小時間範圍能夠看到,下跌後的實例仍然在小範圍抖動。日誌

 title= title= title=

同時 Dubbo 的調用出現錯誤,從 Consumer 的日誌能夠看出,是因爲服務端沒法支撐這個級別的壓力,致使 Dubbo Provider 被摘除,因此調用的時候出現了 No provider 的錯誤。

 title=
 title=

Nacos2.X Server + Nacos1.X Client

因爲服務端升級期間,會進行實例的雙寫操做,所以在升級過程當中服務端存儲的實例數會是實際實例值的兩倍。根據上述測試結果,須要先將實例數回滾回第一批 6000 實例以後,或是升級配置擴容機器以後再嘗試升級。本文使用回滾壓力的方式,先中止後啓動的施壓集羣。讓集羣恢復正常後再執行升級。

 title= title= title=

從監控圖中能夠看出,在中止後兩批壓力後,集羣很快就恢復到了正常,運行穩定,Dubbo 調用也恢復正常。以後使用 MSE 的升級功能,進行升級。升級過程當中因爲雙寫的性能損耗,致使 CPU 有較大的抖動;並且由於雙寫致使的實例數翻倍,實際上至關於 12000 實例的極限壓力,服務端仍然有必定的抖動,所以致使了些許 Dubbo 的錯誤。如果在非極限壓力下升級,將不會有此影響。
 title=
 title= title=

隨着服務端升級完成中止雙寫,消除了雙寫帶來的性能損耗,CPU 使用下降並趨於穩定,同時實例數也再也不抖動,Dubbo 調用徹底恢復;如同 1.X 服務端同樣,分兩個批次啓動施壓集羣,對比兩個版本間在相同壓力下的性能表現。

 title= title=

 title=
因爲客戶端依舊使用的是 1.X 的客戶端,服務端的使用水位依然很是高,在所有壓力啓動後,CPU 幾乎達到 100% ;雖然沒有像 1.X 服務端同樣,出現大規模實例下跌,可是運行一段時間後依舊有少許的實例抖動,說明僅升級 Nacos 服務端到 2.0 版本能有必定的改善,可是沒有完全解決性能問題。

 title=

Nacos2.X Server + Nacos2.X Client

爲了徹底釋放 Nacos 2.0 的性能,還須要將施壓集羣的客戶端也升級到 2.0 以上版本。一樣將分 3 個批次進行替換,期間因爲 Provider 進行了重啓,服務端有出現實例的下跌再恢復屬於正常現象。隨着施壓集羣的升級,能夠發現 CPU 有了很是明顯的降低,最終達到穩定時,CPU 由最初的接近 100% ,下降到 20%,集羣穩定運行 14000 個實例。

 title= title= title=

壓測結果

如上所述,咱們可以獲得 2 核 CPU+4G 內存的三節點集羣在不一樣版本下的性能差別:

服務端版本 客戶端版本 壓力規模 集羣穩定性 CPU使用
Nacos1.X Nacos1.X 14000 徹底不穩定 100%
Nacos2.X(升級中) Nacos1.X 6000 有必定抖動 100%
Nacos2.X Nacos1.X 14000 有必定抖動 100%
Nacos2.X Nacos2.X 14000 穩定 20%

因而可知,Nacos 2.0 確實對性能有較大的提高,新用戶建議直接所有采用 Nacos 2.0,老用戶建議先升級 Server 端,而後在逐步升級客戶端釋放紅利。最後從整個壓測視角的監控,來直觀的感覺一下不一樣版本在不一樣階段的性能表現:

 title=

更多信息

 title=

點擊https://www.aliyun.com/product/aliware/mse,瞭解更多 MSE Nacos 2.0 相關信息。

本文內容由阿里雲實名註冊用戶自發貢獻,版權歸原做者全部,阿里雲開發者社區不擁有其著做權,亦不承擔相應法律責任。具體規則請查看《阿里雲開發者社區用戶服務協議》和《阿里雲開發者社區知識產權保護指引》。若是您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將馬上刪除涉嫌侵權內容。
相關文章
相關標籤/搜索