本篇內(nèi)容介紹了“怎么理解Nacos Naming持久化存儲”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)是一家專業(yè)提供陽明企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、網(wǎng)站建設(shè)、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為陽明眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進行中。
Nacos主要包括兩個核心服務(wù) - config & naming。config主要用來托管應(yīng)用配置,naming用作服務(wù)發(fā)現(xiàn)。Nacos Naming服務(wù)引入了一種Service - Cluster - Instance的數(shù)據(jù)結(jié)構(gòu)模型,用來存儲服務(wù)的元信息。在Naming服務(wù)中實際來存儲service/cluster/instance數(shù)據(jù)的底層實現(xiàn)被抽象成了ConsistencyService接口。
Naming服務(wù)支持兩種類型的數(shù)據(jù)存儲:臨時和永久數(shù)據(jù)。永久數(shù)據(jù)一旦創(chuàng)建之后會一直存在,除非顯式刪除;臨時數(shù)據(jù)創(chuàng)建之后和所有者的生命周期綁定,需要創(chuàng)建者不斷發(fā)送心跳信息來保證數(shù)據(jù)的有效性。
這兩種數(shù)據(jù)類型在代碼上表現(xiàn)為ConsistencyService接口的兩種實現(xiàn),如下圖:
RaftConsistencyServiceImpl類提供的是基于Raft協(xié)議的永久數(shù)據(jù)存儲方案。nacos naming服務(wù)內(nèi)部實現(xiàn)了一個簡化的raft協(xié)議。每個節(jié)點通過本地文件系統(tǒng)保存所有數(shù)據(jù),通過raft協(xié)議選擇leader并同步數(shù)據(jù)。raft協(xié)議通過保證數(shù)據(jù)在各naming節(jié)點的一致性來保證naming服務(wù)的高可用。
DistroConsistencyServiceImpl用于存儲臨時數(shù)據(jù)。由于nacos的臨時數(shù)據(jù)需要通過創(chuàng)建者不斷得發(fā)送心跳數(shù)據(jù)來保活,因此在存儲上反而比較簡單。naming服務(wù)并不會在文件系統(tǒng)或者數(shù)據(jù)庫中持久化存儲臨時數(shù)據(jù),它通過心跳包來保證數(shù)據(jù)的有效性。
naming服務(wù)使用一種“分區(qū)”算法來管理臨時數(shù)據(jù)。它把所有數(shù)據(jù)分為若干個block,每個naming節(jié)點只負(fù)責(zé)一個block內(nèi)數(shù)據(jù)的創(chuàng)建/刪除/同步。通過數(shù)據(jù)同步,每個naming node最終都會持有完整的數(shù)據(jù)集合。
最終DelegateConsistencyServiceImpl類同時持有RaftConsistencyServiceImpl和DistroConsistencyServiceImpl兩個實例,通過每個數(shù)據(jù)key的格式來判斷最終存儲的類型。
“怎么理解Nacos Naming持久化存儲”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!