精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Nacos神秘面紗揭曉:微服務(wù)時(shí)代的配置之王

開(kāi)發(fā) 架構(gòu)
本篇主要從Nacos的前世今生講起,介紹了核心點(diǎn)。下載安裝配置了Nacos,進(jìn)行持久化的修改。「Nacos是一個(gè)由阿里巴巴開(kāi)源的項(xiàng)目,它提供了服務(wù)注冊(cè)與發(fā)現(xiàn)、動(dòng)態(tài)配置管理、服務(wù)和配置的實(shí)時(shí)監(jiān)聽(tīng)等功能,使得開(kāi)發(fā)者可以更加輕松地構(gòu)建和管理微服務(wù)架構(gòu)。」

一、前言

隨著微服務(wù)架構(gòu)的興起,服務(wù)的規(guī)模不斷增長(zhǎng),對(duì)于服務(wù)的發(fā)現(xiàn)、配置和管理變得越來(lái)越復(fù)雜。

在這個(gè)背景下,Nacos應(yīng)運(yùn)而生,以其強(qiáng)大的功能和靈活性成為云原生領(lǐng)域的瑞士軍刀之一。

「Nacos是一個(gè)由阿里巴巴開(kāi)源的項(xiàng)目,它提供了服務(wù)注冊(cè)與發(fā)現(xiàn)、動(dòng)態(tài)配置管理、服務(wù)和配置的實(shí)時(shí)監(jiān)聽(tīng)等功能,使得開(kāi)發(fā)者可以更加輕松地構(gòu)建和管理微服務(wù)架構(gòu)。」

在Euerka不維護(hù)的時(shí)候,Nacos站出來(lái)挑扛起了大旗。不得不說(shuō)是真的好用,完美適配SpringCloud,使得微服務(wù)更加完善!

當(dāng)然免費(fèi)版可能會(huì)有些問(wèn)題,聽(tīng)說(shuō)企業(yè)收費(fèi)的是難以想象的好用!有得賺就不會(huì)停止維護(hù),就會(huì)越來(lái)越好,我們一起期待,它給我們帶來(lái)更好的功能!

「文章比較長(zhǎng),還請(qǐng)耐心看完,先收藏慢慢看,后面有源碼部門(mén)!」

話(huà)不多說(shuō),我們一起來(lái)深入了解一下吧!

二、Nacos發(fā)展史

「2018年3月:首次開(kāi)源」

在2018年3月,Nacos首次以開(kāi)源的形式亮相。作為一個(gè)全功能的服務(wù)發(fā)現(xiàn)和配置管理平臺(tái),Nacos的目標(biāo)是幫助開(kāi)發(fā)者構(gòu)建和管理微服務(wù)架構(gòu)。

「2018年8月:成為Apache孵化項(xiàng)目」

由于其強(qiáng)大的功能和快速的社區(qū)發(fā)展,Nacos于2018年8月進(jìn)入了Apache軟件基金會(huì)的孵化階段,成為Apache的孵化項(xiàng)目。

「2019年3月:成為Apache頂級(jí)項(xiàng)目」

在經(jīng)過(guò)孵化期的發(fā)展和審查后,Nacos于2019年3月正式成為Apache頂級(jí)項(xiàng)目。這意味著 Nacos 的社區(qū)達(dá)到了一定的規(guī)模和貢獻(xiàn)度,得到了廣泛認(rèn)可。

「2019年4月:發(fā)布Nacos 1.0.0 GA」

同時(shí)支持 AP 和 CP 一致性,可以大規(guī)模地生產(chǎn)環(huán)境中使用,新版本不僅針對(duì)社區(qū)的需求和集群的穩(wěn)定性相應(yīng)地增加了一些新特性,而且還發(fā)布了服務(wù)發(fā)現(xiàn)模塊的性能測(cè)試報(bào)告,以及完整的 API 列表和架構(gòu)設(shè)計(jì)文檔。「快速增長(zhǎng)期!」

「2021年03月:發(fā)布Nacos 2.0」

對(duì)于服務(wù)注冊(cè)和發(fā)現(xiàn)使用 gRPC 框架,Nacos 2.0 注冊(cè)性能相、注銷(xiāo)實(shí)例性能比較 Nacos 1.x 總體提升至少 2 倍;Nacos 2.0 查詢(xún)性能相比較 Nacos 1.x 總體提升至少 3 倍,單機(jī)多線(xiàn)程甚至提升了 10 倍;「這一時(shí)期基本沒(méi)有對(duì)手!」

三、Nacos介紹和特性

1、介紹

Nacos 是 Dynamic Naming and Configuration Service的首字母簡(jiǎn)稱(chēng),「一個(gè)更易于構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái)。」

Nacos 致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。Nacos 提供了一組簡(jiǎn)單易用的特性集,幫助您快速實(shí)現(xiàn)動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。

Nacos 幫助您更敏捷和容易地構(gòu)建、交付和管理微服務(wù)平臺(tái)。Nacos 是構(gòu)建以“服務(wù)”為中心的現(xiàn)代應(yīng)用架構(gòu) (例如微服務(wù)范式、云原生范式) 的服務(wù)基礎(chǔ)設(shè)施。

我們看一下Nacos 生態(tài)圖:

2、核心特性

「動(dòng)態(tài)配置服務(wù)」

