国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種動態(tài)數(shù)據(jù)主備同步的方法、系統(tǒng)及一種元數(shù)據(jù)服務器的制作方法

      文檔序號:7985548閱讀:316來源:國知局
      專利名稱:一種動態(tài)數(shù)據(jù)主備同步的方法、系統(tǒng)及一種元數(shù)據(jù)服務器的制作方法
      技術(shù)領域
      本發(fā)明涉及通信領域,具體涉及一種動態(tài)數(shù)據(jù)主備同步的方法、系統(tǒng)及一種元數(shù)據(jù)服務器。
      背景技術(shù)
      分布式文件系統(tǒng)廣泛的應用于云存儲、IPTV、流媒體服務器等業(yè)務場合。元數(shù)據(jù)服務器一般用于保存文件的文件長度,文件屬性,文件分布位置等元數(shù)據(jù)信息,除此外,元數(shù)據(jù)服務器還需要和客戶端交互,因此元數(shù)據(jù)服務器還需要實時的保存記錄當前打開、編輯的文件歸屬哪幾個客戶端、各個客戶端對相應的文件分別是采用哪種編輯模式等實時變化的動態(tài)數(shù)據(jù)。為了容災,一般元數(shù)據(jù)服務器都會主備設置,當主用元數(shù)據(jù)服務器發(fā)生故障或者人為倒換的時候,備用元數(shù)據(jù)服務器就轉(zhuǎn)換為主用元數(shù)據(jù)服務器繼續(xù)當前的業(yè)務。當主用元數(shù)據(jù)服務器發(fā)生故障需主備轉(zhuǎn)換或人為倒換時,備用元數(shù)據(jù)服務器需將主用元數(shù)據(jù)服務器上當前的所有動態(tài)數(shù)據(jù)進行同步,才能保證動態(tài)數(shù)據(jù)區(qū)內(nèi)對應的操作不會失敗。但現(xiàn)有在主備倒換過程中,往往因為主用元數(shù)據(jù)服務器上的動態(tài)數(shù)據(jù)過多,備用元數(shù)據(jù)服務器不能在有效的時間內(nèi)將主用元數(shù)據(jù)服務器上的所有動態(tài)數(shù)據(jù)進行同步、或即使能同步但同步不夠及時,導致動態(tài)數(shù)據(jù)區(qū)內(nèi)的一些操作失敗,進而導致一些業(yè)務不能正常進行,大大降低用戶的體驗。

      發(fā)明內(nèi)容
      本發(fā)明要解決的主要技術(shù)問題是,提供一種動態(tài)數(shù)據(jù)主備同步的方法、系統(tǒng)及一種元數(shù)據(jù)服務器,可在主備倒換時,可保證備用元數(shù)據(jù)服務器能及時的將主用元數(shù)據(jù)服務器上的動態(tài)數(shù)據(jù)進行同步,避免動態(tài)數(shù)據(jù)同步失敗導致的動態(tài)數(shù)據(jù)區(qū)內(nèi)的操作失敗,進而影響用戶體驗的情況發(fā)生。為解決上述技術(shù)問題,本發(fā)明提供一種動態(tài)數(shù)據(jù)主備同步的方法,包括主用元數(shù)據(jù)服務器接收到客戶端發(fā)送的文件編輯請求時,根據(jù)所述文件編輯請求在其動態(tài)數(shù)據(jù)存儲模塊內(nèi)更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并對應更新其失步數(shù)據(jù)存儲模塊內(nèi)失步隊列中所述文件的失步記錄;主用元數(shù)據(jù)服務器判斷預設的同步周期到達時,根據(jù)所述失步隊列中的失步記錄,將所述動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步。在本發(fā)明的一種實施例中,主用元數(shù)據(jù)服務器對應更新其失步數(shù)據(jù)存儲模塊內(nèi)失步隊列中所述文件的失步記錄包括所述主用元數(shù)據(jù)服務器查找其失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在該文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建與所述文件編輯請求對應的失步記錄;如存在,則對其做與所述文件編輯請求相對應的更新。在本發(fā)明的一種實施例中,所述失步記錄包括文件唯一標識和編輯操作類型。在本發(fā)明的一種實施例中,所述文件編輯請求包括文件打開請求,所述主用元數(shù)
      5據(jù)服務器接收到文件打開請求時,在其動態(tài)數(shù)據(jù)存儲模塊和失步數(shù)據(jù)存儲模塊分別更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點和失步記錄包括 主用元數(shù)據(jù)服務器查找其動態(tài)數(shù)據(jù)存儲模塊內(nèi)是否存在所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點,如不存在,則在動態(tài)數(shù)據(jù)存儲模塊創(chuàng)建所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并在所述失步隊列中創(chuàng)建所述文件的失步記錄,設置其編輯操作類型為打開add ;如存在,則對所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點更新新客戶端的相關信息;并查找其失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在所述文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建所述文件的失步記錄,并設置其編輯操作類型為修改mod ;如存在,則保持其編輯操作類型不變。在本發(fā)明的一種實施例中,所述文件編輯請求包括文件修改請求,所述主用元數(shù)據(jù)服務器接收到文件修改請求時,在其動態(tài)數(shù)據(jù)存儲模塊和失步數(shù)據(jù)存儲模塊分別更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點和失步記錄包括主用元數(shù)據(jù)服務器根據(jù)所述文件修改請求在其動態(tài)數(shù)據(jù)存儲模塊內(nèi)更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并查找其失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在所述文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建所述文件的失步記錄,并設置其編輯操作類型為修改mod ;如存在,則保持其編輯操作類型不變。在本發(fā)明的一種實施例中,所述文件編輯請求包括文件關閉請求,所述主用元數(shù)據(jù)服務器接收到文件關閉請求時,在其動態(tài)數(shù)據(jù)存儲模塊和失步數(shù)據(jù)存儲模塊分別更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點和失步記錄包括主用元數(shù)據(jù)服務器根據(jù)所述文件關閉請求在其動態(tài)數(shù)據(jù)存儲模塊內(nèi)更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并進一步根據(jù)所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點是否還在被其他客戶端持有更新所述文件在所述失步隊列中的失步記錄。在本發(fā)明的一種實施例中,主用元數(shù)據(jù)服務器根據(jù)所述文件是否還在被其他客戶端使用更新所述文件在所述失步隊列中的失步記錄包括若所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點沒有被其他客戶端持有,則查找所述失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在所述文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建所述文件的失步記錄,并設置其編輯操作類型為刪除de 1 ;如存在,則判斷其編輯操作類型,如其編輯操作類型為add,則將所述文件的失步記錄刪除;否則,將其編輯操作類型更新為刪除del ;若所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點被其他客戶端持有,則查找所述失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在所述文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建所述文件的失步記錄,并設置其編輯操作類型為修改mod ;如存在,則保持其編輯操作類型不變。在本發(fā)明的一種實施例中,所述主用元數(shù)據(jù)服務器判斷預設的同步周期是否到達時,還判斷所述失步隊列中的記錄個數(shù)是否達到預設值,若達到所述預設值,則根據(jù)所述失步隊列中的失步記錄,將所述動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步。在本發(fā)明的一種實施例中,所述主用元數(shù)據(jù)服務器根據(jù)所述失步隊列中的失步記錄,將所述動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步包括
      主用元數(shù)據(jù)服務器按一定的順序從所述失步隊列中摘取失步記錄到同步數(shù)據(jù)存儲模塊,并將動態(tài)數(shù)據(jù)存儲模塊內(nèi)與摘取的失步記錄相對應的動態(tài)數(shù)據(jù)傳送到同步數(shù)據(jù)存儲模塊;主用元數(shù)據(jù)服務器向備用元數(shù)據(jù)服務器發(fā)送同步消息,完成與備用元數(shù)據(jù)服務器的動態(tài)數(shù)據(jù)同步。在本發(fā)明的一種實施例中,所述主用元數(shù)據(jù)服務器將動態(tài)數(shù)據(jù)存儲模塊內(nèi)與摘取的失步記錄相對應的動態(tài)數(shù)據(jù)傳送到同步數(shù)據(jù)存儲模塊的同時,還包括將客戶端數(shù)據(jù)區(qū)中的狀態(tài)信息傳送到所述同步數(shù)據(jù)存儲模塊中。本發(fā)明還提供了一種元數(shù)據(jù)服務器,包括失步數(shù)據(jù)存儲模塊,用于存儲失步隊列,所述失步隊列中包括用于記錄所述元數(shù)據(jù)服務器的動態(tài)數(shù)據(jù)存儲模塊內(nèi)的文件動態(tài)數(shù)據(jù)節(jié)點編輯記錄的失步記錄;處理模塊,用于接收到客戶端發(fā)送的文件編輯請求時,根據(jù)所述文件編輯請求更新所述動態(tài)數(shù)據(jù)存儲模塊中所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并對應更新所述失步數(shù)據(jù)存儲模塊內(nèi)失步隊列中所述文件的失步記錄;計時模塊,用于設定同步周期,并實時檢測同步周期點是否到達;同步模塊,用于在接收到計時模塊發(fā)送的同步周期到達通知時,根據(jù)所述失步隊列中的失步記錄,將所述動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步。在本發(fā)明的一種實施例中,所述處理模塊對應更新其失步數(shù)據(jù)存儲模塊內(nèi)所述文件的失步記錄包括所述處理模塊查找其失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在該文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建與所述文件編輯請求相對應的失步記錄;如存在,則對其做與所述文件編輯請求相對應的更新。本發(fā)明還提供了一種動態(tài)數(shù)據(jù)主備同步的系統(tǒng),包括相互通信連接的主用元數(shù)據(jù)服務器和備用元數(shù)據(jù)服務器,其中,所述主用元數(shù)據(jù)服務器包括失步數(shù)據(jù)存儲模塊,用于存儲失步隊列,所述失步隊列中包括用于記錄所述元數(shù)據(jù)服務器的動態(tài)數(shù)據(jù)存儲模塊內(nèi)的文件動態(tài)數(shù)據(jù)節(jié)點編輯記錄的失步記錄;處理模塊,用于接收到客戶端發(fā)送的文件編輯請求時,根據(jù)所述文件編輯請求更新所述動態(tài)數(shù)據(jù)存儲模塊中所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并對應更新所述失步數(shù)據(jù)存儲模塊內(nèi)失步隊列中所述文件的失步記錄;計時模塊,用于設定同步周期,并實時檢測同步周期點是否到達;同步模塊,用于在接收到計時模塊發(fā)送的同步周期到達通知時,根據(jù)所述失步隊列中的失步記錄,將所述動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步。本發(fā)明的有益效果是本發(fā)明中的主用元數(shù)據(jù)服務器接收到客戶端發(fā)送的文件編輯請求時,根據(jù)接收到文件編輯請求在其動態(tài)數(shù)據(jù)存儲模塊內(nèi)所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點進行更新,并對應的對失步數(shù)據(jù)存儲模塊內(nèi)失步隊列中該文件的失步記錄進行更新;并在同步周期到達時,則向與之對應的備用元數(shù)據(jù)服務器發(fā)送同步請求;并在接收到備用元數(shù)據(jù)服務器的同步請求響應后,根據(jù)所述失步隊列中的失步記錄,將所述動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步。即本發(fā)明中的主用元數(shù)據(jù)服務器并非只是在主備倒換時,才向備用元數(shù)據(jù)服務器發(fā)起動態(tài)數(shù)據(jù)同步請求,而是在設定的周期到達時定時觸發(fā)主、備元數(shù)據(jù)服務器之間動態(tài)數(shù)據(jù)區(qū)的同步;因此當真正主備倒換的時候, 主、備元數(shù)據(jù)服務器之間只需要同步剩余少量的動態(tài)數(shù)據(jù),可使備用元數(shù)據(jù)服務器的動態(tài)數(shù)據(jù)區(qū)迅速建立,完成備轉(zhuǎn)主的切換,進而保證動態(tài)數(shù)據(jù)區(qū)內(nèi)的各操作順利進行,提高用戶體驗的滿意度。


      圖1為本發(fā)明一種實施例的動態(tài)數(shù)據(jù)主備同步方法的流程圖;圖2為本發(fā)明一種實施例的元數(shù)據(jù)服務器的結(jié)構(gòu)框圖;圖3為本發(fā)明一種實施例的動態(tài)數(shù)據(jù)主備同步系統(tǒng)框圖。
      具體實施例方式下面通過具體實施方式
      結(jié)合附圖對本發(fā)明作進一步詳細說明。請參見圖1,本例中的,主用元數(shù)據(jù)服務器接收到客戶端發(fā)送的文件編輯請求時, 根據(jù)接收到的文件編輯請求在其動態(tài)數(shù)據(jù)存儲模塊內(nèi)更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并對應的更新其失步數(shù)據(jù)存儲模塊內(nèi)失步隊列中所述文件的失步記錄;值得注意的是,圖1 中更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點和更新所述文件的失步記錄兩個步驟之間并無嚴格的時間順序,可先更新文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點,也可先更新文件的失步記錄,或者二者同時更新;主用元數(shù)據(jù)服務器判斷預設的同步周期到達時,根據(jù)失步隊列中的各文件的失步記錄,將動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步;具體為主用元數(shù)據(jù)服務器判斷預設的同步周期是否到達,如同步周期到達,則向與之對應的備用元數(shù)據(jù)服務器發(fā)送同步請求;主用元數(shù)據(jù)服務器在接收到備用元數(shù)據(jù)服務器反饋的同步請求響應后,根據(jù)失步隊列中的各文件的失步記錄,將動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步。即本例中的主用元數(shù)據(jù)服務器并非只是在主備倒換時,才向備用元數(shù)據(jù)服務器發(fā)起動態(tài)數(shù)據(jù)同步請求,而是定時觸發(fā)主、備元數(shù)據(jù)服務器之間動態(tài)數(shù)據(jù)區(qū)的同步;因此當真正主備倒換的時候,主、備元數(shù)據(jù)服務器之間只需要同步剩余的少量還未來得及同步的動態(tài)數(shù)據(jù),即可使備用元數(shù)據(jù)服務器的動態(tài)數(shù)據(jù)區(qū)迅速建立,完成備轉(zhuǎn)主的切換,進而保證動態(tài)數(shù)據(jù)區(qū)內(nèi)的各操作順利進行。本例中的文件編輯請求包括文件打開請求、文件修改請求以及文件關閉請求。本例中主用元數(shù)據(jù)服務器接收到文件編輯請求后,更新其失步數(shù)據(jù)存儲模塊內(nèi)失步隊列中該文件的失步記錄具體可如下主用元數(shù)據(jù)服務器查找失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在該文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建與接收到的文件編輯請求相對應的失步記錄; 如存在,則對該文件的失步記錄做與接收到的文件編輯請求相對應的更新。值得注意的是, 本例中創(chuàng)建與接收到的文件編輯請求對應的失步記錄以及做與接收到的文件編輯請求對
      8應的更新,并非是指根據(jù)接收到的編輯請求來創(chuàng)建或更新。本例中接收到的文件編輯請求時創(chuàng)建和更新失步記錄的一個條件,但并不是唯一條件。本例中文件的失步記錄包括文件唯一標識和編輯操作類型。創(chuàng)建失步記錄時,包括創(chuàng)建該文件的唯一標識和其與接收到的文件編輯請求對應的編輯操作類型。本例中,失步記錄編輯操作類型并不是根據(jù)接收到文件編輯請求決定,還根據(jù)動態(tài)數(shù)據(jù)區(qū)內(nèi)是否存在文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點的因素來決定,即還根據(jù)備用元數(shù)據(jù)服務器當前是否包括這個文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點來決定。下面針對不同的文件編輯請求對文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點和失步記錄進行更新分別說明,本例中的更新包括重新建立和重新編輯等操作。主用元數(shù)據(jù)服務器接收到文件打開請求時,查找其動態(tài)數(shù)據(jù)存儲模塊內(nèi)是否存在該文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點,如不存在,則在動態(tài)數(shù)據(jù)存儲模塊創(chuàng)建該文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并在其失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中創(chuàng)建該文件的失步記錄,此時由于動態(tài)數(shù)據(jù)區(qū)內(nèi)不存在該文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點,表明當前備用元數(shù)據(jù)服務器中并沒有保存該文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點,因此設置其編輯操作類型為打開add,也可理解為增加,表明備用原數(shù)據(jù)服務器當前并無該文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;如動態(tài)數(shù)據(jù)存儲模塊內(nèi)存在該文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點,則對該節(jié)點更新打開該文件的新客戶端的相關信息;并查找其失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在該文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建所述文件的失步記錄,并設置其編輯操作類型為修改mod,此時表明備用元數(shù)據(jù)服務器已經(jīng)保存有該文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點,但是其狀態(tài)與主用元數(shù)據(jù)服務器中的當前狀態(tài)不一致,需更新;如存在,則保持其編輯操作類型不變。主用元數(shù)據(jù)服務器接收到文件修改請求時,主用元數(shù)據(jù)服務器根據(jù)所述文件修改請求在其動態(tài)數(shù)據(jù)存儲模塊內(nèi)更新文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點,例如該修改可能是對文件的文件長度、屬性等修改,應用元數(shù)據(jù)服務器根據(jù)具體的修改,對該文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點做相應的更新。主用元數(shù)據(jù)服務器查找其失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在所述文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建所述文件的失步記錄,并設置其編輯操作類型為修改mod ;如存在,則保持其編輯操作類型不變。主用元數(shù)據(jù)服務器接收到文件關閉請求時,根據(jù)該文件關閉請求在其動態(tài)數(shù)據(jù)存儲模塊內(nèi)更新該文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并進一步根據(jù)該文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點是否還在被其他客戶端持有更新該文件在所述失步隊列中的失步記錄,具體如下若所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點沒有被其他客戶端持有,表明當前沒有用戶在使用該文件,因此需釋放該文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點。同時,查找所述失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在所述文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建所述文件的失步記錄,并設置其編輯操作類型為刪除de 1 ;如存在,則判斷其編輯操作類型,如其編輯操作類型為add,表面?zhèn)溆迷獢?shù)據(jù)服務器中當前并沒有該文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點,且也還未還來得及同步,此時將所述文件的失步記錄刪除,因為已經(jīng)沒必要讓備用元數(shù)據(jù)服務器知道這一過程,減小主備之間同步的動態(tài)數(shù)據(jù)量,提高其動態(tài)效率;如其編輯操作類型不為 add,此時表明備用元數(shù)據(jù)服務器中當前保存有該文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點,需通知其釋放該節(jié)點,因此將該文件記錄的其編輯操作類型更新為刪除de 1。若所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點仍被其他客戶端持有,則查找所述失步數(shù)據(jù)存儲模
      9塊內(nèi)的失步隊列中是否存在所述文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建所述文件的失步記錄,并設置其編輯操作類型為修改mod ;如存在,則保持其編輯操作類型不變。值得注意的是,本例中觸發(fā)動態(tài)數(shù)據(jù)同步的條件除了設置同步周期外,還可根據(jù)失步隊列中包括的文件的失步記錄個數(shù)是否達到預設的個數(shù)來決定是否啟動觸發(fā)過程,二者只要一個條件滿足時,即可觸發(fā)同步過程。因此本例中的主用元數(shù)據(jù)服務器判斷預設的同步周期是否到達時,還判斷失步隊列中的失步記錄的個數(shù)是否達到預設值,若達到所述預設值,則向與之對應的備用元數(shù)據(jù)服務器發(fā)送同步請求;優(yōu)選的,本例中的預設值可為失步隊列允許存儲失步記錄的最大值。當同步周期到達或失步隊列中的失步記錄的個數(shù)達到預設值時,主用元數(shù)據(jù)服務器根據(jù)失步隊列中的失步記錄,將動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步的具體過程如下主用元數(shù)據(jù)服務器按一定的順序從所述失步隊列中摘取失步記錄到動態(tài)數(shù)據(jù)存儲模塊,優(yōu)選本例中的失步隊列可通過鏈表實現(xiàn),在主用元數(shù)據(jù)服務器的文件控制數(shù)據(jù)區(qū)增加相應的控制字段,用于記錄對應失步隊列中的記錄的地址,摘取失步記錄時,可選擇從失步隊列鏈表的表頭開始摘取,每次同步時,摘取的記錄個數(shù)可預先設置,同時將動態(tài)數(shù)據(jù)存儲模塊內(nèi)與摘取的失步記錄相對應的動態(tài)數(shù)據(jù)也傳送到同步數(shù)據(jù)存儲模塊,具體可通過復制方式復制到同步數(shù)據(jù)區(qū);本例中,摘取記錄的實際個數(shù)具體設置可根據(jù)同步數(shù)據(jù)存儲模塊的大小設置,即摘取的記錄個數(shù)直到同步數(shù)據(jù)存儲模塊存儲與這些記錄對應的動態(tài)數(shù)據(jù)區(qū)節(jié)點存儲滿為止;當摘取完失步隊列中所有失步記錄時,不管是否達到預設的個數(shù),都認為摘取完畢。然后主用元數(shù)據(jù)服務器向備用元數(shù)據(jù)服務器發(fā)送同步消息,完成與備用元數(shù)據(jù)服務器的動態(tài)數(shù)據(jù)同步。本例中主用元數(shù)據(jù)服務器向備用元數(shù)據(jù)服務器發(fā)送同步消息之前,還可包括將同步數(shù)據(jù)存儲模塊存儲的數(shù)據(jù)進行加鎖的步驟;如果收到備用元數(shù)據(jù)服務器的同步成功的響應,解鎖同步數(shù)據(jù)存儲模塊;如果超過預設的響應時間都沒有收到備用元數(shù)據(jù)服務器同步成功的響應,同步數(shù)據(jù)區(qū)超時重發(fā)。如果重發(fā)次數(shù)到達預設的上限值,將摘取的記錄歸還到失步隊列,解鎖同步數(shù)據(jù)區(qū),歸還過程為判斷摘取的失步記錄中編輯操作類型為add或者mod的,在當前的狀態(tài)中是否已經(jīng)刪除或變化,如已經(jīng)刪除,則將對應的失步記錄刪除,保證主備都已知曉關閉的文件不再放在失步隊列上,如發(fā)生變化,則將其更新為最新的狀態(tài),然后順序的將未變化的和更新后的失步記錄歸還到失步隊列的隊尾,以保證沒關閉的文件,再次發(fā)生變化的時候,可以再次同步到備機。在下一次同步啟動前,在該隊列中實時更新,并在下一次同步到達時按上述過程進行動態(tài)。本例中在同步時,主用元數(shù)據(jù)服務器將動態(tài)數(shù)據(jù)存儲模塊內(nèi)與摘取的失步記錄相對應的動態(tài)數(shù)據(jù)傳送到同步數(shù)據(jù)存儲模塊的同時,還可將客戶端數(shù)據(jù)區(qū)中的狀態(tài)信息傳送到所述同步數(shù)據(jù)存儲模塊中,讓備用元數(shù)據(jù)服務器及時了解當前客戶端的在線情況。在本例中,當發(fā)生主、被倒換時,主用元數(shù)據(jù)服務器和備用元數(shù)據(jù)服務器可按照上述過程實現(xiàn)倒換時剩余的還未同步的動態(tài)數(shù)據(jù)。且由上述內(nèi)容可知,本發(fā)明提供的動態(tài)數(shù)據(jù)主備同步的方法中,動態(tài)數(shù)據(jù)主備同步并非僅發(fā)生于主備倒換時,而是在設定的同步周期到達時或失步隊列滿時,都可提前完成失步隊列中的失步記錄所對應的動態(tài)數(shù)據(jù);因此當在發(fā)生主備倒換時,主、備用元數(shù)據(jù)服務器之間未同步的動態(tài)數(shù)據(jù)就很少了,可使備用元數(shù)據(jù)服務器的動態(tài)數(shù)據(jù)區(qū)迅速建立,完成備轉(zhuǎn)主的切換,進而保證動態(tài)數(shù)據(jù)區(qū)內(nèi)的各操作順利進行,提高用戶體驗的滿意度。請參見圖2,本例中還提供了一種元數(shù)據(jù)服務器,包括失步數(shù)據(jù)存儲模塊,用于存儲失步隊列,失步隊列中包括用于記錄所述元數(shù)據(jù)服務器的動態(tài)數(shù)據(jù)存儲模塊內(nèi)的文件動態(tài)數(shù)據(jù)節(jié)點編輯記錄的失步記錄;處理模塊,用于接收到客戶端發(fā)送的文件編輯請求時,按上述方法分別更新所述動態(tài)數(shù)據(jù)存儲模塊和失步數(shù)據(jù)存儲模塊中所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點和失步記錄;計時模塊,用于設定同步周期,并實時檢測同步周期點是否到達;同步模塊,用于在接收到計時模塊發(fā)送的同步周期到達通知時,向相應的備用元數(shù)據(jù)服務器發(fā)送同步請求;并在接收到所述備用元數(shù)據(jù)服務器的同步請求響應后,根據(jù)所述失步隊列中的失步記錄,將所述動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步,具體同步方法見上述方法中示出的部分。本例中的元數(shù)據(jù)服務器還可包括檢測模塊,用于實時檢測失步隊列中的失步記錄數(shù)量是否達到預設值,并在達到時,通知同步模塊,本例中的同步模塊還用于接收到該通知后,按上述方法完成主、備之間的動態(tài)數(shù)據(jù)同步。請參見圖3,本發(fā)明還提供了一種動態(tài)數(shù)據(jù)主備同步的系統(tǒng),包括相互通信連接的主用元數(shù)據(jù)服務器和備用元數(shù)據(jù)服務器,其中,本例中的主用元數(shù)據(jù)服務器可為上述元數(shù)據(jù)服務器。值得注意的是,本例中的主用元數(shù)據(jù)服務器和備用元數(shù)據(jù)服務器是相對的,取決于元數(shù)據(jù)服務器的當前工作狀態(tài)。以上內(nèi)容是結(jié)合具體的實施方式對本發(fā)明所作的進一步詳細說明,不能認定本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬技術(shù)領域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應當視為屬于本發(fā)明的保護范圍。
      權(quán)利要求
      1.一種動態(tài)數(shù)據(jù)主備同步的方法,其特征在于包括主用元數(shù)據(jù)服務器接收到客戶端發(fā)送的文件編輯請求時,根據(jù)所述文件編輯請求在其動態(tài)數(shù)據(jù)存儲模塊內(nèi)更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并對應更新其失步數(shù)據(jù)存儲模塊內(nèi)失步隊列中所述文件的失步記錄;主用元數(shù)據(jù)服務器在判斷預設的同步周期到達時,根據(jù)所述失步隊列中的失步記錄, 將所述動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步。
      2.如權(quán)利要求1所述的方法,其特征在于,主用元數(shù)據(jù)服務器對應更新其失步數(shù)據(jù)存儲模塊內(nèi)失步隊列中所述文件的失步記錄包括所述主用元數(shù)據(jù)服務器查找其失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在該文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建與所述文件編輯請求對應的失步記錄;如存在,則對其做與所述文件編輯請求相對應的更新。
      3.如權(quán)利要求2所述的方法,其特征在于,所述失步記錄包括文件唯一標識和編輯操作類型。
      4.如權(quán)利要求3所述的方法,其特征在于,所述文件編輯請求包括文件打開請求,所述主用元數(shù)據(jù)服務器接收到文件打開請求時,在其動態(tài)數(shù)據(jù)存儲模塊和失步數(shù)據(jù)存儲模塊分別更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點和失步記錄包括主用元數(shù)據(jù)服務器查找其動態(tài)數(shù)據(jù)存儲模塊內(nèi)是否存在所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點, 如不存在,則在動態(tài)數(shù)據(jù)存儲模塊創(chuàng)建所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并在所述失步隊列中創(chuàng)建所述文件的失步記錄,設置其編輯操作類型為打開add ;如存在,則對所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點更新新客戶端的相關信息;并查找其失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在所述文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建所述文件的失步記錄,并設置其編輯操作類型為修改mod ;如存在,則保持其編輯操作類型不變。
      5.如權(quán)利要求3所述的方法,其特征在于,所述文件編輯請求包括文件修改請求,所述主用元數(shù)據(jù)服務器接收到文件修改請求時,在其動態(tài)數(shù)據(jù)存儲模塊和失步數(shù)據(jù)存儲模塊分別更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點和失步記錄包括主用元數(shù)據(jù)服務器根據(jù)所述文件修改請求在其動態(tài)數(shù)據(jù)存儲模塊內(nèi)更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并查找其失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在所述文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建所述文件的失步記錄,并設置其編輯操作類型為修改mod ;如存在,則保持其編輯操作類型不變。
      6.如權(quán)利要求3所述的方法,其特征在于,所述文件編輯請求包括文件關閉請求,所述主用元數(shù)據(jù)服務器接收到文件關閉請求時,在其動態(tài)數(shù)據(jù)存儲模塊和失步數(shù)據(jù)存儲模塊分別更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點和失步記錄包括主用元數(shù)據(jù)服務器根據(jù)所述文件關閉請求在其動態(tài)數(shù)據(jù)存儲模塊內(nèi)更新所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并進一步根據(jù)所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點是否還在被其他客戶端持有更新所述文件在所述失步隊列中的失步記錄。
      7.如權(quán)利要求6所述的方法,其特征在于,主用元數(shù)據(jù)服務器根據(jù)所述文件是否還在被其他客戶端使用更新所述文件在所述失步隊列中的失步記錄包括若所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點沒有被其他客戶端持有,則查找所述失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在所述文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建所述文件的失步記錄,并設置其編輯操作類型為刪除de 1 ;如存在,則判斷其編輯操作類型,如其編輯操作類型為add,則將所述文件的失步記錄刪除;否則,將其編輯操作類型更新為刪除 del ;若所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點被其他客戶端持有,則查找所述失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在所述文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建所述文件的失步記錄,并設置其編輯操作類型為修改mod ;如存在,則保持其編輯操作類型不變。
      8.如權(quán)利要求1-7任一項所述的方法,其特征在于,所述主用元數(shù)據(jù)服務器判斷預設的同步周期是否到達時,還判斷所述失步隊列中的記錄個數(shù)是否達到預設值,若達到所述預設值,則根據(jù)所述失步隊列中的失步記錄,將所述動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步。
      9.如權(quán)利要求8所述的方法,其特征在于,所述主用元數(shù)據(jù)服務器根據(jù)所述失步隊列中的失步記錄,將所述動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步包括主用元數(shù)據(jù)服務器按一定的順序從所述失步隊列中摘取失步記錄到同步數(shù)據(jù)存儲模塊,并將動態(tài)數(shù)據(jù)存儲模塊內(nèi)與摘取的失步記錄相對應的動態(tài)數(shù)據(jù)傳送到同步數(shù)據(jù)存儲模塊;主用元數(shù)據(jù)服務器向備用元數(shù)據(jù)服務器發(fā)送同步消息,完成與備用元數(shù)據(jù)服務器的動態(tài)數(shù)據(jù)同步。
      10.如權(quán)利要求9所述的方法,其特征在于,所述主用元數(shù)據(jù)服務器將動態(tài)數(shù)據(jù)存儲模塊內(nèi)與摘取的失步記錄相對應的動態(tài)數(shù)據(jù)傳送到同步數(shù)據(jù)存儲模塊的同時,還包括將客戶端數(shù)據(jù)區(qū)中的狀態(tài)信息傳送到所述同步數(shù)據(jù)存儲模塊中。
      11.一種元數(shù)據(jù)服務器,其特征在于包括失步數(shù)據(jù)存儲模塊,用于存儲失步隊列,所述失步隊列中包括用于記錄所述元數(shù)據(jù)服務器的動態(tài)數(shù)據(jù)存儲模塊內(nèi)的文件動態(tài)數(shù)據(jù)節(jié)點編輯記錄的失步記錄;處理模塊,用于接收到客戶端發(fā)送的文件編輯請求時,根據(jù)所述文件編輯請求更新所述動態(tài)數(shù)據(jù)存儲模塊中所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并對應更新所述失步數(shù)據(jù)存儲模塊內(nèi)失步隊列中所述文件的失步記錄;計時模塊,用于設定同步周期,并實時檢測同步周期點是否到達;同步模塊,用于在接收到計時模塊發(fā)送的同步周期到達通知時,根據(jù)所述失步隊列中的失步記錄,將所述動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同止少O
      12.如權(quán)利要求11所述的元數(shù)據(jù)服務器,其特征在于,所述處理模塊對應更新其失步數(shù)據(jù)存儲模塊內(nèi)所述文件的失步記錄包括所述處理模塊查找其失步數(shù)據(jù)存儲模塊內(nèi)的失步隊列中是否存在該文件的失步記錄,如不存在,則在所述失步隊列中創(chuàng)建與所述文件編輯請求相對應的失步記錄;如存在,則對其做與所述文件編輯請求相對應的更新。
      13.一種動態(tài)數(shù)據(jù)主備同步的系統(tǒng),其特征在于,包括相互通信連接的主用元數(shù)據(jù)服務器和備用元數(shù)據(jù)服務器,其中,所述主用元數(shù)據(jù)服務器包括失步數(shù)據(jù)存儲模塊,用于存儲失步隊列,所述失步隊列中包括用于記錄所述元數(shù)據(jù)服務器的動態(tài)數(shù)據(jù)存儲模塊內(nèi)的文件動態(tài)數(shù)據(jù)節(jié)點編輯記錄的失步記錄;處理模塊,用于接收到客戶端發(fā)送的文件編輯請求時,根據(jù)所述文件編輯請求更新所述動態(tài)數(shù)據(jù)存儲模塊中所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點;并對應更新所述失步數(shù)據(jù)存儲模塊內(nèi)失步隊列中所述文件的失步記錄;計時模塊 ,用于設定同步周期,并實時檢測同步周期點是否到達; 同步模塊,用于在接收到計時模塊發(fā)送的同步周期到達通知時,根據(jù)所述失步隊列中的失步記錄,將所述動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同止少O
      全文摘要
      本發(fā)明公開了一種動態(tài)數(shù)據(jù)主備同步的方法、系統(tǒng)及一種元數(shù)據(jù)服務器,主用元數(shù)據(jù)服務器接收到客戶端發(fā)送的文件編輯請求時,根據(jù)該請求對所述文件的動態(tài)數(shù)據(jù)區(qū)節(jié)點進行更新,并對應的對失步數(shù)據(jù)存儲模塊內(nèi)失步隊列中該文件的失步記錄進行更新;并在同步周期到達時,根據(jù)所述失步隊列中的失步記錄,將所述動態(tài)數(shù)據(jù)存儲模塊內(nèi)相應的動態(tài)數(shù)據(jù)與所述備用元數(shù)據(jù)服務器進行同步。即本發(fā)明中的主用元數(shù)據(jù)服務器在設定的周期到達時定時觸發(fā)主、備元數(shù)據(jù)服務器之間動態(tài)數(shù)據(jù)區(qū)的同步;因此當真正主備倒換的時候,主、備元數(shù)據(jù)服務器之間只需要同步剩余少量的動態(tài)數(shù)據(jù),可使備用元數(shù)據(jù)服務器的動態(tài)數(shù)據(jù)區(qū)迅速建立,進而保證動態(tài)數(shù)據(jù)區(qū)內(nèi)的各操作順利進行。
      文檔編號H04L29/08GK102447742SQ20111037813
      公開日2012年5月9日 申請日期2011年11月24日 優(yōu)先權(quán)日2011年11月24日
      發(fā)明者李丹, 李彬, 王沖 申請人:中興通訊股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1