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