胡杰
摘 要: 通過(guò)對(duì)大型分布式系統(tǒng)在數(shù)據(jù)傳輸與共享中所遇到的問題的討論,提出一個(gè)新的數(shù)據(jù)共享平臺(tái)設(shè)計(jì)方案。該方案基于當(dāng)前Internet廣泛運(yùn)用的P2P技術(shù),結(jié)合文件壓縮、數(shù)據(jù)加密、斷點(diǎn)續(xù)傳等相關(guān)技術(shù)手段,實(shí)現(xiàn)了分布式系統(tǒng)中網(wǎng)絡(luò)間數(shù)據(jù)的高性能、高可靠傳輸與共享。
關(guān)鍵詞: 文件壓縮; 數(shù)據(jù)加密; 斷點(diǎn)續(xù)傳; P2P
中圖分類號(hào):TP393.08 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2014)11-07-03
Design and implementation of data share platform based on P2P technology
Hu Jie
(The 28th Institute of China Electronics Technology Group Corporation, Nanjing, Jiangsu 210007, China)
Abstract: Through the discussion on the problems happened in data transmission and share of the distributed system, a new data share platform solution is introduced. Based on the popular P2P technology on the Internet, several relevant technologies such file compression, data encryption and breakpoint transmission are adopted. Data transmission and share with high efficiency and reliability are realized.
Key words: file compression; data encryption; breakpoint transmission; P2P
0 引言
隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,分布式技術(shù)在軍事、金融、電信等各個(gè)領(lǐng)域得到越來(lái)越廣泛的應(yīng)用,當(dāng)前許多大型信息系統(tǒng)都采用了分布式架構(gòu)。隨著系統(tǒng)的不斷升級(jí)擴(kuò)張,分布式系統(tǒng)部署的子節(jié)點(diǎn)越來(lái)越多,系統(tǒng)存儲(chǔ)的數(shù)據(jù)規(guī)模也隨之不斷膨脹,且這些子節(jié)點(diǎn)與數(shù)據(jù)常常分布在不同的物理地域。當(dāng)系統(tǒng)一些子節(jié)點(diǎn)數(shù)據(jù)發(fā)生更新時(shí),需要與系統(tǒng)中其他子節(jié)點(diǎn)進(jìn)行數(shù)據(jù)同步以保證數(shù)據(jù)的一致性。
目前通常的做法是:當(dāng)分布式系統(tǒng)需要進(jìn)行數(shù)據(jù)同步時(shí),由發(fā)生數(shù)據(jù)變更的節(jié)點(diǎn)通知其他子節(jié)點(diǎn),其他子節(jié)點(diǎn)向該節(jié)點(diǎn)發(fā)送數(shù)據(jù)更新請(qǐng)求,該節(jié)點(diǎn)作為數(shù)據(jù)發(fā)布服務(wù)器向其他節(jié)點(diǎn)傳輸最新數(shù)據(jù),從而實(shí)現(xiàn)整個(gè)分布式系統(tǒng)的數(shù)據(jù)一致。然而,這種數(shù)據(jù)同步模式存在以下幾個(gè)問題:首先,當(dāng)分布式系統(tǒng)子節(jié)點(diǎn)大于一定規(guī)模時(shí),作為數(shù)據(jù)發(fā)布服務(wù)器的子節(jié)點(diǎn)將存在嚴(yán)重的性能與網(wǎng)絡(luò)傳輸瓶頸;其次,針對(duì)一些特殊行業(yè)的系統(tǒng)如銀行、金融領(lǐng)域,遠(yuǎn)距離數(shù)據(jù)傳輸需要考慮數(shù)據(jù)的安全性問題;最后,如果分布式系統(tǒng)采用低速的傳輸線路,那么傳輸一個(gè)大的文件可能需要很長(zhǎng)的時(shí)間,在長(zhǎng)時(shí)間的數(shù)據(jù)同步過(guò)程中,一旦發(fā)生任何錯(cuò)誤將導(dǎo)致整個(gè)數(shù)據(jù)同步工作必須重頭開始。
針對(duì)以上問題,本文提出了一個(gè)基于P2P技術(shù)的分布式系統(tǒng)數(shù)據(jù)共享平臺(tái)設(shè)計(jì)方案。
1 總體設(shè)計(jì)思路
分布式系統(tǒng)數(shù)據(jù)共享平臺(tái)的設(shè)計(jì)目標(biāo)是在各種速率的通信網(wǎng)絡(luò)上實(shí)現(xiàn)數(shù)據(jù)的高效傳輸,同時(shí)為了保證數(shù)據(jù)的安全性,需要對(duì)數(shù)據(jù)進(jìn)行加密處理。在具體的實(shí)施過(guò)程中,從以下幾個(gè)方面進(jìn)行設(shè)計(jì)。
⑴ 傳輸數(shù)據(jù)/文件的壓縮,數(shù)據(jù)/文件的壓縮是為了減少傳輸線路上數(shù)據(jù)的冗余,最大限度地利用傳輸線路的帶寬。
⑵ 傳輸數(shù)據(jù)的加密,由于系統(tǒng)分布在不同的物理地域,數(shù)據(jù)傳輸過(guò)程中需要在節(jié)點(diǎn)間進(jìn)行遠(yuǎn)距離數(shù)據(jù)傳輸,這存在被非法截取而導(dǎo)致內(nèi)容外泄的風(fēng)險(xiǎn)。對(duì)數(shù)據(jù)進(jìn)行加密后,即使在傳輸過(guò)程中被非法截取,對(duì)方也無(wú)法獲得原始的數(shù)據(jù)內(nèi)容。
⑶ 文件的斷點(diǎn)續(xù)傳處理,斷點(diǎn)續(xù)傳功能在低速率的通信網(wǎng)絡(luò)尤為重要,當(dāng)數(shù)據(jù)傳輸過(guò)程中發(fā)生錯(cuò)誤后,文件可以接續(xù)之前已接收的數(shù)據(jù)繼續(xù)傳輸,提高數(shù)據(jù)傳輸?shù)某晒β省?/p>
⑷ 基于P2P(點(diǎn)到點(diǎn))傳輸技術(shù)的運(yùn)用,如果采用傳統(tǒng)C/S(客戶端/服務(wù)器)模式,選取某個(gè)系統(tǒng)的節(jié)點(diǎn)作為數(shù)據(jù)發(fā)布服務(wù)器,隨著系統(tǒng)的規(guī)模擴(kuò)大,大量的客戶端節(jié)點(diǎn)同時(shí)向服務(wù)器節(jié)點(diǎn)申請(qǐng)數(shù)據(jù)傳輸,服務(wù)器節(jié)點(diǎn)的應(yīng)用負(fù)載和網(wǎng)絡(luò)帶寬必然不堪重負(fù)。采用P2P技術(shù)可以降低數(shù)據(jù)同步時(shí)對(duì)服務(wù)器節(jié)點(diǎn)的依賴,實(shí)現(xiàn)“下載客戶端越多,下載速度越快”。
結(jié)合上述幾項(xiàng)技術(shù),下面給出分布式系統(tǒng)數(shù)據(jù)共享平臺(tái)的總體設(shè)計(jì)思路。
發(fā)生數(shù)據(jù)變更的節(jié)點(diǎn)可視為服務(wù)器端子節(jié)點(diǎn),而其他需要數(shù)據(jù)同步的子節(jié)點(diǎn)可視為客戶端子節(jié)點(diǎn)。
對(duì)于服務(wù)器端,首先對(duì)需要同步的數(shù)據(jù)/文件進(jìn)行預(yù)處理,包括數(shù)據(jù)/文件的壓縮和加密,形成壓縮加密后的中間文件。然后根據(jù)斷點(diǎn)續(xù)傳和P2P的思想,將文件分割為固定大小的文件塊,并創(chuàng)建文件塊索引表,該索引表記錄了每個(gè)文件塊以及目前網(wǎng)絡(luò)中擁有該文件塊的客戶端節(jié)點(diǎn)。接下來(lái),服務(wù)器端處于下載服務(wù)等待狀態(tài),當(dāng)收到客戶端的下載請(qǐng)求后,服務(wù)器端創(chuàng)建線程進(jìn)行P2P的數(shù)據(jù)傳輸處理。在P2P數(shù)據(jù)傳輸處理線程中,服務(wù)器通過(guò)查找文件塊索引表,找到每個(gè)文件塊對(duì)應(yīng)的第一個(gè)節(jié)點(diǎn),并通知客戶端和該節(jié)點(diǎn)直接進(jìn)行數(shù)據(jù)傳輸。原則上服務(wù)器不發(fā)送任何文件塊到客戶端,只有當(dāng)網(wǎng)絡(luò)中所有客戶端節(jié)點(diǎn)都沒有某文件塊時(shí),服務(wù)器才發(fā)送該文件塊到客戶端,詳細(xì)內(nèi)容見后續(xù)P2P技術(shù)實(shí)現(xiàn)的描述,服務(wù)器端主流程圖如圖1所示。
[開始][數(shù)據(jù)/文件的壓縮加密][形成壓縮加密后的中間文件][文件分割并創(chuàng)建文件塊索引][等待客戶端下載請(qǐng)求][\&收到下載請(qǐng)求,創(chuàng)建線
程進(jìn)行P2P的數(shù)據(jù)傳輸\&\&][結(jié)束]
圖1 服務(wù)器主流程圖
對(duì)于客戶端,當(dāng)開始下載時(shí),首先檢查是否存在已下載的內(nèi)容,如果存在則接續(xù)已有的內(nèi)容繼續(xù)下載,否則從頭開始下載。在下載過(guò)程中,需要實(shí)時(shí)更新當(dāng)前已下載文件塊的記錄信息,同時(shí)為了應(yīng)對(duì)斷電、死機(jī)等意外情況,應(yīng)保證每個(gè)文件塊接收成功后再更新對(duì)應(yīng)的記錄信息,防止出現(xiàn)記錄信息已更新但文件塊尚未接收完畢的問題。當(dāng)收到停止或結(jié)束的命令時(shí),首先判斷文件下載是否已經(jīng)完成,如果已完成則進(jìn)行文件的解密和解壓以獲取原始文件,否則記錄當(dāng)前的下載狀態(tài)用來(lái)實(shí)現(xiàn)斷點(diǎn)續(xù)傳,客戶端主流程圖如圖2所示。
[開始][收到停止或者結(jié)束命令][文件解密][文件解壓][\&接續(xù)下載\&\&][結(jié)束][已有下載內(nèi)容?] [下載完成?] [\&全新下載\&\&] [是][否] [是] [否]
圖2 客戶端主流程圖
以上主要介紹了分布式系統(tǒng)數(shù)據(jù)共享平臺(tái)的總體設(shè)計(jì)方案,下面就方案中涉及的文件壓縮、文件加密、P2P數(shù)據(jù)傳輸處理等問題分別展開論述。
2 文件壓縮的設(shè)計(jì)實(shí)現(xiàn)
文件壓縮是數(shù)據(jù)壓縮技術(shù)的一部分,所謂數(shù)據(jù)壓縮是指通過(guò)各種算法減少數(shù)據(jù)的冗余,并盡可能地減少失真,從而提高傳輸效率和節(jié)約存儲(chǔ)空間。數(shù)據(jù)壓縮技術(shù)分為無(wú)損壓縮和有損壓縮兩種:無(wú)損壓縮在重構(gòu)壓縮數(shù)據(jù)后,其重構(gòu)數(shù)據(jù)與原始數(shù)據(jù)是完全一致的;而有損壓縮的重構(gòu)數(shù)據(jù)與原始數(shù)據(jù)有所不同,但不影響原始數(shù)據(jù)的信息表達(dá),壓縮比高,一般適用于語(yǔ)音、圖像、視頻等多媒體領(lǐng)域。數(shù)據(jù)共享平臺(tái)的文件壓縮要求重構(gòu)數(shù)據(jù)和原始數(shù)據(jù)一致,因此必須采用無(wú)損壓縮,常見的無(wú)損壓縮算法有:Huffman(哈夫曼)編碼、游程編碼、算術(shù)編碼等[1]。這里我們采用Huffman編碼完成文件的壓縮。
Huffman編碼是一種基于統(tǒng)計(jì)的變長(zhǎng)編碼,它通過(guò)將出現(xiàn)頻率較高的信源符號(hào)用較短的碼字來(lái)編碼,而出現(xiàn)頻率較低的信源符號(hào)用較長(zhǎng)的碼字來(lái)編碼,從而使平均碼長(zhǎng)最短,達(dá)到最佳編碼的目的。Huffman編碼效率高,運(yùn)算速度快,當(dāng)前流行的壓縮軟件如WinRAR、WinZip都采用了Huffman算法[2]。
以下詳細(xì)介紹采用Huffman編碼實(shí)現(xiàn)文件壓縮的步驟。
首先將文件看作一個(gè)個(gè)字節(jié)編碼的組合,由于每個(gè)字節(jié)的內(nèi)容最多有256(28)種可能,所以每個(gè)文件都是由不超過(guò)256種的字符組成。掃描原始文件,統(tǒng)計(jì)文件中出現(xiàn)的字符及其概率,將字符按概率從高到低排序。
由于Huffman編碼是不等長(zhǎng)編碼,為了避免二義性,要求任何一個(gè)字符的編碼都不能是另一個(gè)字符編碼的前綴,又稱為前綴編碼。Huffman編碼就是以字符出現(xiàn)的頻率作為權(quán)值,通過(guò)構(gòu)造Huffman樹,生成碼長(zhǎng)最短的二進(jìn)制前綴編碼:
⑴ 假定某個(gè)文件中包含n種字符S1,S2,…,Sn,以字符出現(xiàn)的頻率作為權(quán)值,得到權(quán)值的集合W={w1,w2,…,wn},定義n棵二叉樹的集合F={T1,T2,…,Tn},其中每棵二叉樹Ti中只有一個(gè)帶權(quán)為wi的根結(jié)點(diǎn),其左右子樹均為空;
⑵ 在F中選取兩棵根結(jié)點(diǎn)的權(quán)值最小的樹作為左右子樹構(gòu)造一棵新的二叉樹,且置新的二叉樹的根結(jié)點(diǎn)的權(quán)值為其左右子樹上根結(jié)點(diǎn)的權(quán)值之和;
⑶ 從F中刪除這兩棵樹,同時(shí)將新得到的二叉樹加入到F中;
⑷ 重復(fù)⑵和⑶,直到F只含有一棵樹為止,這棵樹就是Huffman樹;
⑸ 約定樹的左分支表示字符‘0,右分支表示字符‘1,則從根結(jié)點(diǎn)到葉子結(jié)點(diǎn)的路徑上分支字符組成的字符串就是碼長(zhǎng)最短的二進(jìn)制前綴編碼,即Huffman編碼[3]。
以英文的文本文檔為例,通常情況下文件中的每個(gè)字符占用8個(gè)二進(jìn)制位,使用Huffman編碼后,英文中e、a等出現(xiàn)頻率最高的字母只占用了1到2個(gè)二進(jìn)制位,盡管頻率最低的字母z需要占用更多的位數(shù)(25個(gè)二進(jìn)制位),但由于其出現(xiàn)的比例很低,通常不到1%,因此對(duì)于整個(gè)文件而言,每個(gè)字符平均占用的位數(shù)一般不超過(guò)4個(gè)二進(jìn)制位,壓縮后文件的大小不超過(guò)原始文件的一半。
3 文件加密的設(shè)計(jì)實(shí)現(xiàn)
文件加密可用的成熟算法有很多,主要分為對(duì)稱算法和非對(duì)稱算法。非對(duì)稱算法都是基于復(fù)雜的數(shù)學(xué)難題。這些算法被公認(rèn)為安全和有效的有三類:大整數(shù)分解問題類、離散對(duì)數(shù)問題類和橢圓曲線類。
這里選取RSA算法作為文件加密的算法,RSA算法是大數(shù)分解問題類的典型,其安全性基于整數(shù)因子分解問題的困難性,公鑰和私鑰是一對(duì)大素?cái)?shù)的函數(shù),從一個(gè)公開密鑰和密文中恢復(fù)出明文的難度等價(jià)于分解兩個(gè)大素?cái)?shù)之積。
首先選取兩個(gè)長(zhǎng)度相等的大素?cái)?shù)p和q,計(jì)算乘積[4]:
n=pq
然后隨機(jī)選取加密密鑰e,使e和(p-1)(q-1)互素,常用的e值是3,17和65537(216+1)。之后找出d,滿足:
ed≡1 mod(p-1)(q-1)
d=e-1 mod((p-1)(q-1))
則d和n也互素。其中e和n是公用密鑰,d是私用密鑰,mod是求余運(yùn)算。加密消息m時(shí),將其看成是一個(gè)大整數(shù),把它分成比n小的數(shù)據(jù)分組。按下面公式加密:
ci=mie(mod n)
解密消息時(shí),取每一個(gè)加密后的分組ci并計(jì)算:
mi=cid(mod n)
結(jié)合分布式系統(tǒng)數(shù)據(jù)共享平臺(tái)的設(shè)計(jì)思路,數(shù)據(jù)/文件傳輸前首先通過(guò)公鑰對(duì)原始數(shù)據(jù)/文件文件進(jìn)行加密得到密文,密文通過(guò)傳輸線路發(fā)送出去,其計(jì)算方法如下:
傳輸密文=RSAEncrypt公鑰(原始文件)
接收方收到密文后,通過(guò)對(duì)方提供的私鑰對(duì)密文進(jìn)行解密得到原始文件,其計(jì)算方法如下:
原始文件=RSADecrypt私鑰(傳輸密文)
因此,數(shù)據(jù)共享平臺(tái)的加/解密步驟為:首先由分布式系統(tǒng)的服務(wù)器端生成一對(duì)公鑰和私鑰,服務(wù)器端使用公鑰統(tǒng)一對(duì)原始文件進(jìn)行加密,加密完成后將密文發(fā)送給客戶端;各個(gè)客戶端收到密文后,在本地使用由服務(wù)器端生成的私鑰進(jìn)行解密,從而得到原始文件。
此外,為了保證文件加密的安全,實(shí)際應(yīng)用還需要注意兩個(gè)問題:首先,RSA的安全性依賴于大數(shù)分解的困難,為了防止破解者利用大規(guī)模高性能計(jì)算機(jī)進(jìn)行大數(shù)分解的暴力破解,應(yīng)確保RSA密鑰不小于1024位;其次,不允許通過(guò)發(fā)送密文的同一個(gè)線路傳輸私鑰,應(yīng)采用其他方式送達(dá)接收端。
4 斷點(diǎn)續(xù)傳和P2P技術(shù)的設(shè)計(jì)實(shí)現(xiàn)
斷點(diǎn)續(xù)傳技術(shù)的核心思想就是“化整為零”:將文件分割為一定大小的文件塊,數(shù)據(jù)傳輸時(shí)以每個(gè)小的文件塊為單位,如果傳輸過(guò)程中出現(xiàn)錯(cuò)誤,下次重新開始時(shí)只需發(fā)送未接收的文件塊,之前已經(jīng)正確接收的文件塊不必再次發(fā)送。
P2P又稱為對(duì)等網(wǎng)絡(luò),是基于TCP/IP協(xié)議的一種新的網(wǎng)絡(luò)技術(shù),在P2P模型中,網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)是平等的,都同時(shí)兼有服務(wù)器和客戶端的功能,節(jié)點(diǎn)之間可以直接互連進(jìn)行數(shù)據(jù)的交互,從而消除了傳統(tǒng)C/S架構(gòu)中服務(wù)器端的瓶頸問題。利用P2P技術(shù)能夠充分挖掘網(wǎng)絡(luò)邊緣節(jié)點(diǎn)的能力,降低數(shù)據(jù)傳輸對(duì)中心服務(wù)器的依賴[5]。當(dāng)前,P2P技術(shù)在Internet網(wǎng)絡(luò)中發(fā)展十分迅速,我們熟悉的即時(shí)通訊、BT下載、網(wǎng)絡(luò)電視等應(yīng)用都采用了該技術(shù)。
下面介紹在分布式系統(tǒng)數(shù)據(jù)共享平臺(tái)設(shè)計(jì)中,如何將斷點(diǎn)續(xù)傳和P2P這兩種技術(shù)相結(jié)合,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)母呖煽啃院透咝省?/p>
正如之前所約定的,分布式系統(tǒng)中擁有最新的數(shù)據(jù)某個(gè)節(jié)點(diǎn)定義為服務(wù)器端節(jié)點(diǎn)。在P2P模型中,該服務(wù)器端節(jié)點(diǎn)不再作為數(shù)據(jù)內(nèi)容的提供者,而是作為一個(gè)索引服務(wù)器。索引服務(wù)器記錄了數(shù)據(jù)內(nèi)容的索引和節(jié)點(diǎn)信息,輔助其他節(jié)點(diǎn)之間建立連接,數(shù)據(jù)的傳輸只在節(jié)點(diǎn)之間進(jìn)行,不通過(guò)索引服務(wù)器。只有其他所有節(jié)點(diǎn)都沒有對(duì)應(yīng)的數(shù)據(jù)內(nèi)容時(shí),索引服務(wù)器才將內(nèi)容直接發(fā)給數(shù)據(jù)申請(qǐng)者[6]。
首先,服務(wù)器端節(jié)點(diǎn)將文件分割為固定大小的文件塊,文件塊的大小應(yīng)根據(jù)傳輸協(xié)議數(shù)據(jù)包的大小而定。因?yàn)楫?dāng)數(shù)據(jù)傳輸時(shí),每一幀數(shù)據(jù)都會(huì)加上傳輸協(xié)議的報(bào)文頭,如果文件塊太大則會(huì)削弱斷點(diǎn)續(xù)傳的效果,而如果太小則會(huì)因?yàn)榧恿颂嗟膱?bào)文頭而造成線路帶寬的浪費(fèi)。假定該文件被分割成n塊,分別為f1,f2,…,fn,該分布式系統(tǒng)一共有m個(gè)節(jié)點(diǎn)P1,P2,…,Pm,建立文件塊和節(jié)點(diǎn)的索引表,表示該文件塊已存在于系統(tǒng)中哪些節(jié)點(diǎn),索引表的格式如表1所示。
表1 文件塊索引表
[文件塊\&存儲(chǔ)節(jié)點(diǎn)鏈表\&f1\&P3\&P5\&P6\&\&\&f2\&P2\&P7\&P9\&P16\&\&f3\&P9\&P1\&\&\&\&…\&\&\&\&\&\&fn\&P8\&\&\&\&\&]
索引表在初始創(chuàng)建時(shí),每個(gè)文件塊的存儲(chǔ)節(jié)點(diǎn)鏈表為空,隨著其他節(jié)點(diǎn)下載文件塊成功,對(duì)應(yīng)的節(jié)點(diǎn)信息將被填入動(dòng)態(tài)的存儲(chǔ)節(jié)點(diǎn)鏈表。數(shù)據(jù)同步開始時(shí),由某個(gè)需要數(shù)據(jù)同步的節(jié)點(diǎn)Pi向索引服務(wù)器發(fā)送同步請(qǐng)求,索引服務(wù)器收到請(qǐng)求后查詢文件塊索引表,找到每個(gè)文件塊對(duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn)鏈表,按如下步驟進(jìn)行處理:
⑴ 如果文件塊f1對(duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn)鏈表為空,則由索引服務(wù)器直接發(fā)送數(shù)據(jù)給節(jié)點(diǎn)Pi,數(shù)據(jù)傳輸完成后,將節(jié)點(diǎn)Pi插入文件塊f1的存儲(chǔ)節(jié)點(diǎn)鏈表中;
⑵ 如果文件塊f1對(duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn)鏈表不為空(假設(shè)鏈表內(nèi)容如表1所示),則通知申請(qǐng)節(jié)點(diǎn)Pi與f1存儲(chǔ)節(jié)點(diǎn)鏈表的第一個(gè)節(jié)點(diǎn)(即節(jié)點(diǎn)P3)建立連接,由節(jié)點(diǎn)P3發(fā)送數(shù)據(jù)給節(jié)點(diǎn)Pi,數(shù)據(jù)傳輸完成后,將節(jié)點(diǎn)Pi插入到存儲(chǔ)節(jié)點(diǎn)鏈表的頭部;
⑶ 如果申請(qǐng)節(jié)點(diǎn)Pi與鏈表的第一個(gè)節(jié)點(diǎn)建立連接失敗或者數(shù)據(jù)傳輸失敗,即節(jié)點(diǎn)P3與Pi建鏈?zhǔn)』驍?shù)據(jù)傳輸失敗,那么從f1存儲(chǔ)節(jié)點(diǎn)鏈表中刪除第一個(gè)節(jié)點(diǎn)P3,通知Pi與下一個(gè)節(jié)點(diǎn)(即P5)建立連接并傳輸數(shù)據(jù),重復(fù)該步驟直到數(shù)據(jù)傳輸成功為止;
⑷ 如果執(zhí)行步驟⑶始終未實(shí)現(xiàn)數(shù)據(jù)的成功傳輸,最終使得f1存儲(chǔ)節(jié)點(diǎn)鏈表為空,則重復(fù)步驟⑴;
⑸ 對(duì)其他的文件塊f2,f3,…,fn按照步驟⑴到⑷進(jìn)行同樣的處理。
在上述處理中,當(dāng)發(fā)現(xiàn)存儲(chǔ)節(jié)點(diǎn)鏈表中的節(jié)點(diǎn)無(wú)法正常建立連接或進(jìn)行數(shù)據(jù)傳輸時(shí),索引服務(wù)器將刪除該失效節(jié)點(diǎn)以提高節(jié)點(diǎn)的查找效率。同時(shí),新增加的有效節(jié)點(diǎn)插入鏈表的頭部,也是為了提高存儲(chǔ)節(jié)點(diǎn)鏈表的實(shí)時(shí)有效性[7]。
通過(guò)真實(shí)環(huán)境試驗(yàn)后發(fā)現(xiàn):如果采用傳統(tǒng)的C/S架構(gòu)進(jìn)行數(shù)據(jù)同步,當(dāng)客戶端逐步增加時(shí),下載的速度逐步下降,當(dāng)客戶端數(shù)目增長(zhǎng)到一定數(shù)目時(shí),受到帶寬和性能的限制,服務(wù)器甚至將無(wú)法響應(yīng)客戶端的更新請(qǐng)求;而采用P2P技術(shù)后,隨著客戶端數(shù)目的增加,下載的速度逐步提高,當(dāng)客戶端的數(shù)目增長(zhǎng)達(dá)到文件塊的數(shù)目時(shí),下載速度達(dá)到頂峰,并且隨著客戶端的數(shù)目繼續(xù)增加,下載的速度基本保持在頂峰值,沒有出現(xiàn)明顯的下降。
5 結(jié)束語(yǔ)
分布式系統(tǒng)數(shù)據(jù)共享多數(shù)采用了單服務(wù)器共享、多客戶端訪問的模式,存在著數(shù)據(jù)發(fā)布服務(wù)器負(fù)載有限以及網(wǎng)絡(luò)傳輸瓶頸的問題。本文提出的方案通過(guò)P2P技術(shù)降低對(duì)數(shù)據(jù)發(fā)布服務(wù)器的依賴,并結(jié)合文件壓縮、數(shù)據(jù)加密、斷點(diǎn)續(xù)傳等技術(shù)手段實(shí)現(xiàn)數(shù)據(jù)共享的可靠性和傳輸效率,有效的節(jié)省了數(shù)據(jù)同步時(shí)的服務(wù)器開銷與網(wǎng)絡(luò)帶寬。隨著綜合電子信息系統(tǒng)的網(wǎng)絡(luò)朝著扁平化發(fā)展,如何合理地利用P2P技術(shù),在大規(guī)模分布式系統(tǒng)中實(shí)現(xiàn)全部信息的全網(wǎng)絡(luò)共享,還需要進(jìn)一步探討。同時(shí),在采用P2P技術(shù)后,如何對(duì)網(wǎng)絡(luò)進(jìn)行管理、規(guī)劃以及數(shù)據(jù)流量的監(jiān)控,避免出現(xiàn)網(wǎng)絡(luò)風(fēng)暴或堵塞,這些問題還需要后續(xù)更加深入的研究。
參考文獻(xiàn):
[1] 李瑋,林明.基于自適應(yīng)算術(shù)編碼的字符型報(bào)文壓縮技術(shù)[J].科學(xué)技
術(shù)與工程,2013.13(10):2836-2837
[2] 張鳳林,劉思峰.Huffman*:一個(gè)改進(jìn)的Huffman數(shù)據(jù)壓縮算法[J].計(jì)
算機(jī)工程與應(yīng)用,2007.43(2):73-74
[3] 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)[M].清華大學(xué)出版社,2006.
[4] 陳傳波,祝中濤.RSA算法應(yīng)用及實(shí)現(xiàn)細(xì)節(jié)[J].計(jì)算機(jī)工程與科學(xué),
2006.28(9):13-14
[5] 鄭真,曹寶香.基于P2P的分布式軟件構(gòu)件庫(kù)檢索機(jī)制[J]. 計(jì)算機(jī)工
程,2010.36(2):48-50
[6] 周文莉,吳曉非.P2P技術(shù)綜述[J].計(jì)算機(jī)工程與設(shè)計(jì),2006.27(1):
76-79
[7] 張明軍,彭婭等.P2P流媒體服務(wù)方案及其關(guān)鍵技術(shù)研究[J].計(jì)算機(jī)工
程,2013.39(1):126-127