官术网_书友最值得收藏!

6.2 Nacos的核心功能

Nacos不僅是注冊(cè)中心,而且是配置中心管理配置項(xiàng)。根據(jù)官方文檔的描述,目前最穩(wěn)定的功能是服務(wù)發(fā)現(xiàn)和配置管理,其架構(gòu)如圖6-1所示。

圖6-1 Nacos架構(gòu)圖

6.2.1 服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)與健康檢測(cè)

在任何分布式體系結(jié)構(gòu)中,都需要提供一種查找計(jì)算機(jī)物理地址的能力,此概念從分布式計(jì)算開始時(shí)就被提出,我們稱之為“服務(wù)發(fā)現(xiàn)”。

服務(wù)發(fā)現(xiàn)對(duì)微服務(wù)和基于云的應(yīng)用程序至關(guān)重要。首先,服務(wù)發(fā)現(xiàn)可以讓微服務(wù)擁有快速橫向擴(kuò)展的能力(即增減服務(wù)實(shí)例數(shù))。通過服務(wù)發(fā)現(xiàn),服務(wù)使用者不再需要知道服務(wù)的具體物理地址,因此開發(fā)者可以從可用服務(wù)池中添加或刪除新的服務(wù)實(shí)例,從而實(shí)現(xiàn)服務(wù)的擴(kuò)展和縮減,而且這種服務(wù)實(shí)例的變化對(duì)服務(wù)使用者而言是無感知的。其次,服務(wù)發(fā)現(xiàn)有助于提高應(yīng)用程序的彈性,當(dāng)某些微服務(wù)實(shí)例變得不正常或不可用時(shí),可以將其從內(nèi)部可用服務(wù)列表中刪除,以保證服務(wù)發(fā)現(xiàn)不會(huì)將消費(fèi)請(qǐng)求路由到不可用實(shí)例。

與Eureka類似,Nacos的服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)在服務(wù)提供者(Service Provider)啟動(dòng)的時(shí)候發(fā)起,將服務(wù)自身的信息注冊(cè)到服務(wù)注冊(cè)中心,在注冊(cè)成功以后,還需要使用心跳機(jī)制將服務(wù)提供者的健康狀況告知注冊(cè)中心。而服務(wù)消費(fèi)者(Service Consumer)通過服務(wù)名稱從服務(wù)注冊(cè)中心獲得服務(wù)提供者的地址和端口號(hào),從而使用該服務(wù)。Nacos服務(wù)注冊(cè)與服務(wù)發(fā)現(xiàn)的流程如圖6-2所示。

圖6-2 Nacos服務(wù)注冊(cè)與服務(wù)發(fā)現(xiàn)的流程

6.2.2 配置管理

在大規(guī)模的微服務(wù)系統(tǒng)中,將代碼與配置信息分離是一種常見的設(shè)計(jì),要實(shí)現(xiàn)這些需求,配置管理系統(tǒng)需要實(shí)現(xiàn)以下功能:

(1)當(dāng)微服務(wù)實(shí)例啟動(dòng)時(shí),可以調(diào)用配置服務(wù)來讀取配置信息,而配置管理的連接信息(通信憑據(jù)、服務(wù)地址等)將在服務(wù)啟動(dòng)時(shí)被加載。

(2)配置項(xiàng)將被保存在存儲(chǔ)庫中,我們可以選擇不同的存儲(chǔ)方案來保存配置數(shù)據(jù),如GitHub、關(guān)系型數(shù)據(jù)庫或key-value存儲(chǔ)。

(3)配置數(shù)據(jù)的管理與微服務(wù)的部署是相互獨(dú)立的,配置更改可以通過版本信息進(jìn)行標(biāo)記,還可以在不同環(huán)境進(jìn)行部署。

(4)在配置項(xiàng)被更改時(shí),必須通知使用該配置項(xiàng)的服務(wù)更改并刷新其數(shù)據(jù)副本。

Nacos的配置管理功能正是基于以上原則構(gòu)建的,Nacos支持環(huán)境隔離,也支持配置項(xiàng)的熱更新、配置信息的監(jiān)聽等功能。此外,Nacos還提供了一個(gè)簡(jiǎn)單易用的管理界面,用于管理所有的服務(wù)和配置。

為了區(qū)分不同環(huán)境的不同配置項(xiàng),Nacos定義了Name Space、DataID和Group來定位某一具體配置項(xiàng)。Name Space表示配置項(xiàng)所屬的環(huán)境,Group則是一組配置項(xiàng)的集合,如果在發(fā)布某項(xiàng)配置時(shí)未指定Group,則默認(rèn)使用DEFAULT_GROUP作為分組名,DataID可以理解為一個(gè)配置文件,所有的配置項(xiàng)都?xì)w屬在DataID下,Name Space和Group的關(guān)系如圖6-3所示。

圖6-3 Name Space和Group的關(guān)系

主站蜘蛛池模板: 通化县| 古交市| 榆中县| 石林| 无为县| 城固县| 伊春市| 博白县| 鄂伦春自治旗| 铜陵市| 东兴市| 昭觉县| 治多县| 宁城县| 固阳县| 甘孜| 涟水县| 梅州市| 布尔津县| 武胜县| 房产| 盐池县| 芒康县| 栾城县| 武穴市| 丰顺县| 通州市| 石渠县| 海门市| 延安市| 汉阴县| 富宁县| 花垣县| 中西区| 德钦县| 宜君县| 蒲江县| 呼玛县| 比如县| 凭祥市| 栖霞市|