動(dòng)態(tài)配置服務(wù)讓您能夠以中心化、外部化和動(dòng)態(tài)化的方式管理所有環(huán)境的配置。動(dòng)態(tài)配置消除了配置變更時(shí)重新部署應(yīng)用和服務(wù)的需要。配置中心化管理讓實(shí)現(xiàn)無(wú)狀態(tài)服務(wù)更簡(jiǎn)單,也讓按需彈性擴(kuò)展服務(wù)更容易。

把Yaml文件放到Nacos上統(tǒng)一管理和切換。

「服務(wù)發(fā)現(xiàn)及管理」

動(dòng)態(tài)服務(wù)發(fā)現(xiàn)對(duì)以服務(wù)為中心的(例如微服務(wù)和云原生)應(yīng)用架構(gòu)方式非常關(guān)鍵。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服務(wù)發(fā)現(xiàn)。Nacos也提供實(shí)時(shí)健康檢查,以防止將請(qǐng)求發(fā)往不健康的主機(jī)或服務(wù)實(shí)例。借助Nacos,您可以更容易地為您的服務(wù)實(shí)現(xiàn)斷路器。

2.0以后采用gRPC進(jìn)行服務(wù)的注冊(cè)!

「動(dòng)態(tài)DNS服務(wù)」

通過(guò)支持權(quán)重路由,動(dòng)態(tài)DNS服務(wù)能讓您輕松實(shí)現(xiàn)中間層負(fù)載均衡、更靈活的路由策略、流量控制以及簡(jiǎn)單數(shù)據(jù)中心內(nèi)網(wǎng)的簡(jiǎn)單DNS解析服務(wù)。動(dòng)態(tài)DNS服務(wù)還能讓您更容易地實(shí)現(xiàn)以DNS協(xié)議為基礎(chǔ)的服務(wù)發(fā)現(xiàn),以消除耦合到廠(chǎng)商私有服務(wù)發(fā)現(xiàn)API上的風(fēng)險(xiǎn)。

「服務(wù)及其元數(shù)據(jù)管理」

Nacos 能讓您從微服務(wù)平臺(tái)建設(shè)的視角管理數(shù)據(jù)中心的所有服務(wù)及元數(shù)據(jù),包括管理服務(wù)的描述、生命周期、服務(wù)的靜態(tài)依賴(lài)分析、服務(wù)的健康狀態(tài)、服務(wù)的流量管理、路由及安全策略、服務(wù)的 SLA 以及最首要的 metrics 統(tǒng)計(jì)數(shù)據(jù)。

灰度發(fā)布的配置就是元數(shù)據(jù)的一些參數(shù)!

四、Nacos安裝與配置

1、下載

我們根據(jù)對(duì)照表來(lái)下載哈!由于我們使用的Springboot版本是3.0之前的,所以要引入SpringCloudAlibaba 2021.0.5版本的,這個(gè)版本的Nacos只能安裝2.2.0的。所以我們不能安裝最新版的Nacos2.2.3,當(dāng)然你也可以試一下,看看是不是向下兼容。

對(duì)照表地址:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E#%E6%AF%95%E4%B8%9A%E7%89%88%E6%9C%AC%E4%BE%9D%E8%B5%96%E5%85%B3%E7%B3%BB%E6%8E%A8%E8%8D%90%E4%BD%BF%E7%94%A8。

經(jīng)過(guò)對(duì)照表我們本次使用的就是:

  • SpringCloud 2021.0.5
  • SpringCloud Alibaba 2021.0.5.0
  • SpringBoot 2.6.13

經(jīng)過(guò)對(duì)照表我們本次下載客戶(hù)端版本為2.2.0。

下載慢的可以使用迅雷!本次以Windows為例,Linux可以下載上面的,想看源碼的也可以下載下面的源碼!

Nacos2.2.0下載:https://github.com/alibaba/nacos/releases/tag/2.2.0。

這是綠色軟件,不需要安裝,盡量放到?jīng)]有中文目錄下,防止不必要的麻煩!

2、啟動(dòng)訪(fǎng)問(wèn)

「啟動(dòng)這里有個(gè)坑:」

對(duì)于Nacos2.0以上版本默認(rèn)啟動(dòng)是以集群的方式啟動(dòng),需要你指定成單機(jī)啟動(dòng),當(dāng)然你可以使用集群哈,這里就不帶大家搭集群了!

對(duì)于1.X直接雙擊啟動(dòng)即可!

找到bin目錄,我們?cè)谏戏捷斎隿md回車(chē)。

由于公司項(xiàng)目啟動(dòng)著nacos,咱的nacos改了端口為:18848。

輸入啟動(dòng)命令:

startup.cmd -m standalone

啟動(dòng)成功,我們可以進(jìn)行訪(fǎng)問(wèn)了!

http://192.168.50.108:18848/nacos/index.html。

用戶(hù)名和密碼都是nacos。

啟動(dòng)完美結(jié)束!

3、修改持久化

我們一般要把Nacos的配置信息進(jìn)行持久化,默認(rèn)是使用嵌入式數(shù)據(jù)庫(kù)Derby數(shù)據(jù)庫(kù)。

可以發(fā)現(xiàn)nacos的pom里引入了:

<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derby</artifactId>
    <version>${derby.version}</version>
</dependency>

這個(gè)數(shù)據(jù)庫(kù)咱也不熟,為了方便查看和管理,通常會(huì)選擇一個(gè)外部的數(shù)據(jù)庫(kù)。

在nacos0.7版本之后增加了支持MySQL數(shù)據(jù)源能力。

官方比較推薦使用MySQL來(lái)進(jìn)行持久化的!配置文件里已經(jīng)給我們準(zhǔn)備好了配置的東西,解開(kāi)注釋修改成自己的MySQL地址就好了!

