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