您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么理解Nacos Config存儲模型”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么理解Nacos Config存儲模型”吧!
Nacos Config提供了配置管理的功能,它允許用戶在nacos上配置key-value對,并在客戶端訂閱需要的配置。當配置發生變更時,訂閱的客戶端會獲得通知,隨后拉取最新的key-value對。
Config Server為了最大程度保證可用性采用了一種三層的存儲架構設計,mysql - 本地文件 - 內存緩存:
mysql
Config Server所有的key-value配置信息都最終存儲在mysql數據庫中,當中包含四張核心表(table):
config_info - 存儲配置信息,包含id/data_id/group_id/tenant_id/content/md5/gmt_created/gmt_modified/app_name等列。當中data_id + group_id + tenant_id三者唯一確定一條key-value配置。
config_tags_relation - 存儲配置上附加的tag,包含id/tag_name/tag_type/data_id/group_id/tenant_id/nid等列。
config_info_beta - 存儲beta環境的特殊配置值,除了config_info表中的列之外新增了beta_ips列。
config_info_tag - 存儲某個tag對應的特殊配置值,除了config_info表中的列之外新增了tag_id列。
本地文件系統
mysql數據庫中存儲的是最終的配置信息,config server在啟動后會周期性的從mysql中將所有配置信息dump到本地文件系統中。配置會被存儲到一個特殊的目錄/{user.home}/nacos/data/config-data/{groupId}/{dataId}下,每條配置存在一個獨立的文件中。
config server中關于配置的讀取都是走本地文件系統中的dump,這種設計一方面提升了系統的可用性(防止mysql奔潰導致config不可用),另一方面極大降低了mysql數據庫的負載,使得config server的水平擴張變得非常容易。
內存緩存
除了將配置數據dump到本地文件系統中之外,config server還會在內存中維護一份對應的數據緩存。內存Cache不包含配置value,只包含md5/lastModifiedTs等信息。這進一步降低了訪問文件系統的頻率,大大提升了響應時間。
配置讀寫
當config server啟動時會一次性把mysql中存儲的所有配置dump到本地文件系統中,并設置一個定時器周期性(默認6h)做全量dump。config server也有一種quick start模式,允許重用文件系統中保留的配置數據,做增量dump。
配置信息的寫首先進入到mysql數據庫中。mysql插入成功之后server會生成一個ConfigDataChangeEvent事件,在AsyncNotifyService中將捕獲這個事件,對當前每一個config server發起/dataChange調用。
/dataChange調用在CommunicationController中被處理,通過ConfigService將變動的數據dump到本地文件中并更新內存緩存。
配置的讀取及訂閱都是從內存Cache + 本地文件中完成。
感謝各位的閱讀,以上就是“怎么理解Nacos Config存儲模型”的內容了,經過本文的學習后,相信大家對怎么理解Nacos Config存儲模型這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。