先到conf目錄下拿到SQL文件,然后再數(shù)據(jù)庫(kù)中執(zhí)行一下就可以了!

這里以Navicat為例哈:

導(dǎo)入conf下的SQL文件:

導(dǎo)入成功:

我們開(kāi)始修改Nacos的配置文件:application.properties。

解開(kāi)注釋?zhuān)渲米约旱臄?shù)據(jù)庫(kù)用戶(hù)和密碼就行了!

「一定要重啟一下Nacos!」

五、Nacos配置中心

1、概念

我們來(lái)講一下Nacos的核心——配置中心功能吧。

這個(gè)對(duì)標(biāo)的是Spring Cloud Config,需要單獨(dú)引依賴(lài)!

「配置中心是分布式系統(tǒng)中一種用于集中管理和動(dòng)態(tài)配置應(yīng)用程序配置信息的服務(wù)。」

在微服務(wù)架構(gòu)中,配置管理是一個(gè)重要的問(wèn)題,因?yàn)椴煌姆?wù)可能需要不同的配置,并且這些配置可能會(huì)隨時(shí)發(fā)生變化。配置中心的目標(biāo)是使配置更加集中、易管理。

2、核心

命名空間(Namespace)

命名空間是 Nacos 中的一個(gè)重要概念,它用于隔離不同環(huán)境或應(yīng)用的配置信息。通過(guò)使用命名空間,可以在同一個(gè) Nacos 集群中管理多個(gè)環(huán)境(如開(kāi)發(fā)、測(cè)試、生產(chǎn))的配置信息,從而實(shí)現(xiàn)配置的多租戶(hù)管理。

配置集(Data ID)

配置集是 Nacos 中用于存儲(chǔ)配置信息的基本單元。每個(gè)配置集都有一個(gè)唯一的標(biāo)識(shí)符,稱(chēng)為 Data ID。Data ID 通常由配置的業(yè)務(wù)模塊和應(yīng)用名組成,用于唯一標(biāo)識(shí)一個(gè)配置集。「(對(duì)標(biāo)我們一個(gè)個(gè)的微服務(wù))」

分組(Group)

分組是配置集的另一個(gè)維度,用于將不同用途或維度的配置集歸類(lèi)到同一個(gè)組中。通過(guò)分組,可以更好地組織和管理配置信息。

3、優(yōu)點(diǎn)

動(dòng)態(tài)更新:配置信息放到y(tǒng)ml文件中,防止硬編碼在程序里,動(dòng)態(tài)更新配置(無(wú)需重啟)。多環(huán)境配置:不同的配置創(chuàng)建版本,并在需要時(shí)切換配置版本。這有助于在不同環(huán)境(例如開(kāi)發(fā)、測(cè)試、生產(chǎn))之間輕松管理配置。集中管理:配置中心允許開(kāi)發(fā)者將應(yīng)用程序的配置信息集中存儲(chǔ)在一個(gè)地方,而不是分散存儲(chǔ)在各個(gè)微服務(wù)中。這樣可以更方便地管理和維護(hù)配置。可視化管理:一些配置中心提供了可視化的配置管理界面,方便用戶(hù)直觀地查看和管理配置信息。歷史配置查看:一些配置中心提供了歷史配置查看功能,可以方便用戶(hù)查看歷史版本的配置信息,對(duì)于問(wèn)題追溯和回滾配置是有幫助的。

配置的監(jiān)聽(tīng)和推送。

4、bootstrap.yml

在使用之前需要了解一下bootstrap.yml(properties )。

「bootstrap 是 Spring Boot 中一個(gè)特殊的配置文件,用于在應(yīng)用程序啟動(dòng)時(shí)配置一些系統(tǒng)級(jí)別的屬性,通常用于一些在應(yīng)用程序上下文創(chuàng)建之前就需要加載的配置。」

我們把配置文件放到Nacos上,你把Nacos的地址再放在application.yml中,會(huì)加載不到,從而拿不到Nacos中的配置文件,項(xiàng)目無(wú)法啟動(dòng)。所以需要把項(xiàng)目中的application.yml命名為:bootstrap.yml。

讓程序先去加載bootstrap.yml,拿到Nacos信息,再?gòu)腘acos里拿到配置信息,然后就可以加載了,連接數(shù)據(jù)庫(kù)等等!

六、Nacos服務(wù)注冊(cè)和發(fā)現(xiàn)

1、服務(wù)的注冊(cè)

我們?cè)陧?xiàng)目中使用Nacos后,就會(huì)在啟動(dòng)項(xiàng)目成功后,在控制臺(tái)輸出:

2023-11-16 14:02:08.490  INFO 24660 --- 
[           main] c.a.c.n.registry.NacosServiceRegistry    : 
nacos registry, DEFAULT_GROUP service-message 192.168.50.108:2002 register finished

代表我們的服務(wù)注冊(cè)到Nacos上了!

我們發(fā)現(xiàn)日志打印的類(lèi)是NacosServiceRegistry,所以說(shuō)這個(gè)類(lèi)就是注冊(cè)核心類(lèi)!

我們一起看看這個(gè)類(lèi)到底發(fā)生了什么!

我們打斷點(diǎn)開(kāi)看一下是誰(shuí)調(diào)用的這個(gè)方法:

「這是SpringBoot思想約定大于配置,在NacosServiceRegistryAutoConfiguration配置生效后,當(dāng)Spring容器初始化完成后,會(huì)發(fā)送 WebServerInitializedEvent 事件!」

