兩臺服務之間數據同步
數據同步
數據同步機制有很多種,我之前在項目中有遇到兩臺服務器之間文件同步、集中管理平臺服務器同步配置信息給節點,最近也看到了SpringCloud Alibaba組件之一Nacos配置管理相關的文章,也從中學到了數據同步的一種實現方式,如果後續我有遇到或想到一些同步機制的方法或想法,會持續更新這篇文章。
nacos-數據同步機制
nacos是alibaba SpringCloud下的配置管理組件,nacos分爲服務端和客戶端,服務端主要提供界面配置功能,客戶端主要提供同步服務端配置信息的功能。這裏我寫一下大概的一種實現機制,以後可以作爲參考的一種想法:
- 客戶端註冊監聽器 ,將自己要監聽的數據類型註冊到管理中心;
- 客戶端定時輪詢任務,執行定時任務,每隔一段時間主動向服務端發起http請求獲取配置信息 ;
- 本地數據檢查,對比服務端獲取到的信息和本地緩存中存儲的信息 ,如果不一致,則回調監聽器
- 本地數據存儲文件,爲了防止客戶端和服務端均宕機導致無法正常獲取數據,將配置數據寫入本地文件做個備份 ;
思考:
- 爲什麼要使用客戶端拉取這種模式而不用服務端推送模式?
我的理解是如果採用服務端推送模式,如果是建立長連接的話,需要做的維護工作要更多一些:要保證連接不失效、要耗費連接資源;如果是通過http短連接去推送,需要做的工作:維護客戶端ip列表,這種方式明顯不合適,因爲客戶端可能衆多,ip變了都還要通知到服務端,增加了客戶端和服務端的耦合性。 - 這種同步機制還有沒有可以改進的地方?