您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么理解Nacos Naming持久化存儲”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Nacos主要包括兩個核心服務 - config & naming。config主要用來托管應用配置,naming用作服務發(fā)現(xiàn)。Nacos Naming服務引入了一種Service - Cluster - Instance的數(shù)據結構模型,用來存儲服務的元信息。在Naming服務中實際來存儲service/cluster/instance數(shù)據的底層實現(xiàn)被抽象成了ConsistencyService接口。
Naming服務支持兩種類型的數(shù)據存儲:臨時和永久數(shù)據。永久數(shù)據一旦創(chuàng)建之后會一直存在,除非顯式刪除;臨時數(shù)據創(chuàng)建之后和所有者的生命周期綁定,需要創(chuàng)建者不斷發(fā)送心跳信息來保證數(shù)據的有效性。
這兩種數(shù)據類型在代碼上表現(xiàn)為ConsistencyService接口的兩種實現(xiàn),如下圖:
RaftConsistencyServiceImpl類提供的是基于Raft協(xié)議的永久數(shù)據存儲方案。nacos naming服務內部實現(xiàn)了一個簡化的raft協(xié)議。每個節(jié)點通過本地文件系統(tǒng)保存所有數(shù)據,通過raft協(xié)議選擇leader并同步數(shù)據。raft協(xié)議通過保證數(shù)據在各naming節(jié)點的一致性來保證naming服務的高可用。
DistroConsistencyServiceImpl用于存儲臨時數(shù)據。由于nacos的臨時數(shù)據需要通過創(chuàng)建者不斷得發(fā)送心跳數(shù)據來保活,因此在存儲上反而比較簡單。naming服務并不會在文件系統(tǒng)或者數(shù)據庫中持久化存儲臨時數(shù)據,它通過心跳包來保證數(shù)據的有效性。
naming服務使用一種“分區(qū)”算法來管理臨時數(shù)據。它把所有數(shù)據分為若干個block,每個naming節(jié)點只負責一個block內數(shù)據的創(chuàng)建/刪除/同步。通過數(shù)據同步,每個naming node最終都會持有完整的數(shù)據集合。
最終DelegateConsistencyServiceImpl類同時持有RaftConsistencyServiceImpl和DistroConsistencyServiceImpl兩個實例,通過每個數(shù)據key的格式來判斷最終存儲的類型。
“怎么理解Nacos Naming持久化存儲”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。