「我們從調(diào)用鏈中發(fā)現(xiàn):AbstractAutoServiceRegistration通過(guò)實(shí)現(xiàn)ApplicationListener<WebServerInitializedEvent> 來(lái)實(shí)現(xiàn)程序的監(jiān)聽(tīng),從而執(zhí)行到register方法!」

AbstractAutoServiceRegistration UML圖。

我們繼續(xù)看這個(gè)注冊(cè)方法,直接找到核心方法:namingService.registerInstance(serviceId, group, instance);一直點(diǎn),直到出現(xiàn)三個(gè)實(shí)現(xiàn)方法,讓自己選擇。

至于源碼中怎么選擇的,我們一起看一下:

三個(gè)實(shí)現(xiàn)會(huì)先執(zhí)行NamingClientProxyDelegate來(lái)獲取具體使用那種方式,類(lèi)里的方法:

private boolean ephemeral = true;

private NamingClientProxy getExecuteClientProxy(Instance instance) {
    return instance.isEphemeral() ? grpcClientProxy : httpClientProxy;
}

此時(shí)在Nacos2.0之前默認(rèn)注冊(cè)是采用Http來(lái)發(fā)送的,2.0之后采用了效率更高的gRPC進(jìn)行發(fā)送的!

此時(shí)我們來(lái)到gRpc的代理類(lèi)中:

我們進(jìn)去就可以看到gRpc的調(diào)用,具體內(nèi)部就帶大家看了,關(guān)于gRpc的事情,大家可以搜一下,是Google開(kāi)發(fā)的!

此時(shí)我們已經(jīng)完成一半了,請(qǐng)求發(fā)送成功了,我們開(kāi)始移步Nacos源碼了,需要的自行下載哈!

Nacos源碼下載地址:https://github.com/alibaba/nacos/tree/2.2.0。

此時(shí)需要找到官網(wǎng)的服務(wù)注冊(cè)地址,也就是剛剛我們發(fā)送gRpc的地址:

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'

找到源碼從這里為入口往下走,這里就不帶大家跟了,NamingApp起不來(lái),找了很多,沒(méi)有說(shuō)的,大家可以試一下,跑個(gè)測(cè)試就行了。

不能Debug,小編這里只能跟到這里,給大家提供一個(gè)思路:

getInstanceOperator().registerInstance(namespaceId, serviceName, instance);
com.alibaba.nacos.naming.core.InstanceOperatorClientImpl#registerInstance中:
clientOperationService.registerInstance(service, instance, clientId);

來(lái)到這個(gè)實(shí)現(xiàn)類(lèi):

com.alibaba.nacos.naming.core.v2.service.impl.EphemeralClientOperationServiceImpl#registerInstance
NotifyCenter.publishEvent(new ClientOperationEvent.ClientRegisterServiceEvent(singleton, clientId));

點(diǎn)擊:

ClientRegisterServiceEvent,

來(lái)到類(lèi):

com.alibaba.nacos.naming.core.v2.event.client.ClientOperationEvent.ClientRegisterServiceEvent

查看有哪些引用,找到這個(gè)類(lèi),他來(lái)監(jiān)聽(tīng)然后繼續(xù)執(zhí)行:

com.alibaba.nacos.naming.core.v2.index.ClientServiceIndexesManager#onEvent

這個(gè)類(lèi)里:

handleClientOperation((ClientOperationEvent) event);
addPublisherIndexes(service, clientId);
NotifyCenter.publishEvent(new ServiceEvent.ServiceChangedEvent(service, true))

這里繼續(xù)發(fā)布另一個(gè)事件,點(diǎn)擊ServiceChangedEvent

來(lái)到這個(gè)類(lèi):

com.alibaba.nacos.naming.core.v2.event.service.ServiceEvent.ServiceChangedEvent

查看引用,來(lái)到這個(gè)類(lèi)方法:

com.alibaba.nacos.naming.push.v2.NamingSubscriberServiceV2Impl#onEvent

里面會(huì)整上一個(gè)延時(shí)隊(duì)列:

delayTaskEngine.addTask(service, new PushDelayTask(service, PushConfig.getInstance().getPushTaskDelay()));

delayTaskEngine是我們后面的方向:PushDelayTaskExecuteEngine

先去構(gòu)造方法看,發(fā)現(xiàn)先調(diào)用的父類(lèi),就先去看父類(lèi):

NacosDelayTaskExecuteEngine

先要看構(gòu)造方法:

public NacosDelayTaskExecuteEngine(String name, int initCapacity, Logger logger, long processInterval) {
        super(logger);
        // 初始化待處理任務(wù)
        tasks = new ConcurrentHashMap<>(initCapacity);
        // 一個(gè)單線(xiàn)程的處理任務(wù)線(xiàn)程池
        processingExecutor = ExecutorFactory.newSingleScheduledExecutorService(new NameThreadFactory(name));
        // 開(kāi)啟線(xiàn)程池,放里面添加上面說(shuō)的task
        processingExecutor
                .scheduleWithFixedDelay(new ProcessRunnable(), processInterval, processInterval, TimeUnit.MILLISECONDS);
    }

會(huì)執(zhí)行:com.alibaba.nacos.common.task.engine.NacosDelayTaskExecuteEngine#processTasks。

「這一段主要是:通過(guò)定義一個(gè)延時(shí)執(zhí)行的線(xiàn)程池定時(shí)去掃描task緩存,執(zhí)行任務(wù)。」

可以看看PushDelayTaskExecuteEngine的UML圖:

