一篇文章帶你了解Java SpringBoot Nacos
1、什么是Nacos
Nacos 致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。Nacos 提供了一組簡單易用的特性集,幫助您快速實(shí)現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。 是Spring Cloud A 中的服務(wù)注冊發(fā)現(xiàn)組件,類似于Consul、Eureka,同時(shí)它又提供了分布式配置中心的功能,這點(diǎn)和Consul的config類似,支持熱加載。
Nacos 作為微服務(wù)核心的服務(wù)注冊與發(fā)現(xiàn)中心,讓大家在 Eureka 和 Consule 之外有了新的選擇,開箱即用,上手簡潔。
1.1與eureka對比
1 eureka 2.0閉源碼了。 2 從官網(wǎng)來看nacos 的注冊的實(shí)例數(shù)是大于eureka的, 3 因?yàn)閚acos使用的raft協(xié)議,nacos集群的一致性要遠(yuǎn)大于eureka集群.
分布式一致性協(xié)議 Raft,自 2013 年論文發(fā)表,之后就受到了技術(shù)領(lǐng)域的熱捧,與其他的分布式一致性算法比,Raft 相對比較簡單并且易于實(shí)現(xiàn),這也是 Raft 能異軍突起的主要因素。

Raft 的數(shù)據(jù)一致性策略
Raft 協(xié)議強(qiáng)依賴 Leader 節(jié)點(diǎn)來確保集群數(shù)據(jù)一致性。即 client 發(fā)送過來的數(shù)據(jù)均先到達(dá) Leader 節(jié)點(diǎn),Leader 接收到數(shù)據(jù)后,先將數(shù)據(jù)標(biāo)記為 uncommitted 狀態(tài),隨后 Leader 開始向所有 Follower 復(fù)制數(shù)據(jù)并等待響應(yīng),在獲得集群中大于 N/2 個(gè) Follower 的已成功接收數(shù)據(jù)完畢的響應(yīng)后,Leader 將數(shù)據(jù)的狀態(tài)標(biāo)記為 committed,隨后向 client 發(fā)送數(shù)據(jù)已接收確認(rèn),在向 client 發(fā)送出已數(shù)據(jù)接收后,再向所有 Follower 節(jié)點(diǎn)發(fā)送通知表明該數(shù)據(jù)狀態(tài)為committed。
1.2與zookeeper對比
1.作為配置中心
服務(wù)器存儲位置不同,分別采用mysql和zk本身存儲 消息發(fā)送,zk采用過半機(jī)制保持一致性,Nacos采用異步廣播,通過后臺線程重試保證。
2.作為注冊中心
Nacos:nacos支持兩種方式的注冊中心,持久化和非持久化存儲服務(wù)信息。
非持久直接存儲在nacos服務(wù)節(jié)點(diǎn)的內(nèi)存中,并且服務(wù)節(jié)點(diǎn)間采用去中心化的思想,服務(wù)節(jié)點(diǎn)采用hash分片存儲注冊信息
持久化使用Raft協(xié)議選舉master節(jié)點(diǎn),同樣采用過半機(jī)制將數(shù)據(jù)存儲在leader節(jié)點(diǎn)上
Zookeeper:利用zk的樹型結(jié)構(gòu)做數(shù)據(jù)存儲,服務(wù)注冊和消費(fèi)信息直接存儲在zk樹形節(jié)點(diǎn)上,集群下同樣采用過半機(jī)制保證服務(wù)節(jié)點(diǎn)間一致性
1.3與springcloud config 對比
三大優(yōu)勢:
- springcloud config大部分場景結(jié)合git 使用, 動態(tài)變更還需要依賴Spring Cloud Bus 消息總線來通過所有的客戶端變化.
- springcloud config不提供可視化界面
- nacos config使用長連接更新配置, 一旦配置有變動后,通知Provider的過程非常的迅速, 從速度上秒殺springcloud原來的config幾條街,
2、Spring Cloud Alibaba 套件
目前 Spring Cloud Alibaba 主要有三個(gè)組件:
- Nacos:一個(gè)更易于構(gòu)建云原生應(yīng)用的動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺。
- Sentinel:把流量作為切入點(diǎn),從流量控制、熔斷降級、系統(tǒng)負(fù)載保護(hù)等多個(gè)維度保護(hù)服務(wù)的穩(wěn)定性。
- AliCloud OSS: 阿里云對象存儲服務(wù)(Object Storage Service,簡稱
- OSS),是阿里云提供的海量、安全、低成本、高可靠的云存儲服務(wù)。您可以在任何應(yīng)用、任何時(shí)間、任何地點(diǎn)存儲和訪問任意類型的數(shù)據(jù)。
3、Nacos 的架構(gòu)和安裝
3.1、Nacos 的架構(gòu)

