Nacos最全詳解(圖文全面總結)
Nacos
Nacos(Dynamic Naming and Configuration Service),是阿里開發的服務注冊與發現、配置管理、和服務管理平臺。
圖片
Nacos主要解決以下問題:
1.服務注冊與發現
服務注冊:允許服務實例向Nacos注冊中心注冊自身的信息,包括:服務名稱、IP地址、端口、健康檢查..........等。
服務發現:服務消費者可以通過Nacos獲取服務實例的信息,從而調用相應的服務。
2.動態配置管理
支持配置的動態管理,可以在應用運行時動態更新配置,而不需要重啟應用。
3.多環境管理
支持不同環境,比如:開發、測試、生產.......的配置管理。
4.服務元數據管理
Nacos的服務及其元數據管理功能,能幫助簡化微服務架構中的服務注冊、發現、配置管理、和健康檢查。
Nacos架構
Nacos架構,如下圖所示:
圖片
Nacos架構,主要會包含:服務注冊中心、服務提供方、服務消費方...等等實現。
1.服務注冊中心
服務注冊中心,存儲所有已注冊服務的實例、及其元數據。
工作流程,大致如下:
1)服務注冊
首先,服務提供方,將其實例注冊到服務注冊中心;
2)服務發現
其次,是服務發現,服務消費方通過查詢服務注冊中心,找到可用的服務實例。
3)健康檢查
服務注冊中心,可能會調用服務實例的健康檢查API,確保實例能夠處理請求。
2.服務
服務是指一組功能或操作,這些功能可以被不同的客戶端重用。
服務的主要目的是:通過跨進程的網絡調用來提供功能、或執行操作。
比如:
1)K8S服務(Kubernetes Service)
在Kubernetes環境中,Nacos可以與Kubernetes的服務發現機制集成,支持自動注冊和發現Kubernetes中的服務。
2)RPC服務
比如:支持基于gRPC、或Dubbo的RPC服務調用,這些是常見的高效分布式服務框架。
3)SpringCloud服務(Spring Cloud RESTful Service)
與Spring Cloud集成,支持基于RESTful的服務調用、和管理。
3.服務提供
服務提供方:主要就是服務提供方去實現具體的服務邏輯,并將其暴露給其他、應用或服務調用。
4.服務消費方
服務消費方是指發起對服務調用的應用方,服務消費者通過服務發現機制找到服務提供方,并調用其提供的功能。
5.服務元數據
服務元數據:是指描述服務的附加信息,包括:服務端點、標簽、版本號、權重、路由規則、安全策略.......等。
6.配置管理
配置管理:是指對系統中所有配置的編輯、存儲、分發、變更管理。
比如:
- 配置編輯:修改、和更新配置文件;
- 配置存儲:持久化存儲配置數據,確保數據的可靠性;
- 配置分發:將配置分發到相關的應用、或服務;
- 版本管理:管理配置的版本歷史,支持版本回滾;
- 配置變更:記錄配置變更歷史、和操作。
Nacos原理
Nacos工作原理,如下圖所示:
圖片
1.服務注冊與發現
首先,第一步:服務注冊。
服務實例在啟動時,通過Nacos Client,向Nacos Server發送注冊請求,包括:服務名稱、IP地址、端口、元數據........等。
Nacos Server,將服務實例信息存儲在服務注冊中心,并啟動健康檢查。
2.服務發現
服務消費者,通過Nacos Client向Nacos Server發送查詢請求,獲取指定服務的實例列表。
Nacos Server返回符合條件的服務實例列表,支持動態更新。
3.健康檢查
Nacos Server,定期調用服務實例的健康檢查API,檢查服務實例的健康狀態。
不健康的服務實例,會被從注冊表中剔除,以確保服務的可用性。
4.配置管理
配置文件,通過Nacos Console、或API創建。
并存儲在Nacos Server中,配置數據包括:數據ID、分組、標簽、配置內容.......等。
5.配置發布與動態刷新
更新配置后,用戶通過Nacos Console、或API發布配置,發布后的配置數據會更新在Nacos Server中。
應用程序通過Nacos Client訂閱配置變更,當配置發生變化時。
Nacos Server推送更新通知給客戶端,客戶端自動刷新配置。