先了解下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等阿里系的產品解決方案的微服務平臺。