一種緩沖式云存儲數據同步的方法和裝置制造方法
【專利摘要】本發明提供一種緩沖式云存儲數據同步方法和裝置,解決了當對用戶數據進行頻繁短促的更新時造成的同步流量浪費的技術問題。包括:中間件裝置接收待存儲在云端的第一文件,第一文件為用戶設備中的文件;中間件裝置獲取第一文件的容量值,判斷第一文件的容量值是否大于等于預設閾值;在第一文件的容量值小于預設閾值,且中間件裝置在接收第一文件之后的第一預設時間段內沒有接收到第二文件時,將第一文件發送至與云端連接的云存儲同步文件夾中,其中,第二文件為待存儲在云端的文件。本發明利用批量同步的方法及裝置,有效降低云存儲應用的網絡流量開銷,并且不會對用戶體驗造成明顯影響。
【專利說明】—種緩沖式云存儲數據同步的方法和裝置
【技術領域】
[0001]本發明涉及計算機領域,特別是指一種緩沖式云存儲數據同步的方法和裝置。
【背景技術】
[0002]作為個人存儲、文件同步和數據分享的有力工具,云存儲服務(如Dropbox、Google Drive、OneDrive、iCloud Drive等)近年來極為流行,為用戶提供了泛在、可靠、安全的數據存儲服務,并且可以方便地同步數據到多臺設備或多個用戶。
[0003]一個云存儲系統典型地由兩部分構成:(I)前端裝置,安裝并運行在用戶設備上;
(2)后端云,存放用戶數據,一般由大規模數據中心組成。用戶在安裝客戶端應用時一般需要指定一個特殊的“同步文件夾”,每當用戶在此文件夾中創建文件或修改文件時,所做的數據更新都會被客戶端應用自動同步到后端云,同步過程對用戶幾乎完全透明。考慮到數以億計的用戶已經將他們的數據托付到云存儲中,云存儲應用如何有效地利用網絡資源、進行高效的內容分發就變得極為重要。
[0004]然而,當前端裝置進行頻繁短促的數據更新時,云存儲應用所產生的網絡流量呈現“病態的低效”。具體來說,每當同步文件夾中發生數據更新時,云存儲應用就會計算二值差異并壓縮之,再將壓縮后的二值差異發送到云端,這一過程不可避免地要同時發送一些“會話維護數據”(Sess1n maintenance data),從而給云端、前端裝置以及傳輸網絡都帶來沉重卻并非必要的流量負擔。操作者稱為云存儲內容分發的“同步流量濫用問題”(Datasync traffic overuse problem), “同步流量濫用問題”不僅在用戶設備中普遍存在,而且在各大主流云存儲系統中屢見不鮮。據測量數據顯示:系統中至少有8.5%的用戶、其超過10%的數據流量來自于頻繁短促數據更新,而且,當某文件被多個用戶分享時,流量濫用問題會變得更為尖銳。
【發明內容】
[0005]本發明提出一種緩沖式云存儲數據同步的方法和裝置,解決了現有技術中當對用戶數據進行頻繁短促的更新時造成的同步流量浪費的技術問題。
[0006]第一方面,本發明提供一種緩沖式云存儲數據同步的方法,包括以下步驟:
[0007]中間件裝置接收待存儲在云端的第一文件,第一文件為用戶設備中的文件;
[0008]中間件裝置獲取第一文件的容量值,判斷第一文件的容量值是否大于等于預設閾值;
[0009]在第一文件的容量值小于預設閾值,且中間件裝置在接收第一文件之后的第一預設時間段內沒有接收到第二文件時,將第一文件發送至與云端連接的云存儲同步文件夾中,其中,第二文件為待存儲在云端的文件。
[0010]優選的,所述方法還包括:
[0011]在第一文件的容量值小于預設閾值,且中間件裝置在接收第一文件之后的第一預設時間段內接收有第二文件時,則獲取第二文件的容量值;
[0012]判斷第一文件和第二文件的總容量值是否小于預設閾值;
[0013]在第一文件和第二文件的總容量值大于等于預設閾值時,中間件裝置將第一文件和第二文件直接發送至與云端連接的同步文件夾中。
[0014]優選的,所述方法還包括:
[0015]在第一文件和第二文件的總容量值小于預設閾值時,且在中間件裝置接收第二文件之后的第一預設時間段內沒有接收到其他文件時,將第一文件和第二文件發送至與云端連接的云存儲同步文件夾中。
[0016]優選的,所述方法還包括:
[0017]在第一文件和第二文件的總容量值小于預設閾值時,且在中間件裝置接收第二文件之后的第一預設時間段內接收有其他文件時,確定第一文件、第二文件以及其他文件的所有容量值;
[0018]直至中間件裝置中文件的容量值大于等于預設閾值時,將中間件裝置中的所有文件發送至與云端連接的云存儲同步文件夾中。
[0019]優選的,方法還包括:
[0020]中間件裝置在接收第二文件之后,且第一文件和第二文件的容量值小于預設閾值時,中間件裝置中的計數器清零,重新計時,判斷在第一預設時間內是否接收到其他文件。
[0021]第二方面,本發明提供一種緩沖式云存儲數據同步裝置,包括:
[0022]接收模塊,用于接收待存儲在云端的文件;
[0023]容量值獲取模塊,用于獲取文件的容量值;
[0024]判斷模塊,用于判斷文件的容量值與預設閾值的大小;
[0025]發送模塊,在文件的容量值小于預設閾值時,將文件經過預設時間段后發送至與z?端連接的z?存儲冋步文件夾中。
[0026]優選的,容量值獲取模塊用于獲取所述文件的壓縮版本的容量大小。
[0027]優選的,文件包括新文件和修改文件,容量值獲取模塊獲取新文件的壓縮版本和修改文件的改變部分的壓縮版本大小。
[0028]優選的,容量值獲取模塊通過gzip工具計算出文件的壓縮版本的大小。
[0029]本發明提出了一種緩沖式云存儲數據同步的方法和裝置,中間件裝置可以前動地探測和批處理發生在緩存文件夾中的頻繁短促的文件更新,這些被批處理的文件更新被發送到本地同步文件夾,再被真正同步到后端云存儲中,從而有效降低云存儲應用的網絡流量開銷,并且不會對用戶體驗造成明顯影響。
【專利附圖】
【附圖說明】
[0030]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0031]圖1為本發明一實施例提供的緩沖式云存儲數據同步的方法的流程示意圖;
[0032]圖2為本發明一實施例提供的緩沖式云存儲數據同步的方法的流程示意圖;;
[0033]圖3為本發明一種緩沖式云存儲數據同步裝置的原理框圖。
【具體實施方式】
[0034]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清除、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例,基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0035]圖1為本發明中一種緩沖式云存儲數據同步的方法的流程示意圖,如圖1所示,該緩沖式云存儲數據同步的方法包括如下步驟:
[0036]101、中間件裝置接收待存儲在云端的第一文件,第一文件為用戶設備中的文件。
[0037]舉例來說,中間件裝置對應于本地硬盤上的一個緩存文件夾,文件夾名可為SavingBox,用于接收待存儲在云端的第一文件,第一文件為用戶設備中的文件,前端裝置對應建立一個本地的同步文件夾,中間件裝置定期刷新緩存文件夾,檢測緩存文件夾的文件是否發生更新。
[0038]102、中間件裝置獲取第一文件的容量值,判斷第一文件的容量值是否大于等于預設閾值。
[0039]在本實施例中,若緩存文件夾的文件發生更新,中間件裝置獲取第一文件的容量值,中間件裝置維護緩存文件夾中尚未被發送到本地的同步文件夾中第一文件的容量大小,中間件裝置內的容量計數器獲取第一文件的容量值,并判斷第一文件的容量值和預設閾值C的大小。
[0040]在本實施例中,預設閾值C可為用戶定義的值,可根據實際需要設置,本實施例不對其進行限定。
[0041]103、在第一文件的容量值小于預設閾值,且中間件裝置在接收第一文件之后的第一預設時間段內沒有接收到第二文件時,將第一文件發送至與云端連接的云存儲同步文件夾中,其中,第二文件為待存儲在云端的文件。
[0042]舉例來說,中間件裝置內部設置有預定的時間變量t和容量變量C,這兩個變量控制了文件更新和處理的頻率,時間變量t決定了多長時間推送一次緩存文件夾中的文件到本地的同步文件夾,容量變量c決定了用來確保頻繁短促的文件更新被成批同步的最小容量,時間變量t采用計時器計時,每當一個文件被創建或修改時計時器的值被重置為O。
[0043]當第一文件的容量值小于預設閾值C,且中間件裝置在接收第一文件之后的第一預設時間段Tl內沒有接收到第二文件時,則將第一文件發送至與云端連接的本地的同步文件夾中,當同步文件夾中接收到第一文件時,第一文件都會被前端裝置應用自動同步到后端云裝置。
[0044]本實施例中的預設閾值C為250KB,但不限于250KB,第一預設時間段Tl設置為5秒,但不限定于5秒,用戶可根據實際生產需要進行預設閾值C和第一預設時間段Tl的設計。
[0045]本實施例中,中間件裝置維護SavingBox文件夾中尚未被推送到真正的云存儲同步文件夾中的所有數據更新的大小。如果文件的容量大小超過預設閾值C,那么SavingBox中的新文件和被更新文件就立刻被推送到真正的云存儲同步文件夾,如果文件的容量值小于預設閾值C,則判斷中間件裝置在接收第一文件之后的第一預設時間段內沒有接收到第二文件時,若否,則將第一文件發送到同步文件夾中,從而來保護云存儲應用免受流量濫用問題的影響。
[0046]圖2為本發明中一種緩沖式云存儲數據同步的方法的流程示意圖,如圖2所示,其中,圖2與圖1不同的是,圖2中還包括步驟204至步驟206,其中步驟201和圖1中的步驟101相同,步驟202和圖1中的步驟102相同,其中步驟203和圖1中的步驟103相同,該處不在說明。
[0047]該緩沖式云存儲數據同步的方法包括如下步驟:
[0048]204、在第一文件的容量值小于預設閾值,且中間件裝置在接收第一文件之后的第一預設時間段內接收有第二文件時,則獲取第二文件的容量值。
[0049]在本實施例中,若緩存文件夾的文件發生更新,中間件裝置獲取第二文件的容量值,中間件裝置維護緩存文件夾中尚未被發送到本地的同步文件夾中第二文件的容量大小,中間件裝置內的容量計數器獲取第二文件的容量值。
[0050]在本實施例中,預設閾值C可為用戶定義的值,可根據實際需要設置,本實施例不對其進行限定。
[0051]205、判斷第一文件和第二文件的總容量值是否小于預設閾值。
[0052]其中,中間件裝置獲取第二文件的容量值后,統計第一文件和第二文件的總容量值,并繼續判斷第一文件和第二文件的總容量值和預設閾值C的大小。
[0053]206、在第一文件和第二文件的總容量值大于等于預設閾值時,中間件裝置將第一文件和第二文件直接發送至與云端連接的同步文件夾中。
[0054]本實施例中,中間件裝置維護SavingBox文件夾中尚未被發送到本地的同步文件夾中的所有的更新的文件大小。如果第一文件和第二文件的總容量值大于等于預設閾值C,那么SavingBox中的第一文件和第二文件就立刻被發送到本地的同步文件夾。
[0055]當然,在其他實施例中,還可能出現,在第一文件和第二文件的總容量值小于預設閾值時,且在中間件裝置接收第二文件之后的第一預設時間段內沒有接收到其他文件時,將第一文件和第二文件發送至與所述云端連接的云存儲同步文件夾中。
[0056]當然,在其他實施例中,還可能出現,在中間件裝置接收第二文件之后的第一預設時間段內接收有其他文件此時,中間件裝置具體用于,確定第一文件、第二文件以及其他文件的所有容量值,直至中間件裝置中所有文件的容量值大于等于預設閾值C時,將中間件裝置中的所有文件發送至與云端連接的云存儲同步文件夾中。
[0057]具體地,在本實施例中,
[0058]第一步,中間件裝置首先判斷緩存文件夾SavingBox內的第一文件的大小是否小于預設閾值C,若小于預設閾值C,則進行第二步,反之,則中間件裝置直接將緩存文件夾SavingBox內的文件發送至本地同步文件夾中。
[0059]第二步,在第一文件的容量值小于預設閾值時,判斷緩存文件夾SavingBox內文件更新間隔時間是否小于第一預設時間段Tl,即中間件裝置在接收第一文件之后的第一預設時間段Tl是否接收第二文件,若沒有接收到第二文件時,則將第一文件發送至與云端連接的云存儲同步文件夾中,其中,第二文件為待存儲在云端的文件,若接收到第二文件,則進行第二步。
[0060]第三步,獲取第二文件的容量值,判斷第一文件和第二文件的總容量值是否小于預設閾值C。
[0061]第四步,在第一文件和第二文件的總容量值大于等于預設閾值時,中間件裝置將第一文件和第二文件直接發送至與云端連接的同步文件夾中,在第一文件和第二文件的總容量值小于預設閾值時,且在中間件裝置接收第二文件之后的第一預設時間段Tl內沒有接收到其他文件時,將第一文件和第二文件發送至與所述云端連接的云存儲同步文件夾中。
[0062]第五步,在中間件裝置接收第二文件之后的第一預設時間段Tl內接收有其他文件此時,中間件裝置具體用于,確定第一文件、第二文件以及其他文件的所有容量值,直至中間件裝置中所有文件的容量值大于等于預設閾值C時,將中間件裝置中的所有文件發送至與云端連接的云存儲同步文件夾中。
[0063]圖2中沒有示出該部分內容,本實施例可根據實際需要進行查看,上述過程可為循環處理的過程。
[0064]本實施例中的中間件裝置采用Linux版的UDS (Update-batched DelayedSynchronizat1n)系統,UDS系統通過Linux內核提供的inotify系統調用來監控緩存文件夾中發生的任何數據更新,本發明中的中間件裝置不限于UDS系統,根據實際生產需要也可以采用Windows、Mac OS或其他操作系統。
[0065]進一步地,本實施例中的中間件裝置還設置了第二個計數器,它在更粗的第二預設時間段T2(T2 > Tl)上發送SavingBox文件夾中更新的數據到本地的同步文件夾,當往SavingBox文件夾中的一個文件反復添加單字節,此時如果預設閾值C較大,那么需要太長的時間才能使數據更新值達到C ;類似地,如果數據添加的時間間隔總是比Tl短,那么前文所說的第一個計時器在計數值沒達到預設閾值C前就不會有任何效果。
[0066]本實施例中第二預設時間段Τ2設置為30秒,但不限定于30秒。通過設置了第二個計數器,從而防范極端“病態”的數據更新模式可能為“阻塞”中間件裝置的數據同步。
[0067]本實施例中,中間件裝置獨立于任何特定的云存儲系統、并且不需要對原始云存儲系統進行任何改變。該中間件裝置首先構建一個名為“SavingBox”的緩存文件夾以替代原來的同步文件夾,一旦探測到頻繁短促數據更新,就適當延遲數據更新的同步、最終將多次更新批處理成一次大的數據更新同步到云端。
[0068]圖3為本發明一種緩沖式云存儲數據同步裝置的結構框圖,如圖3所示,該裝置包括:接收模塊31,容量值獲取模塊32,判斷模塊33,和發送模塊34 ;
[0069]其中;接收模塊31用于接收待存儲在云端的文件;
[0070]容量值獲取模塊32用于獲取文件的容量值;
[0071]判斷模塊33用于判斷所述文件的容量值與預設閾值的大小;
[0072]發送模塊34在所述文件的容量值小于所述預設閾值時,將所述文件經過預設時間段后發送至與云端連接的云存儲同步文件夾中。
[0073]在一種可能的實現方式中,前述的容量值獲取模塊32,還用于在第一文件的容量值小于預設閾值C,且在接收第一文件之后的第一預設時間段Tl內接收有第二文件時,則獲取第二文件的容量值;
[0074]相應地,判斷模塊33,還用于判斷第一文件和第二文件的總容量值是否小于預設閾值;
[0075]發送模塊34,還用于在第一文件和第二文件的總容量值大于等于預設閾值C時,將第一文件和第二文件直接發送至與云端連接的同步文件夾中。
[0076]當SavingBox文件夾的數據發生變化時,容量值獲取模塊32自動計算每個新文件或修改文件的改變部分的壓縮版本,即當用戶向SavingBox中添加新文件時,容量值獲取模塊32自動計算新文件的壓縮版本,相似地,如果一個文件被修改了,容量值獲取模塊32則為此文件的改變部分計算一個壓縮版本。
[0077]進一步地,如果是新文件創建,那么容量值獲取模塊32使用gzip計算出新文件的壓縮大小;如果是現存文件被修改,容量值獲取模塊32首先使用標準的Linux工具rsync來計算文件的二值差異、再用gzip計算出二值差異的壓縮大小。
[0078]本實施例中的容量值獲取模塊32使用gzip計算出新文件的壓縮大小,但不僅僅限于使用gzip來壓縮文件,所以計數器的計數值只是一個近似的估計值,它可能不太準確,但在實踐中的性能已經足夠優越。
[0079]本實施例的緩沖式云存儲數據同步裝置可執行前述的圖1至圖2所示的方法實施例中的流程,本實施例不在此進行詳述。
[0080]顯然,本領域的技術人員可以對半發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求以及等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。
【權利要求】
1.一種緩沖式云存儲數據同步的方法,其特征在于,包括以下步驟: 中間件裝置接收待存儲在云端的第一文件,所述第一文件為用戶設備中的文件; 所述中間件裝置獲取所述第一文件的容量值,判斷所述第一文件的容量值是否大于等于預設閾值; 在所述第一文件的容量值小于所述預設閾值,且所述中間件裝置在接收第一文件之后的第一預設時間段內沒有接收到第二文件時,將所述第一文件發送至與所述云端連接的云存儲同步文件夾中,其中,所述第二文件為待存儲在云端的文件。
2.根據權利要求1所述的方法,其特征在于,所述方法還包括: 在所述第一文件的容量值小于所述預設閾值,且所述中間件裝置在接收第一文件之后的第一預設時間段內接收有所述第二文件時,則獲取所述第二文件的容量值; 判斷所述第一文件和第二文件的總容量值是否小于預設閾值; 在所述第一文件和所述第二文件的總容量值大于等于所述預設閾值時,所述中間件裝置將所述第一文件和所述第二文件直接發送至與云端連接的同步文件夾中。
3.根據權利要求2所述的方法,其特征在于,所述方法還包括: 在所述第一文件和所述第二文件的總容量值小于所述預設閾值時,且在所述中間件裝置接收第二文件之后的第一預設時間段內沒有接收到其他文件時,將所述第一文件和所述第二文件發送至與所述云端連接的云存儲同步文件夾中。
4.根據權利要求3所述的方法,其特征在于,所述方法還包括: 在所述第一文件和所述第二文件的總容量值小于所述預設閾值時,且在所述中間件裝置接收第二文件之后的第一預設時間段內接收有其他文件時,確定所述第一文件、第二文件以及其他文件的所有容量值; 直至所述中間件裝置中所有文件的容量值大于等于所述預設閾值時,將所述中間件裝置中的所有文件發送至與所述云端連接的云存儲同步文件夾中。
5.據權利要求4所述的方法,其特征在于,所述方法還包括: 所述中間件裝置在接收所述第二文件之后,且所述第一文件和所述第二文件的容量值小于所述預設閾值時,所述中間件裝置中的計數器清零,重新計時,判斷在所述第一預設時間內是否接收到其他文件。
6.根據權利要求1所述的方法,其特征在于,所述方法還包括: 所述中間件裝置在接收所述第一文件之后計時,當計時時間增加到第二預設時間段T2后,將接收到的全部文件發送至與所述云端連接的云存儲同步文件夾中。
7.一種緩沖式云存儲數據同步裝置,其特征在于,包括: 接收模塊,用于接收待存儲在云端的文件; 容量值獲取模塊,用于獲取文件的容量值; 判斷模塊,用于判斷所述文件的容量值與預設閾值的大小; 發送模塊,在所述文件的容量值小于所述預設閾值時,將所述文件經過預設時間段后發送至與云端連接的云存儲同步文件夾中。
8.根據權利要求7所述的緩沖式云存儲數據同步裝置,其特征在于,所述容量值獲取模塊用于獲取所述文件的壓縮版本的容量大小。
9.根據權利要求8所述的緩沖式云存儲數據同步裝置,其特征在于,所述文件包括新文件和修改文件,所述容量值獲取模塊獲取所述新文件的壓縮版本和所述修改文件的改變部分的壓縮版本大小。
10.根據權利要求9所述的緩沖式云存儲數據同步裝置,其特征在于,所述容量值獲取模塊通過gzip工具計算出所述文件的壓縮版本的大小。
【文檔編號】G06F17/30GK104408048SQ201410584308
【公開日】2015年3月11日 申請日期:2014年10月27日 優先權日:2014年10月27日
【發明者】李振華, 劉云浩 申請人:清華大學