目錄
創(chuàng)新互聯(lián)從2013年創(chuàng)立,先為管城等服務(wù)建站,管城等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為管城企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。一、什么是 Alibaba Nacos
二、Nacos的基本使用
1.Nacos的安裝
2.Nacos服務(wù)注冊發(fā)現(xiàn)相關(guān)API
3.Nacos 集成Spring Boot實(shí)現(xiàn)服務(wù)注冊與發(fā)現(xiàn)
三、Dubbo 使用Nacos實(shí)現(xiàn)注冊中心
四、Spring Cloud Alibaba Nacos Discovery
1.完成服務(wù)注冊與發(fā)現(xiàn)功能
2.服務(wù)端開發(fā)
3.消費(fèi)端開發(fā)
五、Nacos注冊中心的實(shí)現(xiàn)原理
1.服務(wù)注冊的功能主要體現(xiàn):
2.原理步驟
六、Nacos配置中心的簡單使用
1.簡介
2.Nacos集成Spring Boot實(shí)現(xiàn)統(tǒng)一配置管理
七、Spring Cloud Alibaba Nacos Config
1.在Spring Cloud生態(tài)下Nacos Config的使用步驟
2.動態(tài)更新配置
3.基于Data ID配置YAML的文件擴(kuò)展名
4.不同環(huán)境的配置切換
5.Nacos Config 自定義 Namespace 和 Group
Namespace
Group
八、Nacos Config實(shí)現(xiàn)原理
1.Nacos Config針對配置管理提供了4種操作
2.配置的存儲
3.動態(tài)監(jiān)聽之Pull OR Push
Pull
Push
Nacos的監(jiān)聽機(jī)制
Nacos 致力于解決微服務(wù)中的統(tǒng)一配置、服務(wù)注冊與發(fā)現(xiàn)等問題。它提供了一組簡單易用的特性集,幫助開發(fā)者快速實(shí)現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。
Nacos的關(guān)鍵特性如下:
Nacos支持三種部署模式:單機(jī)、集群、多集群;
需要注意:Nacos依賴Java環(huán)境,并且要求使用JDK1.8以上版本;
Nacos的安裝方式有兩種:源碼安裝、使用已編譯好的安裝包;
以下舉例為源碼安裝:
Nacos提供了SDK及Open API的方式來完成服務(wù)注冊與發(fā)現(xiàn)等操作,SDK本質(zhì)上是對HTTP請求的封裝
Open API:?/nacos/v1/ns/instance (POST)
SDK:
void? registerInstance(String serviceName,String ip,int port) throws NacosException;
void? registerInstance(String serviceName,String ip,int port,String clusterName) throws NacosException;
void? registerInstance(String serviceName,Instance instance) throws NacosException;
參數(shù)說明:
serviceName:服務(wù)名稱
ip:服務(wù)實(shí)例IP
port:服務(wù)實(shí)例Port
clusterName:集群名稱,表示該服務(wù)實(shí)例屬于哪個集群
instance:實(shí)例屬性,實(shí)際上就是把上面這些參數(shù)封裝成一個對象
調(diào)用方式:
NamingService? naming
=NamingFactory.createNamingService(System.getProperty("serveAddr"));
naming.registerInstance("nacos_test","192.168.1.1","8080","DEFAULT");
Open?API:/nacos/v1/ns/instance/list (GET)
SDK:
List
getAllInstances(String serviceName) throws NacosException; List
getAllInstances(String serviceName,List clusters) throws NacosException; 參數(shù)說明:
serviceName:服務(wù)名稱
cluster:集群列表,可以傳遞多個值
調(diào)用方式:
NamingService? naming
=NamingFactory.createNamingService(System.getProperty("serveAddr"));
naming.getAllInstances("nacos_test",true);
3.Nacos 集成Spring Boot實(shí)現(xiàn)服務(wù)注冊與發(fā)現(xiàn)Open API:/nacos/v1/ns/instance/list (GET)
SDK:
void subscribe (String serviceName,EventListener listener) throws NacosException;
void subscribe (String serviceName,List
clusters,EventListener listener) throws NacosException; 參數(shù)說明:
EventListener:當(dāng)服務(wù)提供者實(shí)例發(fā)生上、下線時,會觸發(fā)一個事件回調(diào)
服務(wù)監(jiān)聽有兩種方式:
第一種是客戶端調(diào)用/nacos/v1/ns/instance/list 定時輪詢。
第二種是基于 DatagramSocket的UDP協(xié)議,實(shí)現(xiàn)服務(wù)端的主動推送。
通過Spring Boot集成Nacos實(shí)現(xiàn)一個簡單的服務(wù)注冊與發(fā)現(xiàn)功能
nacos-sample-api,接口定義類的依賴
nacos-discovery-spring-boot-starter,Nacos的Starter組件
dubbo-spring-boot-starter ,Dubbo的Starter組件,添加Dubbo依賴
dubbo.application.name=spring-boot-dubbo-nacos-sample
dubbo.registry.address=nacos://127.0.0.1:8848
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
Nacos作為Spring Cloud Alibaba中服務(wù)注冊與發(fā)現(xiàn)的核心組件,可以很好的幫助開發(fā)者將服務(wù)自動注冊到Nacos服務(wù)端,并且能夠動態(tài)感知和刷新某個服務(wù)實(shí)例的服務(wù)列表。
1.完成服務(wù)注冊與發(fā)現(xiàn)功能將Spring Cloud Alibaba Nacos Discovery集成到Spring Cloud Alibaba Dubbo,代碼如下
2.服務(wù)端開發(fā)spring-cloud-starter:Spring Cloud核心包??
spring-cloud-starter-dubbo:引入Spring Cloud Alibaba Dubbo
spring-cloud-dubbo-sample-api:API的接口聲明
spring-cloud-alibaba-nacos-discovery:基于Nacos的服務(wù)注冊與發(fā)現(xiàn)
spring-cloud-context (2.1.1.RELEASE)
注意:spring-cloud-starter、spring-cloud-alibaba-nacos-discovery由于版本沖突,需要用exclusion標(biāo)簽排除掉spring-cloud-context子包,在pom文件中重新引回2.1.1版本的spring-cloud-context
spring.application.name=spring-cloud-nacos-sample
dubbo.scan.base-packages=com.gupaoedu.book.nacos.bootstrap? 備注:功能等同于@DubboComponentScan,指定Dubbo服務(wù)實(shí)現(xiàn)類的掃描包路徑
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.registry.address=spring-cloud://localhost? 備注:Dubbo服務(wù)注冊中心的配置地址,它的值spring-cloud://localhost表示掛載到Spring Cloud注冊中心,不配置的話會提示沒有配置注冊中心的錯誤
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848? ?備注:Nacos服務(wù)注冊中心的地址
spring-boot-starter-web :演示需要就加不然不用加
spring-cloud-starter
spring-cloud-starter-dubbo
spring-cloud-nacos-sample-api
spring-cloud-alibaba-nacos-discovery
dubbo.cloud.subscribed-services=spring-cloud-nacos-sample
dubbo.scan.base-packages=com.gupaoedu.book.nacos.bootstrap??
spring.application.name=spring-cloud-nacos-consumer
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848? ?
Nacos的架構(gòu)圖中有兩個模塊,分別是Config Server和Naming Server。Naming Server是實(shí)現(xiàn)注冊中心的核心模塊,Config Server是Nacos用于實(shí)現(xiàn)配置中心的核心模塊,它實(shí)現(xiàn)了對配置的CRUD、版本管理、灰度管理、監(jiān)聽管理、推送軌跡、聚合數(shù)據(jù)等功能。
2.Nacos集成Spring Boot實(shí)現(xiàn)統(tǒng)一配置管理Nacos是一個獨(dú)立組件,它可以獨(dú)立部署和應(yīng)用,在集成到Spring Cloud之前,可以結(jié)合Spring Boot來實(shí)現(xiàn)統(tǒng)一配置管理
@NacosPropertySource(dataId="example",autoRefreshed=true)
注釋:用于加載dataId為example的配置源,autoRefreshed表示開啟自動更新
@NacosValue(value="${info:Local Hello World}",autoRefreshed=true)
注釋:設(shè)置屬性的值,其中info表示key,而Local Hello World代表默認(rèn)值。也就是說如果key不存在,則使用默認(rèn)值。
控制臺創(chuàng)建方式:通過http://ip:8848/nacos控制臺進(jìn)入 配置管理-配置列表,單擊創(chuàng)建按鈕進(jìn)入創(chuàng)建界面。Data ID:表示Nacos中某個配置集的ID;Group:表示配置所屬的分組;配置格式:當(dāng)前配置內(nèi)容所遵循的格式。
注意:dataId和group必須與NacosPropertySource中配置保持一致,否則無法匹配到配置內(nèi)容
spring.application.name=spring-cloud-nacos-config-sample
spring.cloud.nacos.config.server-addr=127.0.0.1:8848? 注釋:設(shè)置Nacos配置中心地址
spring.cloud.nacos.config.prefix=example? ?注釋:表示Nacos配置中心的Data ID的前綴
注:在Spring Boot中有兩種上下文配置,一種是bootstrap,一種是application。bootstrap是父上下文,也就是說bootstrap加載優(yōu)先于application。由于在加載遠(yuǎn)程配置之前,需要讀取Nacos配置中心的服務(wù)地址信息,所以Nacos服務(wù)地址等屬性配置需要放在bootstrap.properties文件中
DataId:example
Group:DEFAULT_GROUP
配置內(nèi)容:info=Nacos Server Data : Hello World
2.動態(tài)更新配置ConfigurableApplicationContext?context=
?SpringApplication.run(SpringCloudNacosConfigSampleApplication.class,args);
String info=context.getEnvironment().getProperty("info");
注:從Environment中讀取配置,info為得到的配置數(shù)據(jù)
配置中心必然需要支持配置的動態(tài)更新,也就是在配置中心上修改配置的值之后,應(yīng)用程序需要感知值的變化。
3.基于Data ID配置YAML的文件擴(kuò)展名Spring Cloud Alibaba Nacos Config從Nacos Config Server中加載配置時,會匹配Data ID。
Data ID默認(rèn)規(guī)則是:${prefix}-${spring.profile.active}.${file-extension}。
在實(shí)際應(yīng)用中,如果用YAML格式的配置,Nacos Server也提供了YAML配置格式的支持,步驟如下:
Data ID:spring-cloud-nacos-config-sample.yaml
Group:DEFAULT_GROUP
配置格式:YAML
配置內(nèi)容:info:yaml config type
在Spring Boot中,可以基于spring.profiles.active實(shí)現(xiàn)不同環(huán)境的配置切換。比如:開發(fā)環(huán)境、測試環(huán)境、預(yù)生產(chǎn)環(huán)境、生產(chǎn)環(huán)境。具體切換步驟如下:
spring-cloud-nacos-config-sample-test.properties,配置內(nèi)容為info-test
spring-cloud-nacos-config-sample-prod.properties,配置內(nèi)容為info=prod env:Hello
Nacos Config中默認(rèn)的行為?Namespace:public;Group:DEFAULT_GROUP?
Namespace用于解決多環(huán)境及多租戶數(shù)據(jù)的隔離問題,比如在多套不同的環(huán)境下,可以根據(jù)指定的環(huán)境創(chuàng)建不同的Namespace,實(shí)現(xiàn)多環(huán)境隔離?;蛘叨嘤脩舻膱鼍爸?,每個用戶可以維護(hù)自己的Namespace,實(shí)現(xiàn)每個用戶的配置數(shù)據(jù)和注冊數(shù)據(jù)的隔離。
需要注意的是:在不同的Namespace下,可以存在相同的Group和DataId
操作:
是Nacos中用來實(shí)現(xiàn)Data ID分組管理的機(jī)制,它可以實(shí)現(xiàn)不同Service/DataId的隔離
操作:不需要提前創(chuàng)建,只需要在創(chuàng)建的時候指定
SDK:public? String getConfig(String dataId,String group,long timeoutMs)
throws NacosException;
API(GET): /nacos/v1/cs/configs
SDK:public? void? addListener(String dataId,String group,Listener listener);
API(POST):/nacos/v1/cs/configs/listener
SDK:public boolean publishConfig(String dataId,String group,String content)
? throws NacosException;
API(POST):/nacos/v1/cs/configs
2.配置的存儲SDK:public boolean removeConfig(String dataId,String group) throws NacosException;
API(DELETE):/nacos/v1/cs/configs
Nacos服務(wù)端的數(shù)據(jù)存儲默認(rèn)采用的是Deaby數(shù)據(jù)庫,除此之外,還支持MySQL數(shù)據(jù)庫。
3.動態(tài)監(jiān)聽之Pull OR Push Pull表示客戶端從服務(wù)端主動拉取數(shù)據(jù)?
優(yōu)缺點(diǎn):在Pull模式下,客戶端需要定時從服務(wù)端拉取一次數(shù)據(jù),由于定時任務(wù)會存在一定的時間間隔,所以不能保證數(shù)據(jù)的實(shí)時性,并且在服務(wù)端配置長時間不更新的情況下,客戶端的定時任務(wù)會做一些無效的Pull
Push表示服務(wù)端主動把數(shù)據(jù)推送給客戶端
優(yōu)缺點(diǎn):在Push模式下,服務(wù)端需要維持與客戶端的長鏈接,如果客戶端的數(shù)量比較多,那么服務(wù)端需要耗費(fèi)大量的內(nèi)存資源來保存每個連接,并且為了保證連接的有效性,還需要心跳機(jī)制來維持每個連接的狀態(tài)。
Nacos的監(jiān)聽機(jī)制Nacos采用的是Pull模式,但不是簡單的Pull模式,而是一種長輪詢機(jī)制??蛻舳瞬捎瞄L輪詢的方式定時發(fā)起Pull請求,去檢查服務(wù)端配置信息是否發(fā)生了變化:
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁題目:Nacos-創(chuàng)新互聯(lián)
路徑分享:http://jinyejixie.com/article14/hgcde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、網(wǎng)站建設(shè)、搜索引擎優(yōu)化、域名注冊、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容