從新回到PushDelayTaskExecuteEngine的構(gòu)造方法:

setDefaultTaskProcessor(new PushDelayTaskProcessor(this));

點(diǎn)擊:

PushDelayTaskProcessor

來(lái)到這個(gè)類(lèi):

com.alibaba.nacos.naming.push.v2.task.PushDelayTaskExecuteEngine.PushDelayTaskProcessor

來(lái)到執(zhí)行的process方法:

NamingExecuteTaskDispatcher.getInstance() .dispatchAndExecuteTask(service, new PushExecuteTask(service, executeEngine, pushDelayTask));

點(diǎn)擊:

dispatchAndExecuteTask

看到放里面添加任務(wù):

executeEngine.addTask(dispatchTag, task);

來(lái)到這個(gè)類(lèi):

NacosExecuteTaskExecuteEngine

構(gòu)造方法往里看:

在給TaskExecuteWorker[]添加元素,我們?cè)诳催@個(gè)數(shù)組:

TaskExecuteWorker

然后繼續(xù)看構(gòu)造方法:

realWorker = new InnerWorker(this.name);

然后realWorker.start(); 啟動(dòng):

會(huì)來(lái)到:

com.alibaba.nacos.common.task.engine.TaskExecuteWorker.InnerWorker#run

來(lái)執(zhí)行任務(wù):

task.run();

現(xiàn)在一臉懵了,一直在解耦,沒(méi)發(fā)打斷點(diǎn),太難了,有大佬懂的NamingApp啟動(dòng)的可以交流一下。

之前看過(guò)2.0之前的源碼,和這個(gè)完全不一樣,懵逼了。

不過(guò)思想應(yīng)該沒(méi)變,注冊(cè)表本質(zhì)還是一個(gè)Map。

看了之前的筆記是:

private final Map<String, Map<String, Service>> serviceMap = new ConcurrentHashMap<>();

不過(guò)現(xiàn)在可能變了,后面專(zhuān)門(mén)整一期文章看看源碼,有點(diǎn)跑偏了。還是以實(shí)戰(zhàn)為主,源碼我們后面單獨(dú)看哈!

「還有就是延遲單線(xiàn)程思想,你會(huì)發(fā)現(xiàn)Nacos的注冊(cè)是單線(xiàn)程的,都會(huì)放在阻塞隊(duì)列里一個(gè)個(gè)的去執(zhí)行。大家不需要擔(dān)心這個(gè)效率會(huì)不會(huì)慢,一般用這個(gè)的就算有幾百個(gè)服務(wù),一起注冊(cè)也是很快的,這種發(fā)布大家還是可以忍受的。成熟的程序后,不會(huì)一次注冊(cè)很多!」

2、服務(wù)發(fā)現(xiàn)

這里就先不寫(xiě)了,上面一個(gè)注冊(cè),花了好幾天時(shí)間。

我們先暫時(shí)跳過(guò):

后面搞懂了,把注冊(cè)和發(fā)現(xiàn)的源碼單獨(dú)寫(xiě)一篇。

有興趣的可以跟一下:

curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'

這個(gè)無(wú)疑也是從注冊(cè)表Map中那信息!

七、Nacos實(shí)戰(zhàn)

自己可以建一個(gè)聚合項(xiàng)目,然后體會(huì)一下,這里不就帶大家建了!

1、導(dǎo)入依賴(lài)

版本的對(duì)照,上面已經(jīng)說(shuō)了,大家可以去官網(wǎng)查看!

父模塊:

<spring.boot.version>2.6.13</spring.boot.version>
<spring.cloud.dependencies.version>2021.0.5</spring.cloud.dependencies.version>
<spring.cloud.alibaba.version>2021.0.5.0</spring.cloud.alibaba.version>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>${spring.cloud.dependencies.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>${spring.boot.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>${spring.cloud.alibaba.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

子模塊:

「要有bootstrap的依賴(lài)」,默認(rèn)2020以上版本把bootstrap禁用了,需要自己?jiǎn)为?dú)引,不然會(huì)報(bào)錯(cuò)!

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- bootstrap 啟動(dòng)器 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

結(jié)構(gòu)如下:

2、配置文件

三份除了端口和服務(wù)名不一樣,其余都是相同的!

server:
  port: 2000

spring:
  application:
    # 應(yīng)用名稱(chēng)
    name: service-order
  cloud:
    nacos:
      discovery:
        # 服務(wù)注冊(cè)地址
        server-addr: localhost:18848
      config:
        # 配置中心地址
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
      username: nacos
      password: nacos

3、測(cè)試服務(wù)注冊(cè)

啟動(dòng)服務(wù),我們看看能否注冊(cè)到Nacos上!

我們發(fā)現(xiàn)是沒(méi)有任何問(wèn)題的,我們后面測(cè)試把配置信息放在Nacos上!

4、測(cè)試配置中心

在之前我們可以新建命名空間,來(lái)進(jìn)行開(kāi)發(fā)、測(cè)試、生產(chǎn)環(huán)境的配置隔離!

我們創(chuàng)建了三個(gè):

上面概念時(shí)已經(jīng)講過(guò)了,有三種維度,實(shí)際常用的一般就是前兩種,分組的話(huà)取默認(rèn)的即可!

我們來(lái)創(chuàng)建配置:

隨便新建個(gè)配置,加點(diǎn)東西,方便我們后面訪(fǎng)問(wèn)!

這里有個(gè)Data Id命名的規(guī)范,

一般是服務(wù)名+環(huán)境名+后綴

例子:service-stock-dev.yml

我們?nèi)齻€(gè)配置創(chuàng)建完成:

把程序里加上這些信息:

server:
  port: 2001

spring:
  profiles:
    active: dev
  application:
    # 應(yīng)用名稱(chēng)
    name: service-stock
  cloud:
    nacos:
      discovery:
        # 服務(wù)注冊(cè)地址
        server-addr: localhost:18848
      config:
        # 命名空間
        namespace: 03a31fa6-f665-40f2-9886-20b4c60498c5
        # 配置中心地址
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        # 指定yml格式的配置 默認(rèn)properties
        file-extension: yml
        # 配置文件prefix
        prefix: ${spring.application.name}
        # 共享配置
        shared-configs:
            - dataId: ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
              group: ${spring.cloud.nacos.config.group}
        group: DEFAULT_GROUP
      username: nacos
      password: nacos

讀取配置類(lèi):

// 要交給spring容器,不然獲取不到值
@Component
// 配置讀取yml文件中前綴
@ConfigurationProperties(prefix = "product")
// 要有g(shù)et方法,不然無(wú)法獲取值
@Data
public class Product {

    private String name;

    private BigDecimal price;

    private String num;
}

下面我們寫(xiě)一個(gè)測(cè)試類(lèi),來(lái)獲取Nacos上配置文件的信息:

配置文件里的信息:

八、總結(jié)

經(jīng)過(guò)幾天的總結(jié)、梳理,斷斷續(xù)續(xù)的,Nacos還是有點(diǎn)東西的,源碼設(shè)計(jì)還是耐人尋味!

我們來(lái)總結(jié)一下吧!

本篇主要從Nacos的前世今生講起,介紹了核心點(diǎn)。下載安裝配置了Nacos,進(jìn)行持久化的修改。

介紹Nacos的兩個(gè)核心功能:服務(wù)的注冊(cè)和發(fā)現(xiàn)、配置中心。簡(jiǎn)單的從服務(wù)的注冊(cè)源碼進(jìn)行查看,還是要自己debug看一下核心流程。「基本全是發(fā)布訂閱來(lái)解耦,單線(xiàn)程阻塞隊(duì)列來(lái)防止并發(fā)問(wèn)題。」

最后實(shí)戰(zhàn)了一下,完成的服務(wù)的注冊(cè)和發(fā)現(xiàn),并把a(bǔ)pplication.yml的信息放到Nacos上統(tǒng)一管理。

Nacos的市場(chǎng)占用率還是挺高的,基本除了老項(xiàng)目還再用Eureka,除了自研都是這個(gè)了!

責(zé)任編輯:姜華 來(lái)源: 小王博客基地
相關(guān)推薦

2016-11-16 09:06:59

2015-08-20 13:43:17

NFV網(wǎng)絡(luò)功能虛擬化

2014-03-12 11:11:39

Storage vMo虛擬機(jī)

2021-06-07 08:18:12

云計(jì)算云端阿里云

2010-05-17 09:13:35

2011-11-18 09:26:18

Javafinally

2010-05-26 19:12:41

SVN沖突

2018-03-01 09:33:05

軟件定義存儲(chǔ)

2009-06-01 09:04:44

Google WaveWeb

2023-11-02 09:55:40

2009-09-15 15:34:33

Google Fast

2011-06-22 09:43:01

C++

2023-04-10 11:00:00

注解Demo源碼

2016-04-06 09:27:10

runtime解密學(xué)習(xí)

2024-02-14 09:00:00

機(jī)器學(xué)習(xí)索引ChatGPT

2025-01-07 15:07:13

2021-07-28 21:49:01

JVM對(duì)象內(nèi)存

2021-09-17 15:54:41

深度學(xué)習(xí)機(jī)器學(xué)習(xí)人工智能

2020-04-14 10:44:01

區(qū)塊鏈滲透測(cè)試比特幣

