SpringCloud?Nacos服務(wù)分級存儲模型詳解
Nacos 服務(wù)分級存儲模型是 Nacos 存儲服務(wù)注冊信息和配置信息的核心模型之一。它通過將服務(wù)和配置信息按照不同級別進(jìn)行存儲,實現(xiàn)了信息的靈活管理和快速檢索,為微服務(wù)架構(gòu)下的服務(wù)發(fā)現(xiàn)和配置管理提供了高效、可靠的支持。本文將對 Nacos 服務(wù)分級存儲模型進(jìn)行深入解析。
一、服務(wù)分級模型
1、服務(wù)分級模型介紹
服務(wù)分級模型是一種將服務(wù)層次化組織的架構(gòu)設(shè)計,通常用于大型分布式系統(tǒng)或微服務(wù)架構(gòu)中。這種模型的目標(biāo)是通過將服務(wù)劃分為不同的層級,實現(xiàn)更靈 活、可維護(hù)和可擴(kuò)展的系統(tǒng)架構(gòu)。
服務(wù)分級模型包括以下幾個層級:
特性 | 特性描述 |
全局級別 | 在這個層級,通常存儲全局配置和共享信息。全局級別的服務(wù)對整個系統(tǒng)可見,負(fù)責(zé)處理全局性的任務(wù)和配置,例如全局配置管理、認(rèn)證、授權(quán)等。 |
集群級別 | 集群級別的服務(wù)組織在物理或邏輯上相鄰的節(jié)點上,負(fù)責(zé)處理集群內(nèi)的任務(wù)和協(xié)調(diào)。這一層級的服務(wù)通常處理一組相關(guān)聯(lián)的節(jié)點,提供集群級別的服務(wù)如負(fù)載均衡、故障轉(zhuǎn)移、數(shù)據(jù)同步等。 |
服務(wù)級別 | 在服務(wù)級別,服務(wù)被組織成邏輯單元,每個服務(wù)負(fù)責(zé)實現(xiàn)特定的業(yè)務(wù)功能。服務(wù)級別的服務(wù)通常是整個系統(tǒng)的核心,提供具體的業(yè)務(wù)邏輯,例如用戶管理、訂單處理等。 |
實例級別 | 實例級別是最底層的層級,代表著服務(wù)的具體實例。在微服務(wù)架構(gòu)中,服務(wù)可能會有多個實例運行在不同的節(jié)點上,實現(xiàn)負(fù)載均衡和高可用性。 |
通過將服務(wù)劃分為這些層級,服務(wù)分級模型使得系統(tǒng)的不同部分能夠獨立演化、擴(kuò)展和維護(hù)。這種分級結(jié)構(gòu)使得系統(tǒng)更具彈性,能夠更好地適應(yīng)不同的需求和變化。
下面是服務(wù)分級模型的圖解:
圖中我們可以形象的看到, 服務(wù)分級模型包括以下幾個層級:
- 一級是全局級別(圖中省略)
- 二級是服務(wù)
- 三級是集群
- 四級是實例(具體到某臺部署了某服務(wù)的服務(wù)器)
2、服務(wù)分級模型作用
那么,為什么需要這么設(shè)計服務(wù)分級呢?
我們拿區(qū)域容災(zāi)集群舉個例子:
如果我們所有的實例都放在一個機(jī)房,那么一旦機(jī)房這邊出現(xiàn)了不可抗力的破壞,我們的服務(wù)也就沒有辦法繼續(xù)提供了,會導(dǎo)致系統(tǒng)里該服務(wù)涉及的功能不可用,為了避免這種問題,我們需要把實例分散布局,就如同一句諺語 "不能把雞蛋放在一個籃子里"。
區(qū)域容災(zāi)集群示意圖:
在圖中我們可以看到,服務(wù)下面設(shè)置了三個集群,分別位于杭州、上海、南京。
這樣如果杭州集群內(nèi)的實例A故障了,可以繼續(xù)調(diào)用實例B。
即使杭州的集群的實例全都出現(xiàn)故障,上海和南京的實例也可以替補上來,系統(tǒng)可用性大大增加,這個過程也叫服務(wù)的跨集群調(diào)用。
3、服務(wù)跨集群調(diào)用
如果一個實例不可用了,我們會優(yōu)先去調(diào)用同集群下的另一個實例。但如果一個集群的實例都不可調(diào)用了,我們則會跨集群進(jìn)行調(diào)用。
跨集群服務(wù)調(diào)用示意圖:
可以看到杭州集群下面的實例A和實例B都無法正常使用,于是系統(tǒng)跨集群調(diào)用到了上海集群的實例C,使得系統(tǒng)可用性大大增加,極大程度避免了服務(wù)宕機(jī)的風(fēng)險。
4、 服務(wù)分級模型特性
服務(wù)分級模型主要具有以下特性:
特性 | 特性描述 |
層級結(jié)構(gòu) | 服務(wù)和配置信息按照層級結(jié)構(gòu)進(jìn)行存儲,包括全局級別 、集群級別、服務(wù)級別和實例級別等,每個層級存儲的信息具有不同的作用范圍和生命周期。 |
繼承關(guān)系 | Nacos的服務(wù)分級存儲模型支持繼承關(guān)系,即更高層級的信息可以被子層級繼承和覆蓋,實現(xiàn)了信息的統(tǒng)一管理和分級繼承。 |
動態(tài)更新 | Nacos支持動態(tài)更新服務(wù)和配置信息,當(dāng)信息發(fā)生變化時,可以及時更新到對應(yīng)的層級,保證了信息的實時性和準(zhǔn)確性。 |
靈活檢索 | 通過靈活的查詢接口,可以根據(jù)不同層級和條件快速檢索到所需的服務(wù)和配置信息,滿足了微服務(wù)架構(gòu)下信息管理的需求。 |
這些特性共同構(gòu)成了服務(wù)分級模型的優(yōu)勢,使得其在微服務(wù)架構(gòu)下得到廣泛應(yīng)用和推廣。
二、Nacos實現(xiàn)服務(wù)分級模型
1、安裝配置Nacos
首先,我們需要從 Nacos 的官方網(wǎng)站下載發(fā)布版本。下載地址:Releases · alibaba/nacos · GitHub
選擇合適的版本并下載,解壓縮得到 Nacos 的安裝包。
在解壓后的 Nacos 目錄中,找到 bin 文件夾。
用寫字板編輯 startup.cmd,將 set MODE= "cluster" 修改為:
set MODE=“standalone”
這將在啟動 Nacos Server 時,默認(rèn)使用 standalone 模式運行。
修改完成后,切換 cmd 到 bin 目錄下啟動 Nacos Server:
C:\Users\Damon.Liu>d: D:\>cd D:\Tools\Nacos\bin D:\Tools\Nacos\bin>startup.cmd -m standalone
這里提醒我需要配一個 java8以上 的 JAVA_HOME 環(huán)境變量。
簡單配一下:
再次嘗試啟動 Nacos,這次成功了!
2、項目引入Nacos
首先,創(chuàng)建一個帶有生產(chǎn)者和消費者的SpringCloud微服務(wù)項目:
這里就不重頭帶大家新建了,可以直接看我這篇文章:SpringCloud-創(chuàng)建多模塊項目
接著對我們 SpringCloud 項目下 每個子項目 引入 Nacos,下面拿 springcloud-provider 這個子項目進(jìn)行舉例,其他子項目改造方法相同:
① pom.xml增加依賴
pom.xml 里增加 Nacos 自動發(fā)現(xiàn)的依賴:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2021.0.5.0</version> </dependency>
② 啟動類添加自動發(fā)現(xiàn)注解
啟動類增加自動服務(wù)發(fā)現(xiàn)的注解 @EnableDiscoveryClient:
package com.example.springcloudprovider; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @EnableDiscoveryClient @SpringBootApplication public class NacosProviderApplication { public static void main(String[] args) { SpringApplication.run(NacosProviderApplication.class, args); } }
③ 修改 application.yml 配置
修改 application.yml,配置內(nèi)容修改為:
server: #程序端口號 port: 8081 spring: application: #應(yīng)用名稱 name: springcloud-provider cloud: nacos: discovery: #nacos地址 server-addr: 127.0.0.1:8848 config: import-check: enabled: false management: endpoints: web: exposure: #公開所有端點 include: '*'
這樣 Nacos 服務(wù)就可以自動發(fā)現(xiàn)這個子項目的服務(wù)了。
訪問我們的 Nacos 服務(wù)地址:http://localhost:8848/nacos,可以看到控制臺的查看已注冊服務(wù)。
通過以上步驟,我們成功將 springcloud-provider 服務(wù)注冊到了 Nacos 服務(wù)中心。
3、配置Nacos集群屬性并啟動
修改每個服務(wù)提供者的 application.yml 配置,nacos 相關(guān)配置增加:
spring: cloud: nacos: discovery: cluster-name: NJ
springcloud-provider 修改后的 application.yml 配置:
server: port: 8081 spring: application: #應(yīng)用名稱 name: springcloud-provider cloud: nacos: discovery: #nacos地址 server-addr: 127.0.0.1:8848 cluster-name: SH config: import-check: enabled: false management: endpoints: web: exposure: #公開所有端點 include: '*'
啟動 springcloud-provider :
Nacos 里可以看到我們啟動的這個實例。
點擊詳情,可以看到實例所在的集群在 SH:
我們在開啟一個不同集群的實例。
復(fù)制一個配置:
命名為 xxxx-NJ,表示南京地區(qū)集群。
修改 application.yml 配置,集群名為 NJ,端口號為另一端口:
啟動該項目,啟動成功。
回到 Nacos 網(wǎng)站 ,可以看到明細(xì)里多了一個集群實例:
成功實現(xiàn)基于 Nacos 的服務(wù)分級模型。
三、Nacos的豐富功能
Nacos(Namespace Aware Clustered Object Storage)作為一個強(qiáng)大的服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺,提供了許多豐富的功能。
功能 | 詳述 |
服務(wù)注冊 | Nacos 作為服務(wù)注冊中心,支持服務(wù)的注冊與發(fā)現(xiàn)。通過 Nacos,微服務(wù)應(yīng)用可以方便地注冊自身服務(wù),同時通過 Nacos 進(jìn)行服務(wù)的發(fā)現(xiàn),以實現(xiàn)微服務(wù)之間的通信。 |
服務(wù)發(fā)現(xiàn) | 服務(wù)消費者通過 Nacos 注冊中心發(fā)現(xiàn)并調(diào)用其他服務(wù)。 |
配置管理 | Nacos作為配置中心,支持動態(tài)配置管理,實時更新應(yīng)用的配置信息。通過 Nacos 的配置中心,應(yīng)用可以動態(tài)讀取配置信息,實現(xiàn)配置的集中管理。Nacos支持配置的動態(tài)監(jiān)聽,當(dāng)配置發(fā)生變化時,應(yīng)用可以立即感知并更新。 |
命名空間 和分組 | acos支持多命名空間和分組,幫助用戶更好地管理和隔離不同環(huán)境下的服務(wù)和配置。 健康檢查 Nacos提供了健康檢查機(jī)制,可實時監(jiān)測服務(wù)的運行狀態(tài),確保服務(wù)的可用性。 |
集群和 多數(shù)據(jù)中心 | Nacos支持橫向擴(kuò)展,可以構(gòu)建成多節(jié)點的集群,支持多數(shù)據(jù)中心的部署,提供高可用和容錯能力。 |
配置共享 和保護(hù) | Nacos允許配置共享,支持配置的版本管理和回滾。同時,Nacos提供配置的保護(hù)機(jī)制,防止配置被誤操作刪除。 |
插件擴(kuò)展 | Nacos提供了豐富的插件機(jī)制,可以通過插件擴(kuò)展實現(xiàn)更多自定義功能,如自定義路由、自定義負(fù)載均衡策略等。 |
Nacos 的功能豐富多樣,涵蓋了服務(wù)注冊與發(fā)現(xiàn)、配置管理、健康檢查等多個方面。通過學(xué)習(xí) Nacos 的這些核心功能,可以更好地利用 Nacos 構(gòu)建和管理微服務(wù)架構(gòu),提升應(yīng)用的可用性和靈活性。希望這一部分的詳解能夠幫助你更深入地理解和使用 Nacos。
四、結(jié)語
Nacos服務(wù)分級存儲模型作為Nacos的核心設(shè)計之一,為微服務(wù)架構(gòu)下的服務(wù)發(fā)現(xiàn)和配置管理提供了強(qiáng)大支持。通過層級結(jié)構(gòu)、繼承關(guān)系和動態(tài)更新等特性,實現(xiàn)了服務(wù)和配置信息的高效管理和快速檢索,為微服務(wù)架構(gòu)下的應(yīng)用開發(fā)和運維提供了可靠、靈活的解決方案。
到此這篇關(guān)于SpringCloud Nacos服務(wù)分級存儲模型詳解的文章就介紹到這了,更多相關(guān)SpringCloud Nacos分級存儲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
AJAX?SpringBoot?前后端數(shù)據(jù)交互的項目實現(xiàn)
本文主要介紹了AJAX?SpringBoot?前后端數(shù)據(jù)交互的項目實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03Java數(shù)據(jù)結(jié)構(gòu)之二叉排序樹的實現(xiàn)
二叉排序樹(Binary Sort Tree),又稱二叉查找樹(Binary Search Tree),亦稱二叉搜索樹。本文詳細(xì)介紹了二叉排序樹的原理,并且提供了Java代碼的完全實現(xiàn)。需要的可以參考一下2022-01-01