3 Nacos服務(wù)發(fā)現(xiàn)基礎(chǔ)應(yīng)用
3.1 服務(wù)發(fā)現(xiàn)數(shù)據(jù)模型
Nacos在經(jīng)過阿里內(nèi)部多年生產(chǎn)經(jīng)驗后提煉出的數(shù)據(jù)模型误算,則是一種服務(wù)-集群-實例的三層模型蓖救,這樣基本可以滿足服務(wù)在所有場景下的數(shù)據(jù)存儲和管理箫攀。
命名空間(Namespace)
用于進行租戶粒度的配置隔離昔搂,命名空間不僅適用于nacos的配置管理竹观,同樣適用于服務(wù)發(fā)現(xiàn)拍嵌。Namespace 的常用場景之一是不同環(huán)境的配置的區(qū)分隔離,例如開發(fā)測試環(huán)境和生產(chǎn)環(huán)境的資源(如配置循诉、服務(wù))隔離等横辆。
服務(wù)
提供給客戶端的軟件功能,通過預(yù)定義接口網(wǎng)絡(luò)訪問。
服務(wù)名
服務(wù)提供的標識狈蚤,通過該標識可以唯一確定其指代的服務(wù)困肩。
實例
提供一個或多個服務(wù)的具有可訪問網(wǎng)絡(luò)地址(IP:Port)的進程,啟動一個服務(wù)脆侮,就產(chǎn)生了一個服務(wù)實例锌畸。
元信息
Nacos數(shù)據(jù)(如配置和服務(wù))描述信息,如服務(wù)版本靖避、權(quán)重潭枣、容災(zāi)策略、負載均衡策略幻捏、鑒權(quán)配置盆犁、各種自定義標簽 (label),從作用范圍來看篡九,分為服務(wù)級別的元信息谐岁、集群的元信息及實例的元信息。
集群
服務(wù)實例的集合榛臼,服務(wù)實例組成一個默認集群, 集群可以被進一步按需求劃分伊佃,劃分的單位可以是虛擬集群,相同集群下的實例才能相互感知沛善。
應(yīng)用通過Namespace航揉、Service、Cluster(DEFAULT)的配置路呜,描述了該服務(wù)向哪個環(huán)境(如開發(fā)環(huán)境)的哪個集群注冊實例迷捧。
spring:
application:
name: transaction‐service
cloud:
nacos:
discovery:
server‐addr: 127.0.0.1:7283 # 注冊中心地址
namespace: a1f8e863‐3117‐48c4‐9dd3‐e9ddc2af90a8 # 開發(fā)環(huán)境
cluster‐name: DEFAULT # 默認集群,可不填寫
Note: 集群作為實例的隔離胀葱,相同集群的實例才能相互感知漠秋。
Note: namespace、cluster-name若不填寫都將采取默認值抵屿,namespace的默認是public命名空間庆锦,cluster-name的默認值為DEFAULT集群。
3.2 服務(wù)管理
開發(fā)者或者運維人員往往需要在服務(wù)注冊后轧葛,通過友好的界面來查看服務(wù)的注冊情況搂抒,包括當前系統(tǒng)注冊的所有服務(wù)和每個服務(wù)的詳情。并在有權(quán)限控制的情況下尿扯,進行服務(wù)的一些配置的編輯操作求晶。Nacos在目前最新版本開放的控制臺的服務(wù)發(fā)現(xiàn)部分,主要就是提供用戶一個基本的運維頁面衷笋,能夠查看芳杏、編輯當前注冊的服務(wù),這些功能集中在Nacos控制臺的服務(wù)管理一級菜單內(nèi)。
3.2.1 服務(wù)列表管理
服務(wù)列表幫助用戶以統(tǒng)一的視圖管理其所有的微服務(wù)以及服務(wù)健康狀態(tài)爵赵。整體界面布局是左上角有服務(wù)的搜索框和搜索按鈕吝秕,頁面中央是服務(wù)列表的展示。服務(wù)列表主要展示服務(wù)名空幻、集群數(shù)目烁峭、實例數(shù)目、健康實例數(shù)目和詳情按鈕五個欄目秕铛。
在服務(wù)列表頁面點擊詳情约郁,可以看到服務(wù)的詳情∪缤保可以查看服務(wù)棍现、集群和實例的基本信息。
3.2.2 服務(wù)流量權(quán)重支持及流量保護
Nacos 為用戶提供了流量權(quán)重控制的能力镜遣,同時開放了服務(wù)流量的閾值保護己肮,以幫助用戶更好的保護服務(wù)服務(wù)提供者集群不被意外打垮。如下圖所以悲关,可以點擊實例的編輯按鈕谎僻,修改實例的權(quán)重。如果想增加實例的流量寓辱,可以將權(quán)重調(diào)大艘绍,如果不想實例接收流量,則可以將權(quán)重設(shè)為0秫筏。
3.2.3 服務(wù)元數(shù)據(jù)管理
Nacos提供多個維度的服務(wù)元數(shù)據(jù)的暴露诱鞠,幫助用戶存儲自定義的信息。這些信息都是以K-V的數(shù)據(jù)結(jié)構(gòu)存儲这敬,在控制臺上航夺,會以k1=v1,k2=v2這樣的格式展示。類似的崔涂,編輯元數(shù)據(jù)可以通過相同的格式進行阳掐。例如服務(wù)的元數(shù)據(jù)編輯,首先點擊服務(wù)詳情頁右上角的“編輯服務(wù)”按鈕冷蚂,然后在元數(shù)據(jù)輸入框輸入:version=1.0缭保。
點擊確認,就可以在服務(wù)詳情頁面蝙茶,看到服務(wù)的元數(shù)據(jù)已經(jīng)更新了艺骂。
3.2.4 服務(wù)優(yōu)雅上下線
Nacos還提供服務(wù)實例的上下線操作,在服務(wù)詳情頁面隆夯,可以點擊實例的“上線”或者“下線”按鈕彻亲,被下線的實例孕锄,將不會包含在健康的實例列表里。
上下線測試:
(1)分別啟動快速上手中的quickstart-consumer與quickstart-provider工程苞尝,更改quickstart-provide中的啟動端口,再次啟動quickstart-provider宦芦,讓quickstart-provider服務(wù)擁有兩個實例宙址。
(2)多次訪問http://127.0.0.1:56020/service ,讓consumer調(diào)用provider時觸發(fā)負載均衡调卑。
(3)觀察provider的2個實例控制臺抡砂,可發(fā)現(xiàn)實例調(diào)用被均勻負載。
(4)在provider的服務(wù)詳情頁面恬涧,讓某實例下線注益。
(5)多次訪問http://127.0.0.1:56020/service ,觀察控制臺溯捆,發(fā)現(xiàn)下線的實例已不再接收流量丑搔。
(6)在provider的服務(wù)詳情頁面,讓該實例恢復(fù)上線狀態(tài)提揍。
(7)多次訪問http://127.0.0.1:56020/service 啤月,觀察控制臺,發(fā)現(xiàn)恢復(fù)上線的實例已恢復(fù)流量訪問劳跃。