Nacos 2.0.0正式發佈,Nacos2.0及其生態,Nacos2.0在matecloud項目中的應用

先了解下Nacos

Nacos 致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。git

Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平臺。 Nacos 是構建以「服務」爲中心的現代應用架構 (例如微服務範式、雲原生範式) 的服務基礎設施。緩存

1.x.x版本(最新1.4.1)存在的問題

  • 心跳數量多,致使 TPS 居高不下

經過心跳續約,當服務規模上升時,特別是相似 Dubbo 的接口級服務較多時,心跳及配置元數據的輪詢數量衆多,致使集羣 TPS 很高,系統資源高度空耗。網絡

  • 經過心跳續約感知服務變化,時延長

心跳續約須要達到超時時間纔會移除並通知訂閱者,默認爲 15 s,時延較長,時效性差。若改短超時時間,當網絡抖動時,會頻繁觸發變動推送,對客戶端服務端都有更大損耗。架構

  • UDP 推送不可靠,致使 QPS 居高不下

因爲 UDP 不可靠,所以客戶端測須要每隔一段時間進行對帳查詢,保證客戶端緩存的服務列表的狀態正確,當訂閱客戶端規模上升時,集羣 QPS 很高,但大多數服務列表其實不會頻繁改變,形成無效查詢,從而存在資源空耗。微服務

  • 基於 HTTP 短鏈接模型,TIME_WAIT 狀態鏈接過多

HTTP 短鏈接模型,每次客戶端請求都會建立和銷燬 TCP 連接,TCP 協議銷燬的連接狀態是 WAIT_TIME,徹底釋放還須要必定時間,當 TPS 和 QPS 較高時,服務端和客戶端可能有大量的 WAIT_TIME 狀態連接,從而會致使 connect time out 錯誤或者 Cannot assign requested address 的問題。性能

  • 配置模塊的 30 秒長輪詢引發的頻繁 GC

配置模塊使用 HTTP 短鏈接阻塞模型來模擬長鏈接通訊,可是因爲並不是真實的長鏈接模型,所以每 30 秒須要進行一次請求和數據的上下文切換,每一次切換都有引發形成一次內存浪費,從而致使服務端頻繁 GC。url

Nacos 2.0.0 架構的優缺點

最大的變化,當屬於性能的大幅度提高,目前集成到MateCloud項目中以後,連各模塊的啓動和關閉的速度都有大幅度的變化。歡迎體驗者嚐鮮。 具體特性參見:Nacos 2.0.0新產品發佈.net

優勢:

一、長鏈接緩解TIME_WAIT狀態鏈接 二、流式推送更可靠,吞吐更高 三、經過TCP鏈接快速感知服務變化 四、客戶端再也不須要大量心跳 五、真實的長鏈接,解決配置模塊GC問題3d

缺點:

一、 結構複雜,須要管理鏈接狀態 二、 數據無狀態  有狀態 三、可觀測性下降 更可靠 數量少 高吞吐 空耗少xml

產品樣例

集成代碼樣例:pom文件參考

MateCloud是集成了Nacos、Sentinel、Jetcache等阿里系的產品解決方案的微服務平臺。

在這裏插入圖片描述 在這裏插入圖片描述

相關文章
相關標籤/搜索