- 微服務(wù)從小白到專家:Spring Cloud和Kubernetes實(shí)戰(zhàn)
- 姚秋辰 張昕 卿睿
- 1025字
- 2021-10-29 12:24:39
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)系
- UNIX編程藝術(shù)
- Practical Data Analysis Cookbook
- Learning Cython Programming(Second Edition)
- Python機(jī)器學(xué)習(xí):數(shù)據(jù)分析與評(píng)分卡建模(微課版)
- C#程序設(shè)計(jì)(慕課版)
- Java 11 Cookbook
- 微信小程序開發(fā)解析
- Java項(xiàng)目實(shí)戰(zhàn)精編
- R Data Analysis Cookbook(Second Edition)
- Java Web開發(fā)詳解
- 速學(xué)Python:程序設(shè)計(jì)從入門到進(jìn)階
- Python 3.7從入門到精通(視頻教學(xué)版)
- TypeScript 2.x By Example
- C++程序設(shè)計(jì)教程(第2版)
- Learning Python Data Visualization