初識 diamond server

一些基礎的功能不做贅述了,增刪查改,我們就以添加配置時,做了什么。

首先是檢查參數,沒問題的話就拼裝成ConfigInfo,它的構造方法中會對content進行MD5加密,值會賦給ConfigInfo的屬性md5。然后將數據持久化到數據庫中。隨后將group和dataId組成緩存的key,內容的md5作為value,放入緩存。然后將數據放入磁盤。


配置信息放入磁盤

modifyMarkCache 是一個鎖的功能,如果存儲的信息中沒有cacheKey的話才可以執行下面的操作,如果存在,那么說明有其他的人在操作同一個group,dataId的數據,就會直接拋出異常。下面我們看正常的流程,找到項目路徑中的已group命名的文件夾,不存在就創建,隨后找到這個group命名的文件夾中的dataId命名的文件,不存在的話創建(這個文件就是我們要操作,的目標文件),隨后根據group和dataId創建臨時文件,寫入需要的內容。最后將臨時文件的內容復制到目標文件中。操作成功后刪除臨時的文件,在緩存中清除標記。

持久化完成后,就需要通知集群中的其他節點,更新內容了。


拼接參數,調用restful方法。可以看到是遍歷得到每一個節點的地址信息,隨后調用。調用的方法是notifyConfigInfo。

其實就是這個方法


從數據庫中獲取到最新的配置,更新緩存,更新磁盤。


總結:

當一個節點的數據發生變化時,先持久化到數據庫,再刷新本地緩存,更新服務器的磁盤。隨后通知到集群中的其他節點更新。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容