專利名稱:一種數(shù)據(jù)分發(fā)方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)分發(fā)技術(shù),具體涉及一種數(shù)據(jù)分發(fā)方法、裝置及系統(tǒng)。
技術(shù)背景點對點(P2P: Peer To Peer)文件共享是目前P2P領(lǐng)域的主流應(yīng)用,這類軟件數(shù)量多而且比較成熟,借助這類軟件分布在世界各地的普通用戶可以方便的與他人分享各種文件。但是在使用這類軟件下載其它用戶共享的文件時發(fā)現(xiàn)經(jīng)常出現(xiàn)文件無法下載完整的現(xiàn)象,這是由于在種子文件的數(shù)據(jù)塊在沒有完全分發(fā)到系統(tǒng)中各個網(wǎng)絡(luò)節(jié)點(peer)的時候種子就下線造成的,使種子文件的數(shù)據(jù)塊沒有在系統(tǒng)中有備份,沒有備份即某些種子文件的數(shù)據(jù)塊只在 共享種子文件的peer上有,而在系統(tǒng)中的其他任一 peer上都沒有,有備份的情況是種子文件的數(shù)據(jù)塊在至少一個其他的peer上有保存。發(fā)生這種情況的 時候除非種子重新上線才能使各peer下載完成,這種操作俗稱補種,否則等 待再長的時間也不可能把文件下載完整?,F(xiàn)有的比特洪流(BitTorrent)系統(tǒng)可以提供較高的文件下載成功率,在 BitTorrent系統(tǒng)中,種子是P2P網(wǎng)絡(luò)中的某一個Peer,由于P2P網(wǎng)絡(luò)的特性就 是Peer隨時上線、隨時下線,Peer的這種隨意性使得文件下載的完整性變得 不確定。為了盡可能提高文件下載到完整性,種子將共享的文件分成數(shù)據(jù)塊, BitTorrent系統(tǒng)使用最少優(yōu)先(Rarest First)選擇算法來完成對整個文件所有 數(shù)據(jù)塊的下載,最少優(yōu)先策略中每個peer都優(yōu)先選擇整個系統(tǒng)中最少的數(shù)據(jù) 塊去下載,而那些在系統(tǒng)中相對較多的數(shù)據(jù)塊,放在后面下載,這樣,整個 系統(tǒng)就趨向于一種更優(yōu)的狀態(tài)。BitTorrent通過have消息的交互來計算系統(tǒng)中哪些數(shù)據(jù)塊最少,在下載過 程中,每個peer都會不停的收到其它peer發(fā)來的have消息,每個have消息 都表明對方擁有了某個數(shù)據(jù)塊,因而每個peer通過計數(shù)就可以知道系統(tǒng)中哪
些數(shù)據(jù)塊最少,從而向種子請求下載系統(tǒng)中最少的那些數(shù)據(jù)塊,種子根據(jù)接收的請求向peer發(fā)送peer所請求的數(shù)據(jù)塊,從而使BitTorrent系統(tǒng)中各個數(shù) 據(jù)塊的數(shù)量比較平均。但是,由于BitTorrent系統(tǒng)中交換文件數(shù)據(jù)塊信息的have消息是局部的, 不是系統(tǒng)全局的,所以peer計算的較少的數(shù)據(jù)塊在整個系統(tǒng)中可能是較多的, 而peer計算的較多的數(shù)據(jù)塊在整個系統(tǒng)中可能是較少的,從而使種子共享的 文件不能最快的分發(fā)到系統(tǒng)中,從而使種子的在線時長較短時,不能保證系 統(tǒng)中的peer能夠完整的下載到種子共享的文件。發(fā)明內(nèi)容本發(fā)明實施例解決的技術(shù)問題是提供一種數(shù)據(jù)分發(fā)方法、裝置及系統(tǒng), 使用本發(fā)明實施例提供的技術(shù)方案,可以最快的將種子共享的文件分發(fā)到文 件共享系統(tǒng)。本發(fā)明實施例的目的是通過以下技術(shù)方案實現(xiàn)的本發(fā)明實施例提供了一種數(shù)據(jù)分發(fā)方法,包括接收請求數(shù)據(jù)塊的請求消息;從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊;發(fā)送選擇的所述數(shù)據(jù)塊。優(yōu)選的,發(fā)送選擇的所述數(shù)據(jù)塊后進(jìn)一步包括 標(biāo)記發(fā)送的所述數(shù)據(jù)塊為已經(jīng)發(fā)送。優(yōu)選的,若所述請求消息包括請求的數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識,接收請求數(shù) 據(jù)塊的請求消息后進(jìn)一步包括判斷所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊是否標(biāo)記為尚未發(fā)送;如果是,選擇所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊;進(jìn)入發(fā)送選擇的所述數(shù)據(jù) 塊的步驟;如果否,進(jìn)入從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊的步驟;發(fā)送選
擇的所述數(shù)據(jù)塊時進(jìn)一步發(fā)送選擇的所述數(shù)據(jù)塊對應(yīng)的數(shù)據(jù)塊標(biāo)識。優(yōu)選的,判斷所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊是否標(biāo)記為尚未發(fā)送前進(jìn)一 步包括判斷是否有標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊,如果是,進(jìn)入判斷所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊是否標(biāo)記為尚未發(fā)送的步驟;如果否,選擇所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊;進(jìn)入發(fā)送選擇的所述數(shù)據(jù) 塊的步驟。優(yōu)選的,隨機或順序從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊。優(yōu)選的,所述請求消息由請求所述數(shù)據(jù)塊的網(wǎng)絡(luò)節(jié)點發(fā)送,所述網(wǎng)絡(luò)節(jié)點在使用最少優(yōu)先算法確定要請求的數(shù)據(jù)塊后,構(gòu)建所述請 求消息。本發(fā)明實施例還提供了一種數(shù)據(jù)分發(fā)裝置,包括 請求消息接收單元,用于接收請求數(shù)據(jù)塊的請求消息; 數(shù)據(jù)塊選擇單元,用于從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊; 數(shù)據(jù)塊發(fā)送單元,用于發(fā)送選擇的所述數(shù)據(jù)塊。 優(yōu)選的,還包括標(biāo)記單元,用于將發(fā)送的所述數(shù)據(jù)塊標(biāo)記為已經(jīng)發(fā)送。優(yōu)選的,所述請求消息包括請求的數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識,所述裝置還包括標(biāo)記判斷單元,用于在所述請求消息接收單元接收包括所述數(shù)據(jù)塊標(biāo)識 的請求消息后,判斷所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊是否標(biāo)記為尚未發(fā)送;如果是,觸發(fā)所述數(shù)據(jù)塊選擇單元從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中,選擇 所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊;如果否,觸發(fā)所述數(shù)據(jù)塊選擇單元從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù) 據(jù)塊,所述數(shù)據(jù)塊發(fā)送單元發(fā)送選擇的所述數(shù)據(jù)塊時進(jìn)一步發(fā)送選擇的所述數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識。優(yōu)選的,還包括數(shù)據(jù)塊判斷單元,用于在所述請求消息接收單元接收包括所述數(shù)據(jù)塊標(biāo)識的請求消息后,判斷是否有標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊;如果是,觸發(fā)所述標(biāo)記判斷單元判斷所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊是否 標(biāo)i己為尚未發(fā)送;如果否,觸發(fā)所述數(shù)據(jù)塊選擇單元選擇所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊。本發(fā)明實施例還提供了 一種數(shù)據(jù)分發(fā)系統(tǒng),包括網(wǎng)絡(luò)節(jié)點一和網(wǎng)絡(luò)節(jié)點 二,其中網(wǎng)絡(luò)節(jié)點一,用于發(fā)送請求數(shù)據(jù)塊的請求消息;并接收來自網(wǎng)絡(luò)節(jié)點二 的數(shù)據(jù);網(wǎng)絡(luò)節(jié)點二,用于接收所述請求消息,從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選 擇數(shù)據(jù)塊;發(fā)送選擇的所述數(shù)據(jù)塊。從本發(fā)明實施例提供的以上技術(shù)方案可以看出,由于本發(fā)明提供的實施 例在接收到請求數(shù)據(jù)塊的請求消息后,從尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊發(fā) 送,從而在文件分成的數(shù)據(jù)塊尚未完全發(fā)送時,每次發(fā)送都是一個新的數(shù)據(jù) 塊,因而可以最快的將共享的文件在文件共享系統(tǒng)中備份;因而即使種子只 向網(wǎng)絡(luò)中發(fā)送了與文件大小相同的數(shù)據(jù)就下線,文件共享系統(tǒng)中的客戶端也 可以最終下栽到完整的文件;從而提高文件共享系統(tǒng)中文件的下載成功率。
圖1為本發(fā)明實施例中數(shù)據(jù)分發(fā)方法實施例一的流程圖; 圖2為本發(fā)明實施例中數(shù)據(jù)分發(fā)方法實施例二的流程圖; 圖3為本發(fā)明實施例中數(shù)據(jù)分發(fā)方法實施例三的流程圖; 圖4為本發(fā)明實施例中數(shù)據(jù)分發(fā)裝置實施例一的結(jié)構(gòu)圖; 圖5為本發(fā)明實施例中數(shù)據(jù)分發(fā)裝置實施例二的結(jié)構(gòu)圖6為本發(fā)明實施例中數(shù)據(jù)分發(fā)裝置實施例三的結(jié)構(gòu)圖; 圖7為本發(fā)明實施例中數(shù)據(jù)分發(fā)系統(tǒng)實施例的結(jié)構(gòu)圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案、及優(yōu)點更加清楚明白,以下參照附圖并 舉實施例,對本發(fā)明進(jìn)一步詳細(xì)說明。本發(fā)明提供的數(shù)據(jù)分發(fā)方法實施例一如圖1所示,包括步驟IOI、接收請求數(shù)據(jù)塊的請求消息;請求消息由文件共享系統(tǒng)中的客戶端發(fā)送,在P2P網(wǎng)絡(luò)中,該客戶端為 網(wǎng)絡(luò)中除共享文件的peer外的任一 peer;客戶端在獲取了種子信息后,可以 根據(jù)預(yù)置的方式發(fā)送請求消息請求相應(yīng)的數(shù)據(jù)塊;例如可以隨4幾或順序的從 本客戶端還沒有的數(shù)據(jù)塊中選擇請求的數(shù)據(jù)塊;優(yōu)選的,還可以使用最少優(yōu) 先算法選擇請求的數(shù)據(jù)塊;其中,種子信息包括種子位置、文件大小及文件 分成的數(shù)據(jù)塊等;種子信息可以保存在web服務(wù)器上,任何想獲取種子信息 的peer都可以從web服務(wù)器上獲取;或者也可以由共享文件的peer向其他的 peer發(fā)送;也可以通過P2P軟件提供的功能共享等方式共享種子信息;步驟102、從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊;在共享文件后,將文件分成數(shù)據(jù)塊,在沒有發(fā)送數(shù)據(jù)塊時,將每個數(shù)據(jù) 塊都標(biāo)記為尚未發(fā)送;具體的標(biāo)記方式可以將所有數(shù)據(jù)塊保存在一個表中, 用每個數(shù)據(jù)塊在表中的一個屬性來標(biāo)記該數(shù)據(jù)塊是尚未發(fā)送,還是已經(jīng)發(fā)送; 也可以將所有尚未發(fā)送的數(shù)據(jù)塊保存在一個表中,當(dāng)一個數(shù)據(jù)塊被發(fā)送時, 從該表中刪除該數(shù)據(jù)塊,當(dāng)該表中的數(shù)據(jù)塊全部刪除時,則所有的數(shù)據(jù)塊都 已經(jīng)被發(fā)送過一次;當(dāng)然也可以采用其他的標(biāo)記方式。在接收到請求數(shù)據(jù)塊 的請求消息后,從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊;步驟103、發(fā)送選擇的數(shù)據(jù)塊。從上可知,使用數(shù)據(jù)分發(fā)方法的本實施例,在接收到請求數(shù)據(jù)塊的請求 消息后,從尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊發(fā)送,從而在文件分成的數(shù)據(jù)塊尚未完全發(fā)送時,每次發(fā)送都是一個新的數(shù)據(jù)塊,使種子文件的數(shù)據(jù)塊能夠盡快的分發(fā)到系統(tǒng)中的各個peer,使種子文件的數(shù)據(jù)塊在系統(tǒng)中的其他peer 上都能夠找到,因而可以最快的將共享的文件在文件共享系統(tǒng)中備份;因而 即使種子只向網(wǎng)絡(luò)中發(fā)送了與文件大小相同的數(shù)據(jù)就下線,文件共享系統(tǒng)中 的客戶端也可以最終下載到完整的文件;從而提高文件共享系統(tǒng)中文件的下 載成功率。在實際應(yīng)用中,發(fā)送選擇的數(shù)據(jù)塊后進(jìn)一步包括標(biāo)記發(fā)送的數(shù)據(jù)塊為 已經(jīng)發(fā)送的步驟,從而使每個發(fā)送的數(shù)據(jù)塊都被記錄,使從標(biāo)記為尚未發(fā)送 的數(shù)據(jù)塊中選擇數(shù)據(jù)塊的步驟更為有效。本發(fā)明實施例還提供了數(shù)據(jù)分發(fā)方法的實施例二,如圖2所示,包括步驟201、接收請求數(shù)據(jù)塊的請求消息,該請求消息包括請求的數(shù)據(jù)塊的 數(shù)據(jù)塊標(biāo)識;步驟202、判斷數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊是否標(biāo)記為尚未發(fā)送;如果是, 進(jìn)入步驟203;如果否,進(jìn)入步驟205;由于請求消息中包括了客戶端所請求的數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識,為了滿足 客戶端的需要,對數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊是否標(biāo)記為尚未發(fā)送進(jìn)行判斷;步驟203、從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中,選擇數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊;如果數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊標(biāo)記為尚未發(fā)送,則可以滿足客戶端的請 求,選擇數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊;步驟204、發(fā)送選擇的數(shù)據(jù)塊;結(jié)束;步驟205、從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊;由于請求消息所請求的數(shù)據(jù)塊為已經(jīng)發(fā)送,即該數(shù)據(jù)塊在文件共享系統(tǒng) 中已有備份,為了提高文件的下載成功率,因而不向客戶端返回其所請求的 數(shù)據(jù)塊,而是從尚未發(fā)送的數(shù)據(jù)塊中選擇一個數(shù)據(jù)塊,具體的可以隨機選擇 一個尚未發(fā)送的數(shù)據(jù)塊,也可以采用預(yù)置的方式選擇數(shù)據(jù)塊,如順序選擇等; 步驟206、發(fā)送選擇的數(shù)據(jù)塊和該數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識;結(jié)束; 由于發(fā)送的并不是客戶端所請求的數(shù)據(jù)塊,因而在發(fā)送選擇的數(shù)據(jù)塊時 進(jìn)一步發(fā)送該數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識,從而使客戶端獲知得到的數(shù)據(jù)塊并不是 請求的數(shù)據(jù)塊,使客戶端可以重新請求未獲取的數(shù)據(jù)塊,并且可以根據(jù)接收 的數(shù)據(jù)塊標(biāo)識將接收的數(shù)據(jù)塊保存在正確的位置;本實施例中,對請求消息中包括的數(shù)據(jù)塊標(biāo)識進(jìn)行判斷,如果數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊標(biāo)記為尚未發(fā)送,則可以直接發(fā)送請求消息所請求的數(shù)據(jù)塊; 若數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊已經(jīng)發(fā)送,則不直接發(fā)送請求消息所請求的數(shù)據(jù) 塊,而是從尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊發(fā)送,從而使由共享的文件分成 的數(shù)據(jù)塊能盡快在文件共享系統(tǒng)中備份,因而提高文件的下載成功率。本發(fā)明進(jìn)一步提供了數(shù)據(jù)分發(fā)方法的實施例三,如圖3所示,包括步驟301、接收請求數(shù)據(jù)塊的請求消息,該請求消息包括請求的數(shù)據(jù)塊的 數(shù)據(jù)塊標(biāo)識;步驟302、判斷是否有標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊;如果是,進(jìn)入步驟303; 如果否,進(jìn)入步驟308;在接收到請求數(shù)據(jù)塊的請求消息后,判斷是否有標(biāo)記為尚未發(fā)送的數(shù)據(jù) 塊,如果沒有,則可以直接選擇請求消息所請求的數(shù)據(jù)塊,從而提高數(shù)據(jù)分 發(fā)的速度;步驟303、判斷數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊是否標(biāo)記為尚未發(fā)送;如果是, 進(jìn)入步驟304;如果否,進(jìn)入步驟306;步驟304、從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中,選擇數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊;步驟305、發(fā)送選擇的數(shù)據(jù)塊;結(jié)束;步驟306、從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊;步驟307、發(fā)送選擇的數(shù)據(jù)塊和該數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識;結(jié)束;步驟308、選擇數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊;進(jìn)入步驟305;從上可知,本實施例在接收到請求數(shù)據(jù)塊的請求消息后,對是否有標(biāo)記 為尚未發(fā)送的數(shù)據(jù)塊進(jìn)行判斷,從而在沒有尚未發(fā)送的數(shù)據(jù)塊時,直接發(fā)送
請求消息所請求的數(shù)據(jù)塊,提高數(shù)據(jù)分發(fā)的速度,提高系統(tǒng)效率。在實際應(yīng)用中,可以采用如下的機制進(jìn)一步提高系統(tǒng)效率在沒有尚未發(fā)送的數(shù)據(jù)塊后,不進(jìn)行任何判斷,直接發(fā)送請求消息所請求的數(shù)據(jù)塊,從 而進(jìn)一步提高系統(tǒng)效率。與數(shù)據(jù)分發(fā)方法對應(yīng),本發(fā)明實施例提供了相應(yīng)的數(shù)據(jù)分發(fā)裝置,圖4 描述了本發(fā)明提供的數(shù)據(jù)分發(fā)裝置的實施例一,包括請求消息接收單元401,用于接收請求數(shù)據(jù)塊的請求消息;數(shù)據(jù)塊選擇單元402,用于從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊;數(shù)據(jù)塊發(fā)送單元403,用于發(fā)送選擇的數(shù)據(jù)塊。從上可知,數(shù)據(jù)分發(fā)裝置的本實施例在接收到請求數(shù)據(jù)塊的請求消息后, 從尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊發(fā)送,從而在文件分成的數(shù)據(jù)塊尚未完全 發(fā)送時,每次發(fā)送都是一個新的數(shù)據(jù)塊,因而可以最快的將共享的文件在文 件共享系統(tǒng)中備份;因而即使種子只向網(wǎng)絡(luò)中發(fā)送了與文件大小相同的數(shù)據(jù) 就下線,文件共享系統(tǒng)中的客戶端也可以最終下載到完整的文件;從而提高 文件共享系統(tǒng)中文件的下載成功率。在實際應(yīng)用中,本發(fā)明實施例提供的數(shù)據(jù)分發(fā)裝置還可以包括標(biāo)記單 元,用于將發(fā)送的所述數(shù)據(jù)塊標(biāo)記為已經(jīng)發(fā)送;從而使每個發(fā)送的數(shù)據(jù)塊都 被記錄,使從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊的步驟更為有效。本發(fā)明還提供了數(shù)據(jù)分發(fā)裝置的實施例二,如圖5所示,包括請求消息接收單元501,用于接收請求數(shù)據(jù)塊的請求消息,請求消息包 括請求的數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識;標(biāo)記判斷單元502,用于在請求消息接收單元接收包括數(shù)據(jù)塊標(biāo)識的請 求消息后,判斷數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊是否標(biāo)記為尚未發(fā)送;數(shù)據(jù)塊選擇單元503,用于在標(biāo)記判斷單元判斷數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù) 塊標(biāo)記為尚未發(fā)送時,/人標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中,選褲,數(shù)據(jù)塊標(biāo)識對應(yīng) 的數(shù)據(jù)塊;或用于在標(biāo)記判斷單元判斷數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊標(biāo)記為已經(jīng) 發(fā)送時,從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊;
數(shù)據(jù)塊發(fā)送單元504,用于發(fā)送選擇的數(shù)據(jù)塊;在標(biāo)記判斷單元判斷數(shù) 據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊標(biāo)記為尚未發(fā)送時,進(jìn)一步發(fā)送選擇的數(shù)據(jù)塊的數(shù)據(jù) 塊標(biāo)識。本實施例中,對請求消息中包括的數(shù)據(jù)塊標(biāo)識進(jìn)行判斷,如果數(shù)據(jù)塊標(biāo) 識對應(yīng)的數(shù)據(jù)塊標(biāo)記為尚未發(fā)送,則可以直接發(fā)送請求消息所請求的數(shù)據(jù)塊; 若數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊已經(jīng)發(fā)送,則不直接發(fā)送請求消息所請求的數(shù)據(jù) 塊,而是從尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊發(fā)送,從而使由共享的文件分成 的數(shù)據(jù)塊能盡快在文件共享系統(tǒng)中備份,因而提高文件的下載成功率。本發(fā)明還提供了數(shù)據(jù)分發(fā)裝置的實施例三,如圖6所示,包括請求消息接收單元601,用于接收請求數(shù)據(jù)塊的請求消息,請求消息包 括請求的數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識;數(shù)據(jù)塊判斷單元602,用于在請求消息接收單元接收包括數(shù)據(jù)塊標(biāo)識的 請求消息后,判斷是否有標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊;標(biāo)記判斷單元603,用于在數(shù)據(jù)塊判斷單元判斷有標(biāo)記為尚未發(fā)送的數(shù) 據(jù)塊時,判斷數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊是否標(biāo)記為尚未發(fā)送;數(shù)據(jù)塊選擇單元604,用于在標(biāo)記判斷單元判斷數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù) 塊標(biāo)記為尚未發(fā)送時,從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中,選擇數(shù)據(jù)塊標(biāo)識對應(yīng) 的數(shù)據(jù)塊;或用于在標(biāo)記判斷單元判斷數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊標(biāo)記為已經(jīng) 發(fā)送時,從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊;或用于在數(shù)據(jù)塊判斷單 元判斷沒有標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊時,選擇數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊;數(shù)據(jù)塊發(fā)送單元605,用于發(fā)送選擇的數(shù)據(jù)塊;在標(biāo)記判斷單元判斷數(shù) 據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊標(biāo)記為尚未發(fā)送時,進(jìn)一步發(fā)送選擇的數(shù)據(jù)塊的數(shù)據(jù) 塊標(biāo)識。從上可知,本實施例在接收到請求數(shù)據(jù)塊的請求消息后,對是否有標(biāo)記 為尚未發(fā)送的數(shù)據(jù)塊進(jìn)行判斷,從而在沒有尚未發(fā)送的數(shù)據(jù)塊時,直接發(fā)送 請求消息所請求的數(shù)據(jù)塊,提高數(shù)據(jù)分發(fā)的速度,提高系統(tǒng)效率。本發(fā)明還提供了數(shù)據(jù)分發(fā)系統(tǒng)的實施例,如圖7所示,包括網(wǎng)絡(luò)節(jié)點一 701和網(wǎng)絡(luò)節(jié)點二 702,其中網(wǎng)絡(luò)節(jié)點一 701,用于發(fā)送請求數(shù)據(jù)塊的請求消息;接收來自網(wǎng)絡(luò)節(jié)點 二的數(shù)據(jù)塊;網(wǎng)絡(luò)節(jié)點二 702,用于接收所述請求消息,從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊 中選擇數(shù)據(jù)塊;發(fā)送選擇的所述數(shù)據(jù)塊。從上可知,使用數(shù)據(jù)分發(fā)系統(tǒng)的本實施例,服務(wù)器在接收到請求數(shù)據(jù)塊 的請求消息后,從尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊發(fā)送,從而在文件分成的 數(shù)據(jù)塊尚未完全發(fā)送時,每次發(fā)送都是一個新的數(shù)據(jù)塊,因而可以最快的將 共享的文件在文件共享系統(tǒng)中備份;因而即使種子只向網(wǎng)絡(luò)中發(fā)送了與文件 大小相同的數(shù)據(jù)就下線,文件共享系統(tǒng)中的客戶端也可以最終下載到完整的 文件;從而提高文件共享系統(tǒng)中文件的下載成功率。本實施例只描述了一個 服務(wù)器和一個客戶端的情況,在實際應(yīng)用中,會有多個服務(wù)器和多個客戶端 的情況,在這種情況下,處理過程與一個服務(wù)器和一個客戶端的處理過程類 似,本說明書不再贅述。是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機 可讀存儲介質(zhì)中,該程序在執(zhí)行時,包括如下步驟接收請求數(shù)據(jù)塊的請求消息;從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊;發(fā)送選擇的數(shù)據(jù)塊;上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。以上對本發(fā)明實施例所提供的一種數(shù)據(jù)分發(fā)方法、裝置及系統(tǒng)進(jìn)行了詳對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范 圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1、一種數(shù)據(jù)分發(fā)方法,其特征在于,包括接收請求數(shù)據(jù)塊的請求消息;從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊;發(fā)送選擇的所述數(shù)據(jù)塊。
2、 如權(quán)利要求1所述的數(shù)據(jù)分發(fā)方法,其特征在于,發(fā)送選4奪的所述數(shù) 據(jù)塊后進(jìn)一步包括標(biāo)記發(fā)送的所述數(shù)據(jù)塊為已經(jīng)發(fā)送。
3、 如權(quán)利要求2所述的數(shù)據(jù)分發(fā)方法,其特征在于,若所述請求消息包 括請求的數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識,接收請求數(shù)據(jù)塊的請求消息后進(jìn)一步包括判斷所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊是否標(biāo)記為尚未發(fā)送; 如果是,選擇所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊;進(jìn)入發(fā)送選擇的所述數(shù)據(jù) 塊的步驟;如果否,進(jìn)入從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊的步驟;發(fā)送選 擇的所述數(shù)據(jù)塊時進(jìn)一步發(fā)送選擇的所述數(shù)據(jù)塊對應(yīng)的數(shù)據(jù)塊標(biāo)識。
4、 如權(quán)利要求3所述的數(shù)據(jù)分發(fā)方法,其特征在于,判斷所述數(shù)據(jù)塊標(biāo) 識對應(yīng)的數(shù)據(jù)塊是否標(biāo)記為尚未發(fā)送前進(jìn)一步包括判斷是否有標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊,如果是,進(jìn)入判斷所述數(shù)據(jù)塊標(biāo) 識對應(yīng)的數(shù)據(jù)塊是否標(biāo)記為尚未發(fā)送的步驟;如果否,選擇所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊;進(jìn)入發(fā)送選擇的所述數(shù)據(jù) 塊的步驟。
5、 如權(quán)利要求1至4任一所述的數(shù)據(jù)分發(fā)方法,其特征在于,隨機或順 序從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊。
6、 如權(quán)利要求1至4任一所述的數(shù)據(jù)分發(fā)方法,其特征在于,所述請求 消息由請求所述數(shù)據(jù)塊的網(wǎng)絡(luò)節(jié)點發(fā)送,所述網(wǎng)絡(luò)節(jié)點在使用最少優(yōu)先算法確定要請求的數(shù)據(jù)塊后,構(gòu)建所述請 求消息。
7、 一種數(shù)據(jù)分發(fā)裝置,其特征在于,包括請求消息接收單元,用于接收請求數(shù)據(jù)塊的請求消息; 數(shù)據(jù)塊選擇單元,用于從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊; 數(shù)據(jù)塊發(fā)送單元,用于發(fā)送選擇的所述數(shù)據(jù)塊。
8、 如權(quán)利要求7所述的數(shù)據(jù)分發(fā)裝置,其特征在于,還包括 標(biāo)記單元,用于將發(fā)送的所述數(shù)據(jù)塊標(biāo)記為已經(jīng)發(fā)送。
9、 如權(quán)利要求8所述的數(shù)據(jù)分發(fā)裝置,其特征在于,所述請求消息包括 請求的數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識,所述裝置還包括標(biāo)記判斷單元,用于在所述請求消息接收單元接收包括所述數(shù)據(jù)塊標(biāo)識 的請求消息后,判斷所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊是否標(biāo)記為尚未發(fā)送;如果是,觸發(fā)所述數(shù)據(jù)塊選擇單元從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中,選擇 所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊;如果否,觸發(fā)所述數(shù)據(jù)塊選擇單元從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù) 據(jù)塊,所述數(shù)據(jù)塊發(fā)送單元發(fā)送選擇的所述數(shù)據(jù)塊時進(jìn)一步發(fā)送選擇的所述 數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識。
10、 如權(quán)利要求9所述的數(shù)據(jù)分發(fā)裝置,其特征在于,還包括 數(shù)據(jù)塊判斷單元,用于在所述請求消息接收單元接收包括所述數(shù)據(jù)塊標(biāo)識的請求消息后,判斷是否有標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊;如果是,觸發(fā)所述標(biāo)記判斷單元判斷所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊是否 標(biāo)i己為尚未發(fā)送;如果否,觸發(fā)所述數(shù)據(jù)塊選擇單元選擇所述數(shù)據(jù)塊標(biāo)識對應(yīng)的數(shù)據(jù)塊。
11、 一種數(shù)據(jù)分發(fā)系統(tǒng),其特征在于,包括網(wǎng)絡(luò)節(jié)點一和網(wǎng)絡(luò)節(jié)點二, 其中網(wǎng)絡(luò)節(jié)點一,用于發(fā)送請求數(shù)據(jù)塊的請求消息;接收來自網(wǎng)絡(luò)節(jié)點二的 數(shù)據(jù)塊;網(wǎng)絡(luò)節(jié)點二,用于接收所述請求消息,從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選 擇數(shù)據(jù)塊;發(fā)送選擇的所述數(shù)據(jù)塊。
全文摘要
本發(fā)明涉及網(wǎng)絡(luò)技術(shù),具體公開了一種數(shù)據(jù)分發(fā)方法、裝置及系統(tǒng),其中數(shù)據(jù)分發(fā)方法包括接收請求數(shù)據(jù)塊的請求消息;從標(biāo)記為尚未發(fā)送的數(shù)據(jù)塊中選擇數(shù)據(jù)塊;發(fā)送選擇的所述數(shù)據(jù)塊。并提供了相應(yīng)的裝置及系統(tǒng),使用本發(fā)明實施例提供的技術(shù)方案,可以最快的將種子共享的文件分發(fā)到文件共享系統(tǒng),從而提高文件共享系統(tǒng)中文件的下載成功率。
文檔編號H04L12/46GK101119286SQ20071015467
公開日2008年2月6日 申請日期2007年9月21日 優(yōu)先權(quán)日2007年9月21日
發(fā)明者王志華, 鵬 胡 申請人:騰訊科技(深圳)有限公司