分散式資源管理
DRM(分散式資源管理)
大型的分散式系統中存在很多的配置文件,分散式資源管理解決了配置文件同步更新的問題,不僅僅是配置文件,此技術還可以支持緩存數據的同步一致,下面將簡單介紹一下基於消息機制的分散式資源管理系統。
01傳統的配置同步問題
配置文件作為靜態的config.xml文件存儲在各個節點上,不可動態改變,修改配置需要重新部署應用,在大型實時系統中很不友好不易擴展。
02緩存+單機DB
將配置信息存儲在緩存中,當修改了緩存後可以將信息同步到資料庫中,每一次更新都要查詢資料庫不太現實。
03定時輪詢技術
一台機器修改了資料庫的配置信息後,其他機器定時輪詢進行更新,輪詢的時間設置是個關鍵,時間設置長了會導致數據長時間不同步,時間設置的短了會導致頻繁訪問資料庫造成資源的浪費,所以該方法也不適合對於讀多寫少的分散式系統。
04Drm Version1
基於配置中心的發布-訂閱模型(publish-subscribe)Drm伺服器是發布者,應用伺服器是訂閱者,Drm為應用的每一個配置項生成一個唯一標識的字元串,註冊到配置中心,配置中實時將值推送給訂閱者。但是這些配置值如果全部存在配置中心內存中會佔用很大的空間因此也具有一定的缺點。
05DRM Version2
配置發生更變後通知DrmServer,相應的配置值直接寫入到DrmData緩存中,然後將指令發布到配置中心中,配置中心不存儲數據而是將指令push到應用伺服器端,應用伺服器在接到推送指令後向緩存中pull相應的指令。
06總結
DRM主要用於有讀多寫少任務的分散式系統中,其保證了最終一致性,且必須由後台去調用,如果報漏給前端,會造成大量調用,給配置中心帶來壓力。其原理是基於發布訂閱模型和消息的數據同步,應用的場景不僅在配置文件中,例如:集群中各個節點初始化後需要將將資料庫的內容緩存到本機,但是如果對資料庫內容進行了改變,則需要有機制來通知各節點進行緩存的更新,drm在這種場景下可以很好的發揮作用。
歡迎關注我們的微信公眾號:人工智慧LeadAI,ID:atleadai
推薦閱讀:
※[NIPS2012] 針對深度學習的大型分散式訓練
※[DNN] 嘗試理解深度神經網路的Large-batch魔咒
※鋼鐵俠3裡面的賈維斯系統是個什麼構造的?
※分散式系統理論基礎 - 一致性、2PC和3PC