• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于兩級分塊的文件同步方法

      2014-12-23 01:29:50劉曉潔
      計算機工程與設(shè)計 2014年3期
      關(guān)鍵詞:分塊滑動客戶端

      周 平,劉曉潔

      (四川大學(xué) 計算機學(xué)院,四川 成都610065)

      0 引 言

      文件同步是指對客戶端和服務(wù)器上同一文件的不同版本進行同步,使這兩個不同主機上文件的版本一致。文件同步廣泛用于文件的備份與恢復(fù)、web網(wǎng)站鏡像等場景中。目前,較常用的文件同步算法有RDC(remote differential compression)[1]和Rsync[2,3]。文件同步主要包括文件分塊、hash值比較以及網(wǎng)絡(luò)傳輸3個步驟。其中,文件分塊是其中最重要的一個步驟。文件分塊算法是指按照一定的策略將文件分割成較小的數(shù)據(jù)塊,以用于對比文件之間的細微差異。通常文件的版本之間的差異較小,通過分塊能夠更加準確地檢測兩個版本-中的差異數(shù)據(jù)塊。

      文件分塊算法主要分為固定長度分塊(fixed-sized partitioning,F(xiàn)SP)算 法[4]和 基 于 內(nèi) 容 的 分 塊(contented-defined chunking,CDC)算法[5]。FSP算法的特點是易于實現(xiàn),且分塊速度較快,但是對于插入和刪除的位置較敏感,不能根據(jù)文件自身內(nèi)容的變化進行調(diào)整與優(yōu)化。而CDC 分塊算法能將文件按內(nèi)容分成大小不等的塊,能夠較好地檢測到差異。目前最常用的CDC 分塊 算法 有BSW[6,7](basic sliding window)分塊算法和Winnowing[8]分塊算法。BSW 分塊算法采用的分塊規(guī)則是預(yù)先設(shè)定兩個正整數(shù)D 和r(r<D),若滑動窗口W 的Rabin[9]指紋值F( )W modD=r,則將窗口W 的右邊界作為分塊的邊界點。由于分塊受窗口寬度及兩個設(shè)定值的影響較大,導(dǎo)致分塊長度變化范圍較大,因此分塊效率不穩(wěn)定。Winnowing算法在一個固定大小的窗口內(nèi),計算滑動塊的Rabin指紋值,取極值點作為分塊的邊界點。此算法能夠?qū)崿F(xiàn)按文件內(nèi)容進行分塊,同時又能將分塊大小限制在一定的范圍內(nèi),克服了BSW 算法分塊長度變化范圍較大的問題,但Winnowing算法存在Rabin值的重復(fù)計算,因此分塊算法比較耗時。

      本文提出了基于兩級分塊的文件同步方法(DFRSYNC)。該方法首先使用循環(huán)隊列對Winnowing分塊算法進行改進,以提高分塊效率;基于該改進的Winnowing分塊算法,本文采用兩級分塊策略,首先設(shè)定較大的窗口值和滑塊值,分別對客戶端和服務(wù)器上的文件進行快速分塊,初步定位差異塊,然后設(shè)定較小的窗口值和滑塊值進行第二次分塊,從而準確定位差異塊。

      1 DF-RSYNC方法

      DF-RSYNC 方法在傳統(tǒng)Winnowing 分塊算法的基礎(chǔ)上,采用循環(huán)隊列存儲hash值以減少部分hash值的重復(fù)計算,同時為了更細粒度地檢測到差異數(shù)據(jù),采用了兩級分塊策略,因此需要兩輪往返來傳輸兩次分塊的hash值及最終的差異數(shù)據(jù)。

      1.1 Winnowing分塊算法及其改進

      1.1.1 傳統(tǒng)Winnowing數(shù)據(jù)分塊算法

      傳統(tǒng)的Winnowing算法原理如圖1所示,其中W 代表固定窗口。B1,B2,…,BN-1,BN代表窗口W 內(nèi)從左邊界到右邊界滑動塊。設(shè)Lw為固定窗口大小,LB為滑動塊大小,且Lw>LB。

      圖1 Winnowing數(shù)據(jù)分塊算法

      (1)設(shè)P為窗口當(dāng)前的左邊界點,滑動塊以窗口的左邊界為起始點。

      (2)若滑塊的右邊界沒有到達窗口的右邊界點,則每次向前移動一個字節(jié),得到滑動塊B1,B2,…,BN-1,BN,且塊數(shù)N=Lw-LB。

      (3)計算各塊B1,B2,…,BN-1,BN的Rabin 指紋值,并保存到hash表H 中。若有Bk(k∈ [1,N]) 滿足H(Bk)=min (H (B1),H (B2),…,H (BN)),則劃分長度L=k的塊,令P=P+k+1為窗口的下一個左邊界點,返回(1)。

      由上述算法描述可知,Winnowing雖能夠?qū)崿F(xiàn)對文件按內(nèi)容分塊,并將分塊長度L限制在LW-LB,但在窗口的移動過程中,部分塊的Rabin值存在重復(fù)計算的問題。如(3),窗體在分塊的前后只滑動了塊長L=k個字節(jié)的距離,當(dāng)K 值比較靠近窗口的起始點P 時,就有一部分滑塊的Rabin值要重復(fù)計算,重復(fù)計算的滑動塊數(shù)是LB-L,這極大地增加了分塊的時間。

      1.1.2 改進的Winnowing分塊算法

      為提高分塊效率,避免Rabin值的重復(fù)計算,本文對上述算法做了改進。本文使用了一個容量為N=Lw-LB+1的循環(huán)隊列Q,初始時,隊列Q 的頭指針front與尾指針rear都為0,使滑塊的起始位置P初值也為0。

      (1)滑塊以P為起點,依次向前滑動一個字節(jié),并計算每個塊的Rabin 指紋值,依次插入到隊列Q 的隊尾,rear=rear+1,直到隊列Q 滿,即(re ar+1 )modN=front。

      (2)比較隊列Q 中的各滑塊的Rabin指紋值,若有Qk(k∈[front,rear])滿足Qk=min(Qfront,Qfront+1,…,Qrear),則劃分長度為 L= (k-front+1+N )modN新塊,且P=P+L。

      (3)刪除隊列中從front 到K 的元素,即front=(k-front+1 )modN。轉(zhuǎn)到(1)。

      算法原理如圖2所示。

      圖2 改進的Winnowing數(shù)據(jù)分塊算法

      改進的Winnowing分塊算法實現(xiàn)如下:

      1.2 兩級分塊方法

      為了實現(xiàn)高效準確的差異檢測,本文采用了文獻[10]提出的兩級分塊的文件同步思想,其采用的分塊方法是首先使用CDC算法粗粒度地定位差異塊,再對不匹配的塊使用Rsync定長滑動塊技術(shù)在細粒度上查找差異塊。本文中分塊算法采用的是改進的Winnowing分塊方法。算法流程如圖3所示。

      圖3 兩級分塊

      首先將固定窗口和滑動塊大小設(shè)置為較大值,使用改進的Winnowing分塊算法,分別對存在于客戶端和服務(wù)器端的相同文件的不同版本進行分塊,其中,客戶端為新版本,服務(wù)器端為舊版本,分別將新舊版本文件分成C1,C2…,CM塊和C′1,C′2,…,C′N塊。計算每塊的hash值,再將兩個版本文件分塊的hash值進行比較,分別找出兩組分塊hash值中不相同的塊,如新版本進行比較后的差異塊是Ck…CH,舊版本中差異塊是C′k,…,C′L。將固定窗口和滑動塊的大小設(shè)置為較小值,分別對這兩組差異塊再使用改進的Winnowing分塊算法進行再分塊,分成Ck1,…,CLM塊和C′k1…C′LN塊。再將這兩組再分塊的hash值進行比較,找出有差異的小塊Ckd…即為最終的差異數(shù)據(jù)。

      1.3 兩輪往返方法

      由于本文采用了兩級分塊策略,因此需要兩輪往返來傳輸兩次分塊的hash值及最終的差異數(shù)據(jù)。兩輪往返協(xié)議如圖4所示。首先服務(wù)器發(fā)送分塊請求到客戶端,客戶端將第一次分塊后的Hash值返回給服務(wù)器,服務(wù)器將對應(yīng)文件的舊版本進行分塊,并將這兩個版本的分塊Hash值進行對比,并將對比結(jié)果以Bitmap存儲后發(fā)送到客戶端,客戶端根據(jù)收到的Bitmap,對差異塊重新進行分塊,并將二次分塊的Hash值傳送到服務(wù)器。服務(wù)器將其二次分塊Hash值與收到的Hash值進行對比后,將二次分塊的Bitmap發(fā)送到客戶端,客戶端根據(jù)該Bitmap計算出差異數(shù)據(jù)后,將差異數(shù)據(jù)發(fā)送到服務(wù)器。服務(wù)器根據(jù)兩輪收到的bitmap值和差異數(shù)據(jù)對文件進行重構(gòu)。

      圖4 服務(wù)器與客戶端的兩輪往返

      在兩輪往返過程中,文件塊信息存放在各自的主機上。每個信息塊是一個數(shù)據(jù)結(jié)構(gòu),第一次分塊的塊信息Block-Info1的格式為<BlockNumber1,BlcokBegin1,BlockLength1>,其中,BlockNumber1為第一次分塊塊號,BlockBegin1為分塊起始位置,BlockLength1 為第一次分塊的塊長,第二次分塊的塊信息BlockInfo2 的格式為<BlockNumber1,BlockNumber2,BlockBegin2,BlockLength2 >, 其 中,BlockNumber1為第一次分塊的塊號,BlockNumber2 為對BlcokNumber1塊的第二次分塊的塊號,BlockBegin2 為第二次分塊相對于第一次分塊的起始位置,BlockLength2 為第二次分塊的塊長。

      2 實驗分析

      本實驗首先對傳統(tǒng)Winnowing分塊算法和本文提出改進的Winnowing分塊算法在分塊的時間上進行了對比。然后基于改進的Winnowing 分塊算法,對比了一級分塊與DF-RSYNC方法的兩級分塊方法在差異數(shù)據(jù)檢測的粒度以及同步過程中所產(chǎn)生網(wǎng)絡(luò)傳輸量。實驗使用SHA1計算分塊的hash值,采用socket進行網(wǎng)絡(luò)數(shù)據(jù)傳輸,并用gzip壓縮算法對待傳輸?shù)臄?shù)據(jù)進行壓縮。

      實驗環(huán)境如下:服務(wù)器與客戶端為兩臺配置相同的主機。具體配置為CPU:雙核Intel(R)Pentium (R)Dual CPU 2.20GHz,內(nèi)存:2GB,硬盤:ST3250310AS 250GB,操作系統(tǒng):Windows32,網(wǎng)絡(luò)環(huán)境是百兆局域網(wǎng)。文中算法均在Visual Studio 2010下使用C++編程實現(xiàn)。

      2.1 分塊時間對比

      本實驗就1.1.1與1.1.2 分別提到的兩種分塊算法對不同大小文件的分塊時間進行對比,如圖5所示,分塊時間以毫秒為單位??梢钥闯?,由于避免了部分Rabin指紋值的重復(fù)計算,改進的分塊算法可顯著地減少了分塊時間。并且隨著文件的增大,改進的分塊算法的分塊時間增長幅度較小。

      圖5 分塊時間對比

      2.2 差異數(shù)據(jù)粒度對比

      本實驗對不同大小的文件采用改進的Winnowing分塊算法進行一級分塊和二級分塊后,分別統(tǒng)計分塊后獲得的差異數(shù)據(jù)的大小,并與實際的差異數(shù)據(jù)大小進行對比,結(jié)果如圖6所示。實驗2.2和2.3采用的一級分塊的窗口大小為2048B,滑動塊大小為2048B,二級分塊的窗口大小是512B,滑動塊大小為512B??梢钥闯?,二級分塊較一級分塊能夠更細粒度地檢測到差異數(shù)據(jù)。

      2.3 網(wǎng)絡(luò)流量對比

      圖6 分塊粒度對比

      該組實驗針對使用改進分塊算法的文件單輪往返同步方法與DF-RSYNC方法在網(wǎng)絡(luò)上的數(shù)據(jù)傳輸量進行對比。表1記錄了一輪往返和兩輪往返同步中需要傳輸?shù)牟町悢?shù)據(jù)量、額外數(shù)據(jù)量和總的數(shù)據(jù)量,表中除文件大小以KB為單位外,其余數(shù)據(jù)都以Byte為單位。圖7每兩個柱形代表在相同的文件大小下,兩種同步方法的流量消耗。左邊的柱形代表單輪往返的網(wǎng)絡(luò)流量消耗,右邊的柱形代表DF-RSYNC方法的網(wǎng)絡(luò)流量消耗。每個柱的下部分代表傳輸中的差異數(shù)據(jù)量,而上部分代表額外數(shù)據(jù)的傳輸量。該組實驗結(jié)果表明兩輪往返同步較一輪往返同步傳輸?shù)牟町悢?shù)據(jù)量要小,但增加了第二次分塊的hash值、第二次分塊的bitmap值等額外數(shù)據(jù)的傳輸??傮w上來說,兩輪往返同步方法DF-RSYNC 能在一定程度上地減少網(wǎng)絡(luò)流量的消耗。

      表1 一輪往返和兩輪往返網(wǎng)絡(luò)流量對比

      實驗結(jié)果表明,采用了循環(huán)隊列的Winnowing分塊算法可顯著減少分塊的時間,大大地提高了分塊效率。兩級分塊相對于一級分塊能夠更精確地定位差異數(shù)據(jù),減少差異數(shù)據(jù)的傳輸。雖然兩級分塊的兩輪往返相比于一級分塊的一輪往返來說,增加了額外的數(shù)據(jù)量,但由于兩級分塊檢測到的差異數(shù)據(jù)量較一級分塊小,因此兩輪往返中差異數(shù)據(jù)的傳輸量較一輪往返小??傮w上來說,兩級分塊,兩輪往返的網(wǎng)絡(luò)流量較一級分塊一輪往返在一定程度上減少。

      3 結(jié)束語

      圖7 網(wǎng)絡(luò)流量對比

      本文針對Winnowing算法的分塊效率不高,單級分塊的粒度較粗,以及網(wǎng)絡(luò)中差異數(shù)據(jù)傳輸量較大等問題,提出了基于改進的Winnowing分塊算法對文件兩級分塊,兩輪往返同步的方法DF-RSYNC。實驗結(jié)果表明,采用的改進的Winnowing分塊算法極大地減少了分塊時間,其兩級分塊策略能更細粒度地定位差異數(shù)據(jù),減少了網(wǎng)絡(luò)上差異數(shù)據(jù)的傳輸量。但由于本文的方法DF-RSYNC 增加了第二次分塊的hash值等額外信息的傳輸,因此怎樣在細粒度的檢測到差異的同時,盡可能地減少額外信息的傳輸量是今后我們要研究的工作。

      [1]Teodosiu D,Bjorner N,Gurevich Y,et al.Optimizing file replication over limited bandwidth networks using remote differential compression [R].Microsoft Research,2006.

      [2]Tangwongsan K,Pucha H,Andersen D G,et al.Efficient similarity estimation for systems exploiting data redundancy[C]//INFOCOM,Proceedings IEEE,2010:1-9.

      [3]TANG Xiaodi,MA Xiaoxu.Design and implementation of remote file synchronization system based on difference[J].Computer Engineering and Design,2010,31 (20):4389-4392(in Chinese). [湯曉迪,馬曉旭.遠程文件差異同步系統(tǒng)的設(shè)計與實現(xiàn) [J].計算機工程與設(shè)計,2010,31 (20):4389-4392.]

      [4]Gharaibeh A,Constantinescu C,Lu M,et al.CloudDT:Efficient tape resource management using deduplication in cloud backup and archival services [C]//8th International Conference on Network and Service Management.IEEE,2012:169-173.

      [5]Bjrner N,Blass A,Gurevich Y.Content-dependent chunking for differential compression,the local maximum approach [J].Journal of Computer and System Sciences,2010,76 (3):154-203.

      [6]AO Li,SHU Jiwu.Data reduplication techniques [J].Journal of Software,2010,21 (5):916-929 (in Chinese). [敖莉,舒繼武.重復(fù)數(shù)據(jù)刪除技術(shù) [J].軟件學(xué)報,2010,21(5):916-929.]

      [7]Chang Bingchun.A running time improvement for two thresholds two divisors algorithms[D].San Jose:San Jose State University,2009.

      [8]Murugesan M,Jiang W,Clifton C,et al.Efficient privacypreserving similar document detection [J].The VLDB Journal—The International Journal on Very Large Data Bases,2010,19 (4):457-475.

      [9]Jarrous A,Pinkas B.Secure computation of functionalities based on hamming distance and its application to computing document similarity [J].International Journal of Applied Cryptography,2013,3 (1):21-46.

      [10]XU Dan,SHENG Yonghong.High effective two-round remote file fast synchronization algorithm [J].Journal of Frontiers of Computer Science and Technology,2011,5 (1):38-49 (in Chinese).[徐旦,生擁宏.高效的兩輪遠程文件快速同步算法 [J].計算機科學(xué)與探索,2011,5 (1):38-49.]

      猜你喜歡
      分塊滑動客戶端
      分塊矩陣在線性代數(shù)中的應(yīng)用
      一種新型滑動叉拉花鍵夾具
      縣級臺在突發(fā)事件報道中如何應(yīng)用手機客戶端
      傳媒評論(2018年4期)2018-06-27 08:20:24
      孵化垂直頻道:新聞客戶端新策略
      傳媒評論(2018年4期)2018-06-27 08:20:16
      基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
      電子測試(2018年10期)2018-06-26 05:53:34
      Big Little lies: No One Is Perfect
      反三角分塊矩陣Drazin逆新的表示
      基于自適應(yīng)中值濾波的分塊壓縮感知人臉識別
      基于多分辨率半邊的分塊LOD模型無縫表達
      滑動供電系統(tǒng)在城市軌道交通中的應(yīng)用
      淮滨县| 石首市| 祥云县| 庆安县| 屏边| 丘北县| 二手房| 根河市| 睢宁县| 冷水江市| 军事| 襄樊市| 依安县| 五大连池市| 临武县| 营口市| 富源县| 钟山县| 青海省| 宁强县| 布尔津县| 秦皇岛市| 天镇县| 泾阳县| 元氏县| 闻喜县| 鸡泽县| 涟源市| 阳江市| 扶风县| 柳江县| 阜南县| 临猗县| 乌鲁木齐市| 荥经县| 琼中| 麻城市| 安西县| 廉江市| 丹棱县| 沾益县|