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