- Provider APP:服務(wù)提供者
- Consumer APP:服務(wù)消費(fèi)者
- Name Server:通過VIP(Virtual IP)或DNS的方式實(shí)現(xiàn)Nacos高可用集群的服務(wù)路由
- Nacos Server:Nacos服務(wù)提供者,里面包含的Open API是功能訪問入口,Conig Service、Naming Service 是Nacos提供的配置服務(wù)、命名服務(wù)模塊。Consitency Protocol是一致性協(xié)議,用來實(shí)現(xiàn)Nacos集群節(jié)點(diǎn)的數(shù)據(jù)同步,這里使用的是Raft算法(Etcd、Redis哨兵選舉)
- Nacos Console:控制臺
3.2、Nacos Server 的下載和安裝
在使用 Nacos 之前,需要先下載 Nacos 并啟動 Nacos Server。
安裝的參考教程:
http://www.dhdzp.com/article/195538.htm
4、Nacos Server 的運(yùn)行
4.1兩種模式
Nacos Server 有兩種運(yùn)行模式:
- standalone
- cluster
4.2、standalone 模式
此模式一般用于 demo 和測試,不用改任何配置,直接敲以下命令執(zhí)行
sh bin/startup.sh -m standalone
然后從 http://xxxx:8848/nacos/index.html 進(jìn)入控制臺就能看到如下界面了

默認(rèn)賬號和密碼為:nacos nacos
4.3、cluster 模式
測試環(huán)境,可以先用 standalone 模式擼起來,享受 coding 的快感,但是,生產(chǎn)環(huán)境可以使用 cluster 模式。
cluster 模式需要依賴 MySQL,然后改兩個(gè)配置文件:
conf/cluster.conf conf/application.properties
cluster.conf,填入要運(yùn)行 Nacos Server 機(jī)器的 ip
#it is ip #example 10.10.109.214 11.16.128.34 11.16.128.36
修改NACOS_PATH/conf/application.properties,加入 MySQL 配置
db.num=1 db.url.0=jdbc:mysql://localhost:3306/nacos_config characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=root
創(chuàng)建一個(gè)名為nacos_config的 database,將NACOS_PATH/conf/nacos-mysql.sql中的表結(jié)構(gòu)導(dǎo)入剛才創(chuàng)建的庫中.
4、輸入以下命令即可啟動服務(wù):
sh bin/startup.sh
輸入http://xxxx:8848/nacos/index.html 進(jìn)入控制臺
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Mybatis-Plus讀寫Mysql的Json字段的操作代碼
這篇文章主要介紹了Mybatis-Plus讀寫Mysql的Json字段的操作代碼,文中通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
后端報(bào)TypeError:Cannot?read?properties?of?null?(reading?‘
這篇文章主要給大家介紹了關(guān)于后端報(bào)TypeError:Cannot?read?properties?of?null?(reading?‘xxx‘)錯(cuò)誤的解決辦法,這個(gè)錯(cuò)誤是開發(fā)中常見的錯(cuò)誤之一,需要的朋友可以參考下2023-05-05
Java實(shí)現(xiàn)Word轉(zhuǎn)PDF的全過程
在IT領(lǐng)域,文檔格式轉(zhuǎn)換是常見的任務(wù)之一,特別是在管理大量文本數(shù)據(jù)時(shí),本文將詳細(xì)探討如何利用Java技術(shù)將Word文檔(.docx)轉(zhuǎn)換成PDF格式,需要的朋友可以參考下2025-04-04

