簡介:Nacos 2.0 經過升級通訊協議和框架、數據模型的方式將性能提高了約 10 倍,解決繼 Nacos 1.0 發佈逐步暴露的性能問題。本文經過壓測 Nacos 1.0,Nacos 1.0 升級 Nacos 2.0 過程當中,Nacos 2.0 進行全面性能對比,直觀的展現 Nacos 2.0 所帶來的性能提高。
做者|席翁segmentfault
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 提供的一鍵升級功能,客戶端的升級會使用分批次輪流重啓的方式進行。 性能
Nacos1.X Server + Nacos1.X Client測試
首先啓動第一批施壓集羣,對 MSE Nacos1.2.1 進行施壓,在 6000 個 Providers 的壓力下,集羣穩定時 CPU 大約 25% ,可以穩定保持 6000 實例。阿里雲
隨後啓動第二批施壓集羣,增長 4000 個 Provider ,合集 10000 個 Provider 。此時集羣峯值 CPU 已經達到 60% ,穩定運行時大約在 45% 左右,集羣可以穩定運行。 url
在前兩批的壓力下,集羣沒有出現穩定性問題,因此 Dubbo 的調用保持正常,沒有錯誤發生。spa
當第三批施壓集羣啓動以後,壓力總計 14000 個 Provider 。此時集羣先是短暫的註冊到 13000 個實例,以後很快出現實例數下跌,CPU 跑滿的問題。而且縮小時間範圍能夠看到,下跌後的實例仍然在小範圍抖動。日誌
同時 Dubbo 的調用出現錯誤,從 Consumer 的日誌能夠看出,是因爲服務端沒法支撐這個級別的壓力,致使 Dubbo Provider 被摘除,因此調用的時候出現了 No provider 的錯誤。
Nacos2.X Server + Nacos1.X Client
因爲服務端升級期間,會進行實例的雙寫操做,所以在升級過程當中服務端存儲的實例數會是實際實例值的兩倍。根據上述測試結果,須要先將實例數回滾回第一批 6000 實例以後,或是升級配置擴容機器以後再嘗試升級。本文使用回滾壓力的方式,先中止後啓動的施壓集羣。讓集羣恢復正常後再執行升級。
從監控圖中能夠看出,在中止後兩批壓力後,集羣很快就恢復到了正常,運行穩定,Dubbo 調用也恢復正常。以後使用 MSE 的升級功能,進行升級。升級過程當中因爲雙寫的性能損耗,致使 CPU 有較大的抖動;並且由於雙寫致使的實例數翻倍,實際上至關於 12000 實例的極限壓力,服務端仍然有必定的抖動,所以致使了些許 Dubbo 的錯誤。如果在非極限壓力下升級,將不會有此影響。
隨着服務端升級完成中止雙寫,消除了雙寫帶來的性能損耗,CPU 使用下降並趨於穩定,同時實例數也再也不抖動,Dubbo 調用徹底恢復;如同 1.X 服務端同樣,分兩個批次啓動施壓集羣,對比兩個版本間在相同壓力下的性能表現。
因爲客戶端依舊使用的是 1.X 的客戶端,服務端的使用水位依然很是高,在所有壓力啓動後,CPU 幾乎達到 100% ;雖然沒有像 1.X 服務端同樣,出現大規模實例下跌,可是運行一段時間後依舊有少許的實例抖動,說明僅升級 Nacos 服務端到 2.0 版本能有必定的改善,可是沒有完全解決性能問題。
Nacos2.X Server + Nacos2.X Client
爲了徹底釋放 Nacos 2.0 的性能,還須要將施壓集羣的客戶端也升級到 2.0 以上版本。一樣將分 3 個批次進行替換,期間因爲 Provider 進行了重啓,服務端有出現實例的下跌再恢復屬於正常現象。隨着施壓集羣的升級,能夠發現 CPU 有了很是明顯的降低,最終達到穩定時,CPU 由最初的接近 100% ,下降到 20%,集羣穩定運行 14000 個實例。
如上所述,咱們可以獲得 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 端,而後在逐步升級客戶端釋放紅利。最後從整個壓測視角的監控,來直觀的感覺一下不一樣版本在不一樣階段的性能表現:
點擊https://www.aliyun.com/product/aliware/mse,瞭解更多 MSE Nacos 2.0 相關信息。
本文內容由阿里雲實名註冊用戶自發貢獻,版權歸原做者全部,阿里雲開發者社區不擁有其著做權,亦不承擔相應法律責任。具體規則請查看《阿里雲開發者社區用戶服務協議》和《阿里雲開發者社區知識產權保護指引》。若是您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將馬上刪除涉嫌侵權內容。