Spring Cloud Alibaba之服務(wù)發(fā)現(xiàn)組件 - Nacos的數(shù)據(jù)持久化(八)

通過之前的幾篇有關(guān)Nacos的文章,對于Nacos分別作為服務(wù)注冊中心以及配置中心時(shí),與Spring Cloud體系結(jié)合的基礎(chǔ)使用方法已經(jīng)講解完畢了。下面我們就要從生產(chǎn)部署角度,介紹Nacos的相關(guān)內(nèi)容。這里具體說說Nacos的數(shù)據(jù)存儲(chǔ)以及生產(chǎn)配置的推薦。

數(shù)據(jù)持久化

在之前的教程中,我們對于Nacos服務(wù)端自身并沒有做過什么特殊的配置,一切均以默認(rèn)的單機(jī)模式運(yùn)行,完成了上述的所有功能學(xué)習(xí)。但是,Nacos的單機(jī)運(yùn)行模式僅適用于開發(fā)和測試環(huán)境,對于有高可用要求的生產(chǎn)環(huán)境就不太合適了。

有人說我們可不可以直接通過啟動(dòng)多個(gè)單機(jī)模式Nacos服務(wù)的方式,來實(shí)現(xiàn)多個(gè)節(jié)點(diǎn)Nacos的高可用嗎?答案是不可以!

那我們應(yīng)該如何才能實(shí)現(xiàn)Nacos的高可用集群搭建?

在搭建Nacos集群之前,我們需要知道,默認(rèn)情況下,Nacos使用內(nèi)嵌的cmdb數(shù)據(jù)庫完成數(shù)據(jù)的存儲(chǔ)。所以,如果啟動(dòng)多個(gè)默認(rèn)配置的Nacos節(jié)點(diǎn),數(shù)據(jù)存儲(chǔ)是存在不一致問題的。為了解決這個(gè)問題,Nacos采用了集中式存儲(chǔ)方式來支持集權(quán)化部署,目前只支持MySQL的存儲(chǔ)。

配置Nacos的MySQL存儲(chǔ)只需要下面三步:

第一步:安裝數(shù)據(jù)庫,這里選擇的版本:5.7.x

具體安裝步驟這里就不在說明

第二步:初始化MySQL數(shù)據(jù)庫,初始化文件可以從Nacos工程包下 conf 目錄獲?。?br>

執(zhí)行完畢后可以看到如下圖所示的表結(jié)構(gòu):


第三步:修改Nacos工程包下 ** conf/application.properties**文件,增加支持MySQL數(shù)據(jù)源的配置:

spring.datasource.platform=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=123456

這樣,Nacos數(shù)據(jù)存儲(chǔ)到MySQL的配置就完成了,可以嘗試?yán)^續(xù)使用單機(jī)模式啟動(dòng)Nacos??磁渲檬欠裆А?/p>

思考

關(guān)于Nacos數(shù)據(jù)的持久化實(shí)現(xiàn),與其他的中間件的相比,在實(shí)現(xiàn)上并沒有采用分布式算法來解決一致性問題,而是采用常規(guī)的集中化存儲(chǔ)來實(shí)現(xiàn)。由于采用單一數(shù)據(jù)源的方式,直接解決分布式一致性問題,所以從學(xué)習(xí)角度上來說,Nacos的實(shí)現(xiàn)原理會(huì)更容易理解和接受。但是,從部署的復(fù)雜度和硬件投入成本來說,與consul、zookeeper這些通過算法方式實(shí)現(xiàn)分布式一致性問題的中間件相比,就略顯不足了。

同時(shí),在引入MySQL的存儲(chǔ)時(shí),由于多了一個(gè)中間件存在,整個(gè)Nacos系統(tǒng)的整體可用性一定會(huì)有所下降的。所以為了彌補(bǔ)可用性的下降,在生產(chǎn)上MySQL的高可用部署也是必須的(成本再次提高)。不論如何提高,可用性都很難達(dá)到100%,所以這種方式,不論如何提升存儲(chǔ)的可用性,理論上對Nacos集群的自身可用性都會(huì)產(chǎn)生微小的影響。

不過上面的思考都是從理論上,粗略討論的,并沒有經(jīng)過詳細(xì)的成本評估與可用性計(jì)算。所以,對于實(shí)際應(yīng)用場景,可能這些成本的增加和可用性的降低并沒有那么大的影響。


下一章節(jié),我們將通過MySQL數(shù)據(jù)庫完成對Nacos管理用戶進(jìn)行自定義。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容