Nacos一 :基本介紹

1、什麼是Nacos

Nacos 是阿里巴巴推出來的一個新開源項目,這是一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平臺。

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

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

官網:https://nacos.io

官方文檔:https://nacos.io/zh-cn/docs/quick-start.html

2、關鍵特性 

  • 服務發現和服務健康監測

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 統計數據。

…………
3、Nacos 全景圖

 

如 Nacos 全景圖所示,Nacos 無縫支持一些主流的開源生態,例如

4、基本架構及概念

  • 服務 (Service)

服務是指一個或一組軟件功能(例如特定信息的檢索或一組操作的執行),其目的是不同的客戶端可以爲不同的目的重用(例如通過跨進程的網絡調用)。Nacos 支持主流的服務生態,如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service.

  • 服務註冊中心 (Service Registry)

服務註冊中心,它是服務,其實例及元數據的數據庫。服務實例在啓動時註冊到服務註冊表,並在關閉時註銷。服務和路由器的客戶端查詢服務註冊表以查找服務的可用實例。服務註冊中心可能會調用服務實例的健康檢查 API 來驗證它是否能夠處理請求。

  • 服務元數據 (Service Metadata)

服務元數據是指包括服務端點(endpoints)、服務標籤、服務版本號、服務實例權重、路由規則、安全策略等描述服務的數據

  • 服務提供方 (Service Provider)

是指提供可複用和可調用服務的應用方

  • 服務消費方 (Service Consumer)

是指會發起對某個服務調用的應用方

  • 配置 (Configuration)

在系統開發過程中通常會將一些需要變更的參數、變量等從代碼中分離出來獨立管理,以獨立的配置文件的形式存在。目的是讓靜態的系統工件或者交付物(如 WAR,JAR 包等)更好地和實際的物理運行環境進行適配。配置管理一般包含在系統部署的過程中,由系統管理員或者運維人員完成這個步驟。配置變更是調整系統運行時的行爲的有效手段之一。

  • 配置管理 (Configuration Management)

在數據中心中,系統中所有配置的編輯、存儲、分發、變更管理、歷史版本管理、變更審計等所有與配置相關的活動統稱爲配置管理。

  • 名字服務 (Naming Service)

提供分佈式系統中所有對象(Object)、實體(Entity)的「名字」到關聯的元數據之間的映射管理服務,例如 ServiceName -> Endpoints Info, Distributed Lock Name -> Lock Owner/Status Info, DNS Domain Name -> IP List, 服務發現和 DNS 就是名字服務的2大場景。

  • 配置服務 (Configuration Service)

在服務或者應用運行過程中,提供動態配置或者元數據以及配置管理的服務提供者。

5、構建物、部署及啓動模式 

 

  • 2種交付工件

Nacos 支持標準 Docker 鏡像(TODO: 0.2版本開始支持)及 zip(tar.gz)壓縮包的構建物。

  • 啓動模式

Nacos 支持將註冊中心(Service Registry)與配置中心(Config Center) 在一個進程合併部署或者將2者分離部署的兩種模式。

  • 免費的公有云服務模式

除了您自己部署和啓動 Nacos 服務之外,在雲計算時代,Nacos 也支持公有云模式,在阿里雲公有云的商業產品(如ACM, EDAS) 中會提供 Nacos 的免費的公有云服務。我們也歡迎和支持其他的公有云提供商提供 Nacos 的公有云服務。
 

6.Nacos 存在的問題


1. 不能支持多種類型的數據庫,如:Oracle、PostgreSQL、DB2等 
如果啓動多個默認配置下的Nacos節點,數據存儲是存在一致性問題的。

爲了解決這個問題,Nacos採用了集中式存儲的方式來支持集羣化部署,目前只支持MySQL的存儲。

2. 不支持配置加密
服務配置信息,我們通常需要敏感配置加密存儲和傳輸,保證數據安全

3.  不支持gRPC和Thrift服務發現
Thrift、gRPC是RPC中的重要實現

4. 不支持對接Kubernetes中的configMap
暫時不能和Kubernetes的配置進行打通

5. 不支持配置發佈審批 配置發佈管控體系,減少人爲失誤引起的故障