1.什麼是Nacos
Nacos 致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。 是Spring Cloud A 中的服務註冊發現組件,類似於Consul、Eureka,同時它又提供了分佈式配置中心的功能,這點和Consul的config類似,支持熱加載。
2.Nacos原理
Nacos註冊中心分爲server與client,server採用Java編寫,爲client提供註冊發現服務與配置服務。而client可以用多語言實現,client與微服務嵌套在一起,nacos提供sdk和openApi,如果沒有sdk也可以根據openApi手動寫服務註冊與發現和配置拉取的邏輯
服務領域模型
Nacos服務領域模型主要分爲命名空間、集羣、服務。在下圖的分級存儲模型可以看到,在服務級別,保存了健康檢查開關、元數據、路由機制、保護閾值等設置,而集羣保存了健康檢查模式、元數據、同步機制等數據,實例保存了該實例的ip、端口、權重、健康檢查狀態、下線狀態、元數據、響應時間。
3.註冊中心原理
服務註冊方法:以Java nacos client v1.0.1 爲例子,服務註冊的策略的是每5秒向nacos server發送一次心跳,心跳帶上了服務名,服務ip,服務端口等信息。同時 nacos server也會向client 主動發起健康檢查,支持tcp/http檢查。如果15秒內無心跳且健康檢查失敗則認爲實例不健康,如果30秒內健康檢查失敗則剔除實例。
4.配置中心原理
5.Nacos 的關鍵特性包括:
-
服務發現和服務健康監測
Nacos 支持基於 DNS 和基於 RPC 的服務發現。服務提供者使用
原生SDK、OpenAPI、或一個獨立的Agent TODO註冊 Service 後,服務消費者可以使用DNS TODO
或HTTP&API查找和發現服務。Nacos 提供對服務的實時的健康檢查,阻止向不健康的主機或服務實例發送請求。Nacos 支持傳輸層 (PING 或 TCP)和應用層
(如 HTTP、MySQL、用戶自定義)的健康檢查。 對於複雜的雲環境和網絡拓撲環境中(如 VPC、邊緣網絡等)服務的健康檢查,Nacos
提供了 agent 上報模式和服務端主動檢測2種健康檢查模式。Nacos
還提供了統一的健康檢查儀表盤,幫助您根據健康狀態管理服務的可用性及流量。 -
動態配置服務
動態配置服務可以讓您以中心化、外部化和動態化的方式管理所有環境的應用配置和服務配置。動態配置消除了配置變更時重新部署應用和服務的需要,讓配置管理變得更加高效和敏捷。
配置中心化管理讓實現無狀態服務變得更簡單,讓服務按需彈性擴展變得更容易。
Nacos 提供了一個簡潔易用的UI (控制檯樣例 Demo) 幫助您管理所有的服務和應用的配置。Nacos 還提供包括配置版本跟蹤、金絲雀發佈、一鍵回滾配置以及客戶端配置更新狀態跟蹤在內的一系列開箱即用的配置管理特性,幫助您更安全地在生產環境中管理配置變更和降低配置變更帶來的風險。
-
動態 DNS 服務 動態 DNS
服務支持權重路由,讓您更容易地實現中間層負載均衡、更靈活的路由策略、流量控制以及數據中心內網的簡單DNS解析服務。動態DNS服務還能讓您更容易地實現以
DNS 協議爲基礎的服務發現,以幫助您消除耦合到廠商私有服務發現 API 上的風險。Nacos 提供了一些簡單的 DNS APIs TODO 幫助您管理服務的關聯域名和可用的 IP:PORT 列表.
-
服務及其元數據管理 Nacos
能讓您從微服務平臺建設的視角管理數據中心的所有服務及元數據,包括管理服務的描述、生命週期、服務的靜態依賴分析、服務的健康狀態、服務的流量管理、路由及安全策略、服務的
SLA 以及最首要的 metrics 統計數據。
更多的特性列表 …
6.Spring Cloud Nacos優缺點
優點: 1)開箱即用,適用於dubbo,spring cloud
2)AP模型,數據最終一致性
3)註冊中心,配置中心二合一,提供控制檯管理
4)純國產,久經雙十一考驗
缺點: 1)剛剛開源不久,社區熱度不夠,依然存在bug
2)0.5.0 註冊服務無鑑權認證機制,存在風險