2017-10-16 05:56:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产欧美日韩视频| 日韩精品在线一区| 在线亚洲美日韩| 99视频国产精品免费观看a| 影音先锋久久| 亚洲美女在线观看| 五月花丁香婷婷| 黑森林国产精品av| 欧美国产乱子伦| 电影午夜精品一区二区三区| 中文字幕超碰在线| 国产精品97| 日韩高清有码在线| 午夜大片在线观看| 欧美色网在线| 亚洲国产va精品久久久不卡综合| 欧美一区少妇| 亚洲av无码乱码国产精品久久| 先锋亚洲精品| 欧美高清视频在线| 麻豆视频免费在线播放| 国产精品色在线网站| 欧美日韩二区三区| 久热免费在线观看| 国产日产一区二区| 中文字幕精品一区| 欧美精品七区| 人妻妺妺窝人体色www聚色窝 | 涩爱av色老久久精品偷偷鲁| 黑人精品xxx一区| 国产精彩视频一区二区| 麻豆影视在线观看_| 久久老女人爱爱| 国产综合动作在线观看| 国产av精国产传媒| 九九视频精品免费| 国产第一区电影| 黄色在线视频网址| 最新日韩在线| 久久久久久国产精品三级玉女聊斋| 国产精品一区二区亚洲| 精品国产中文字幕第一页| 亚洲国产日韩欧美在线动漫| 四虎永久免费观看| 超碰成人在线观看| 日韩欧美一级二级三级| 污污的视频免费观看| 日韩毛片免费视频一级特黄| 欧美性xxxxxxxx| 嫩草影院国产精品| h1515四虎成人| 欧美日韩一二三区| 亚洲一区二区在线视频观看| 免费成人黄色网| 欧美日韩激情一区二区三区| 日本三级黄色网址| 中文成人在线| 日韩一级高清毛片| 国产一精品一aⅴ一免费| 日韩在线成人| 精品剧情在线观看| av黄色一级片| 中日韩免视频上线全都免费| 亚洲欧洲日本专区| 免费看91的网站| 欧美第一精品| 九九久久久久久久久激情| 九九热只有精品| 91久久综合| 国产成人一区二| 国产精品亚洲欧美在线播放| 国产激情视频一区二区三区欧美| 成人午夜电影免费在线观看| 污污网站在线免费观看| 久久久国产精品麻豆| 日韩在线导航| a黄色片在线观看| 亚洲高清免费观看高清完整版在线观看| 我的公把我弄高潮了视频| 亚洲女同av| 欧美日韩黄色一区二区| 波多野结衣电影免费观看| 精品网站aaa| 在线观看免费高清视频97| 538精品在线视频| 亚洲精品日韩久久| 国产精品爽爽爽| 亚洲欧美激情国产综合久久久| 久久亚洲精品国产精品紫薇| 亚洲一区bb| 韩日毛片在线观看| 在线成人免费观看| 内射中出日韩无国产剧情| 成人一区不卡| 久久久噜噜噜久久中文字免| 男操女视频网站| 成人自拍视频在线观看| 视频在线观看成人| 成人影院在线播放| 欧美亚日韩国产aⅴ精品中极品| 18深夜在线观看免费视频| 要久久电视剧全集免费| 色综合天天综合网国产成人网| 青青草视频在线观看免费| 国产成人午夜精品影院观看视频 | 国产精品99精品无码视亚| 色综合综合色| 久久免费视频这里只有精品| 中文字幕精品一区二区精| av亚洲产国偷v产偷v自拍| 久久久一二三四| 欧美日韩国产v| 欧美一区二区视频观看视频| 最近中文字幕免费视频| 狠狠88综合久久久久综合网| 国产欧美精品久久久| 天天干天天插天天操| 中文字幕字幕中文在线中不卡视频| www.国产在线视频| 99久久999| 国产一区二区三区在线免费观看| 国产一级二级三级| 国内成+人亚洲+欧美+综合在线| 噜噜噜噜噜久久久久久91| 天堂va在线| 在线91免费看| 污污视频网站在线免费观看| 免费亚洲视频| 国产自产精品| 成人高潮aa毛片免费| 91精品国产日韩91久久久久久| 亚洲人成人无码网www国产| 在线观看一区视频| 粉嫩精品一区二区三区在线观看 | 成人在线免费观看| 疯狂欧美牲乱大交777| 亚洲色图欧美日韩| 欧美深夜福利| 成人毛片网站| 在线观看wwwxxxx| 欧美一区在线视频| 91精品一区二区三区蜜桃| 老司机精品视频导航| 亚洲精品无人区| 国产精品蜜月aⅴ在线| 亚洲人成在线观看| 欧美高清69hd| 国产精品每日更新在线播放网址| 成人一区二区三| 国产在线观看91一区二区三区| 欧美亚洲成人精品| 欧洲视频在线免费观看| 91电影在线观看| av网在线播放| 蜜桃av一区二区三区| 伊人久久婷婷色综合98网| 日韩综合av| 久热精品视频在线观看| 不卡的日韩av| 大伊人狠狠躁夜夜躁av一区| 蜜臀av一区二区三区有限公司| 亚洲一区不卡| 午夜精品一区二区三区在线观看 | 成人18视频免费69| 韩国精品免费视频| av一区二区三区免费观看| 国产精品极品国产中出| 91大神福利视频在线| 可以在线观看的黄色| 欧美亚日韩国产aⅴ精品中极品| 天天色天天综合| 国产成人啪午夜精品网站男同| 青青在线免费观看| 国产精品一国产精品| 国产激情视频一区| a视频在线观看免费| 欧美成人a视频| 国产精品久久久久久久久久久久久久久久久 | 国产精品中出一区二区三区| 日韩深夜视频| 日韩中文在线视频| 性做久久久久久久久久| 欧美视频一区二区三区…| 国产精品久久免费观看| 国产精品一区二区免费不卡 | 成人毛片100部免费看| 国产精品玖玖玖在线资源| 国产精品久久久av| 在线观看操人| 亚洲人成电影网站色xx| 国产伦一区二区| 欧美日韩国产在线播放| 日本二区三区视频| 99久久精品99国产精品| 自拍偷拍21p| 亚洲免费黄色| 日本一区二区免费高清视频| 老司机精品在线| 成人久久一区二区| 成人影院av| 欧美高清无遮挡| 91精彩在线视频| 日韩成人av网| 99久久久国产精品无码网爆| 色综合一个色综合亚洲| 青娱乐国产在线视频| 欧美国产精品久久| 久久人妻少妇嫩草av无码专区 | 激情亚洲网站| 在线不卡日本| 国内精品久久久久久久影视简单| 丁香婷婷久久久综合精品国产| 国产极品嫩模在线观看91精品| 91精品国产91久久久久久最新| 精品视频在线一区二区| 亚洲人成电影在线| 性感美女福利视频| 欧美不卡一区二区三区| 91福利在线观看视频| 欧美视频一区二区三区…| 久久精品视频6| 亚洲视频免费在线| 91香蕉视频污在线观看| 久久精品亚洲乱码伦伦中文| 日韩精品一区二区三区高清免费| 国产真实乱偷精品视频免| 久久综合伊人77777麻豆最新章节| 一本久道综合久久精品| 日韩成人三级视频| 国产精品国码视频| 欧美日韩生活片| 男人亚洲天堂| 91av在线影院| 免费男女羞羞的视频网站在线观看| 中文字幕久久亚洲| 国产对白叫床清晰在线播放| 亚洲精品99久久久久| 丰满肉肉bbwwbbww| 日韩欧美中文字幕制服| 精品人妻无码一区二区| 日韩一级精品视频在线观看| 国产情侣一区二区| 91麻豆精品国产自产在线观看一区 | 国产精品成人品| 欧美三级网址| 国产精品劲爆视频| 国产一区二区主播在线| 国产精品极品美女在线观看免费| 欧美国产大片| 国产91免费看片| 美女网站视频一区| 国产精品一区二区三区毛片淫片| 欧美一级做a| 成人乱人伦精品视频在线观看| 午夜不卡一区| 91在线观看免费| 一区中文字幕| 精品日韩美女| 国产探花一区二区| 亚洲v国产v在线观看| 日韩综合在线| 日本特级黄色大片| 好看的av在线不卡观看| 男人操女人免费软件| 久久黄色网页| 小明看看成人免费视频| 国产高清久久久| 国产艳妇疯狂做爰视频 | 精品国产一区二区三区麻豆免费观看完整版 | 天堂资源在线亚洲资源| 91中文字幕精品永久在线| av影院在线播放| 91久久亚洲| 91n.com在线观看| 国产综合色精品一区二区三区| 国产人妖在线观看| 久久蜜臀精品av| 无码人妻精品一区二区三区夜夜嗨| 亚洲愉拍自拍另类高清精品| 丁香六月婷婷综合| 欧美美女视频在线观看| 风流老熟女一区二区三区| 亚洲色图五月天| 呦呦在线视频| 国产精彩精品视频| 玖玖玖电影综合影院| 麻豆av一区二区三区| 婷婷亚洲最大| 男人天堂999| 国产成人av电影免费在线观看| 日韩 中文字幕| 国产精品久久夜| 国产无遮挡免费视频| 欧美日本视频在线| 无码精品一区二区三区在线| www高清在线视频日韩欧美| 国产传媒av在线| 91九色蝌蚪国产| 国产亚洲电影| 久艹视频在线免费观看| 狠狠色狠狠色综合日日91app| 亚州av综合色区无码一区| 18欧美亚洲精品| 成人免费视频国产免费| 精品国产91久久久久久久妲己 | 中文字幕视频一区| 日本一区二区三区精品| 精品久久久久久亚洲综合网| 成人p站proumb入口| 91av在线影院| 成人h动漫精品一区二区器材| 亚洲一卡二卡区| 丝袜国产日韩另类美女| 成年人小视频在线观看| 亚洲欧美偷拍三级| 在线免费观看中文字幕| 亚洲欧美精品suv| 岛国av免费在线观看| 96pao国产成视频永久免费| 青青一区二区三区| 日本一本二本在线观看| 成人黄色大片在线观看| 紧身裙女教师波多野结衣| 欧美日韩国产高清一区二区| 国产资源在线播放| 欧美一区二区三区免费观看 | 日韩电影在线观看中文字幕 | 国产精品久久一区主播| 日韩欧美ww| 成人毛片一区二区| 丰满少妇久久久久久久| 国产亚洲欧美久久久久| 7777精品伊人久久久大香线蕉完整版| av黄色在线观看| 国产精品视频一区二区三区四| 国产精品一在线观看| 红桃av在线播放| 久久免费视频一区| 天堂网免费视频| 国产一区二区三区在线看| 日韩电影免费观| 日韩免费av电影| 男人的天堂亚洲一区| 日本综合在线观看| 欧美日韩专区在线| 嫩草在线视频| 7777精品伊久久久大香线蕉语言| 欧美在线亚洲| 久久无码专区国产精品s| 亚洲大片在线观看| 天天干天天爽天天操| 情事1991在线| 成人精品影院| 肉色超薄丝袜脚交| 亚洲资源中文字幕| 亚洲欧美丝袜中文综合| 日本亚洲欧洲色α| 91影院成人| 免费观看污网站| 黄色精品在线看| 国产福利片在线| 91亚洲精品在线| 亚洲久久视频| 少妇人妻好深好紧精品无码| 欧美日韩精品免费| 蜜桃成人365av| 欧美午夜视频在线| 久久99日本精品| 国产真人真事毛片| 亚洲欧洲xxxx| 欧美一级片网址| 五十路熟女丰满大屁股| 国产亚洲欧美日韩日本| 97人妻精品一区二区三区视频| 欧美精品福利在线| 欧美精品一区二区三区中文字幕 | 久久在线免费观看视频| 国产精品对白| 色一情一区二区三区| 亚洲高清免费观看| 91女主播在线观看| 国产精品日韩高清| 奇米888四色在线精品| 久草视频在线免费看| 亚洲欧美日韩中文在线| 国产精一区二区| 久久久久狠狠高潮亚洲精品| 中文字幕日韩一区二区| 丝袜视频国产在线播放| 成人亚洲综合色就1024| 亚洲综合不卡| 色偷偷www8888| 日韩国产一区三区| 91嫩草国产线观看亚洲一区二区| 久久黄色片视频| 1000部国产精品成人观看| 男人久久精品| 国产精品三区四区| 激情五月婷婷综合| 波多野结衣一区二区三区在线|