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




































