專利名稱:一種p2p數(shù)據(jù)被動分發(fā)方法及節(jié)點客戶端的制作方法
技術領域:
本發(fā)明涉及互聯(lián)網(wǎng)中,信息交換、數(shù)據(jù)共享、數(shù)據(jù)分發(fā)等技術領域。更具體說,涉及一種P2P數(shù)據(jù)被動分發(fā)方法。
背景技術:
隨著互聯(lián)網(wǎng)規(guī)模的不斷擴大,Internet相關的信息技術獲得了迅猛發(fā)展。然而,網(wǎng)絡用戶人數(shù)爆炸式增長造成的網(wǎng)絡擁堵,日益成為制約互聯(lián)網(wǎng)發(fā)展的瓶頸,因此,如何在提高網(wǎng)絡內容服務質量的同時有效降低資源的消耗、提升用戶體驗,是互聯(lián)網(wǎng)應用領域面臨的主要問題之一。為了克服互聯(lián)網(wǎng)中采用的傳統(tǒng)客戶端/服務器結構存在的可擴展性差、易出現(xiàn)網(wǎng)絡擁堵、資源有效利用率較低等缺點,對等計算(Peer-to-Peer,簡稱P2P,又被稱為“點對點”)技術應運而生。P2P網(wǎng)絡是基于共享的分布式網(wǎng)絡,網(wǎng)絡的參與者稱為節(jié)點(即Peer),所有參與者的地位平等,節(jié)點既是客戶端也是服務器。P2P節(jié)點之間通過一定的方式組織在一起,當節(jié)點請求資源時,通過一定的查找策略來定位擁有所請求資源的節(jié)點,并從中獲取文件內容。P2P技術這種節(jié)點與節(jié)點之間直接鏈接并交換數(shù)據(jù)的方式,允許個人計算機之間直接進行資源和服務的共享,從而充分利用了節(jié)點之間的帶寬資源,很大程度上緩解了網(wǎng)站后端服務器的流量壓力,更好地實現(xiàn)了整個網(wǎng)絡的負載均衡。鑒于P2P技術的以上特點和技術優(yōu)勢,其已被廣泛用于電子商務、文件共享、網(wǎng)上直播、視頻點播、網(wǎng)絡廣告、遠程教育、遠程醫(yī)療、視頻會議等眾多互聯(lián)網(wǎng)領域的應用。
在P2P技術中,由源節(jié)點收到其它節(jié)點的請求后,被動地把數(shù)據(jù)分發(fā)給與自己建立連接的節(jié)點的方式,稱為被動分發(fā)方式。然而目前的P2P數(shù)據(jù)分發(fā),主要是通過中心服務器獲得對方節(jié)點數(shù)據(jù)的索引信息,然后再通過查詢鄰居節(jié)點進行數(shù)據(jù)分發(fā)決策。這種使用中心服務器作為通訊的中間環(huán)節(jié)的方法,會造成中心服務器壓力大、數(shù)據(jù)分發(fā)不及時等缺點,特別是當網(wǎng)絡帶寬有限、節(jié)點數(shù)目眾多、數(shù)據(jù)請求頻繁時,這一缺點就更加突出地暴露出來。例如,當某網(wǎng)站提供“春晚(直播)”節(jié)目在線視頻播放服務或者“中國好聲音”等高收視率節(jié)目網(wǎng)絡視頻點播服務時,很容易因短時間內發(fā)送請求的用戶節(jié)點過多,造成中心服務器數(shù)據(jù)分發(fā)決策嚴重滯后,導致用戶無法正常順暢地觀看節(jié)目。
發(fā)明內容
本發(fā)明要解決的技術問題是克服現(xiàn)有P2P數(shù)據(jù)分發(fā)方法存在的服務器壓力大、數(shù)據(jù)分發(fā)不及時等缺點,使得通訊速度更快捷。為實現(xiàn)上述的發(fā)明目的,本發(fā)明提出一套完整的P2P數(shù)據(jù)被動分發(fā)方法的技術方案,包括以下內容
一種P2P數(shù)據(jù)被動分發(fā)方法,其特征在于具體包括以下內容在一個至少包含第一節(jié)點和第二節(jié)點的P2P網(wǎng)絡中,第一節(jié)點與第二節(jié)點建立連接;第一節(jié)點向第二節(jié)點發(fā)送數(shù)據(jù)的下載請求;第二節(jié)點通過查找存儲于其中的第二數(shù)據(jù)信息表,判斷請求的所述數(shù)據(jù)是否存在于第二節(jié)點中;若是,則第二節(jié)點向第一節(jié)點傳送所述數(shù)據(jù),若否,則第二節(jié)點告知第一節(jié)點所述數(shù)據(jù)不存在于第二節(jié)點中。優(yōu)選地,在所述第一節(jié)點與第二節(jié)點建立連接之前,還包括所述第一節(jié)點根據(jù)存儲于其中的第一數(shù)據(jù)信息表,獲知其所需下載的數(shù)據(jù)。優(yōu)選地,存儲于節(jié)點中的所述數(shù)據(jù)信息表,其建立過程為所述節(jié)點開始工作后,搜索其鄰居節(jié)點并從這些鄰居節(jié)點下載數(shù)據(jù),根據(jù)所述下載數(shù)據(jù)建立所述節(jié)點的數(shù)據(jù)信息表。優(yōu)選地,將建立的所述節(jié)點的數(shù)據(jù)信息表存儲在所述節(jié)點的內存中。優(yōu)選地,所述P2P網(wǎng)絡中進一步包括中心服務器,所述搜索由所述中心服務器執(zhí)行。優(yōu)選地,存儲于節(jié)點中的所述數(shù)據(jù)信息表,包含存在于該節(jié)點中的數(shù)據(jù)的數(shù)據(jù)索引。優(yōu)選地,所述第一數(shù)據(jù)信息表具體包含存在于所述第一節(jié)點中的文件的各個文件塊的索引。優(yōu)選地,所述第二數(shù)據(jù)信息表具體包含存在于所述第二節(jié)點中的文件的各個文件塊的索引。優(yōu)選地,所述第二節(jié)點為源節(jié)點。此外,為解決以上技術問題,本發(fā)明還提供了一種P2P網(wǎng)絡中的節(jié)點客戶端,該客戶端具體包括連接模塊,其使得所述節(jié)點與所述P2P網(wǎng)絡中的另一節(jié)點建立連接;下載請求發(fā)送模塊,其將所述節(jié)點的數(shù)據(jù)下載請求發(fā)送給所述另一節(jié)點;判斷模塊,其根據(jù)所述另一節(jié)點中存儲的數(shù)據(jù)信息表,判斷請求的所述數(shù)據(jù)是否存在于所述另一節(jié)點中;執(zhí)行模塊,若判斷模塊的結果為是,其執(zhí)行將所述數(shù)據(jù)從所述另一節(jié)點傳送至所述節(jié)點的操作,若判斷模塊的結果為否,其告知所述節(jié)點所述數(shù)據(jù)不存在于所述另一節(jié)點中。優(yōu)選地,所述客戶端還包括數(shù)據(jù)信息表建立模塊,其當所述節(jié)點開始工作后,搜索所述節(jié)點的鄰居節(jié)點并從這些鄰居節(jié)點下載數(shù)據(jù),根據(jù)所述下載數(shù)據(jù)建立所述節(jié)點的數(shù)據(jù)信息表。優(yōu)選地,所述客戶端還包括內部存儲器,其用于存儲所述數(shù)據(jù)信息表建立模塊建立的所述節(jié)點的數(shù)據(jù)信息表。優(yōu)選地,所述內部存儲器中存儲的數(shù)據(jù)信息表,包含存在于所述節(jié)點中的數(shù)據(jù)的數(shù)據(jù)索引。優(yōu)選地,所述下載請求發(fā)送模塊根據(jù)存儲在所述內部存儲器中的所述節(jié)點的數(shù)據(jù)信息表,獲知所述節(jié)點所需下載的數(shù)據(jù)。 優(yōu)選地,所述搜索由中心服務器執(zhí)行。優(yōu)選地,所述另一節(jié)點中存儲的數(shù)據(jù)信息表,包含存在于所述另一節(jié)點中的數(shù)據(jù)的數(shù)據(jù)索引。優(yōu)選地,所述另一節(jié)點中存儲的數(shù)據(jù)信息表中的數(shù)據(jù)索引,具體為存在于所述另一節(jié)點中的文件的各個文件塊的索引。在上述任一方案中優(yōu)選的是,所述文件為視頻文件,所述文件塊為所述視頻文件的一部分。在上述任一方案中優(yōu)選的是,所述數(shù)據(jù)索引為指向存儲所述數(shù)據(jù)索引所對應的數(shù)據(jù)的指針。本發(fā)明實現(xiàn)的上述方法和客戶端,只有當源節(jié)點收到對方節(jié)點的具體數(shù)據(jù)請求時,才把對方需要的數(shù)據(jù)被動分發(fā)到對方。這種方法降低了服務器負載,同時提高了數(shù)據(jù)的實時分發(fā)速度以及減少了數(shù)據(jù)分發(fā)的冗余。由于數(shù)據(jù)信息分散交換,減少了信息通訊的中間環(huán)節(jié),因此不但實現(xiàn)了根據(jù)需要分發(fā)數(shù)據(jù),即滿足按需原則,還達到讓通訊速度更為快捷的技術效果。
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構成本申請的一部分,并不構成對本發(fā)明的限定。圖1是作為本發(fā)明一個實施例的P2P網(wǎng)絡示意圖
圖2是作為本發(fā)明一個實施例的P2P數(shù)據(jù)被動分發(fā)方法的示意圖 圖3是作為本發(fā)明一個實施例的P2P網(wǎng)絡中的節(jié)點客戶端的示意圖
具體實施例方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面結合附圖對本發(fā)明的具體實施方式
進行詳細說明。在此,實施說明用于解釋本發(fā)明,但并不作為對本發(fā)明的限定。圖1所示為本發(fā)明實施例的典型P2P網(wǎng)絡示意圖,其描述了本發(fā)明的適用環(huán)境以及設計的理念,該實施例P2P網(wǎng)絡包括一中心服務器、兩個(但不局限于兩個)P2P子網(wǎng),以及在每個子網(wǎng)下的若干P2P節(jié)點。以其中一個P2P子網(wǎng)的兩個節(jié)點A和B的為例,欲從節(jié)點B中獲得節(jié)點A所需的數(shù)據(jù),則結合圖2所示的P2P數(shù)據(jù)被動分發(fā)方法的示意圖,其內容具體包括
SlOl,建立各節(jié)點的數(shù)據(jù)信息表。具體而言,節(jié)點A開始工作后,通過中心服務器搜索節(jié)點A的鄰居節(jié)點并從這些鄰居節(jié)點下載數(shù)據(jù),根據(jù)這些下載數(shù)據(jù)建立節(jié)點A的數(shù)據(jù)信息表,并將該數(shù)據(jù)信息表存儲于節(jié)點A的內存中,所述數(shù)據(jù)信息表包括了節(jié)點A下載并存儲在其中的數(shù)據(jù)的數(shù)據(jù)索引;同樣的,節(jié)點B開始工作后,通過中心服務器搜索節(jié)點B的鄰居節(jié)點并從這些鄰居節(jié)點下載數(shù)據(jù),根據(jù)這些下載數(shù)據(jù)建立節(jié)點B的數(shù)據(jù)信息表,并將該數(shù)據(jù)信息表存儲于節(jié)點B的內存中,所述數(shù)據(jù)信息表包括了節(jié)點B下載并存儲在其中的數(shù)據(jù)的數(shù)據(jù)索引。S102,目標節(jié)點獲知其所需下載的數(shù)據(jù)
具體而言,節(jié)點A根據(jù)存儲于其中的數(shù)據(jù)信息表,獲知節(jié)點A所需下載的數(shù)據(jù)。S103,建立兩節(jié)點之間的連接,目標節(jié)點向源節(jié)點發(fā)送數(shù)據(jù)的下載請求
具體而言,節(jié)點A與節(jié)點B建立連接,節(jié)點A根據(jù)已獲知的所需下載的數(shù)據(jù),向節(jié)點B發(fā)送數(shù)據(jù)的下載請求。 S104,判斷請求的數(shù)據(jù)是否存在于源節(jié)點中。具體而言,通過查找存儲于節(jié)點B中的數(shù)據(jù)信息表中的數(shù)據(jù)索引,判斷節(jié)點A請求的數(shù)據(jù)是否存在于節(jié)點B中,換句話說,就是判斷節(jié)點B中是否存在節(jié)點A所需下載的數(shù)據(jù)。S105,根據(jù)判斷結果決定是否傳送數(shù)據(jù)
具體而言,若判斷的結果為是,也就是節(jié)點A所需下載的數(shù)據(jù)存在于節(jié)點B中,則節(jié)點B向節(jié)點A傳送所述數(shù)據(jù);若判斷的結果為否,也就是節(jié)點A所需下載的數(shù)據(jù)不存在于節(jié)點B中,則節(jié)點B告知節(jié)點A所述數(shù)據(jù)不存在于節(jié)點B中?!^佳實施例為節(jié)點A的數(shù)據(jù)信息表中的數(shù)據(jù)索引,為存在于節(jié)點A中的文件的各個文件塊的索引;節(jié)點B的數(shù)據(jù)信息表中的數(shù)據(jù)索引,為存在于節(jié)點B中的文件的各個文件塊的索引。例如,一個Rmvb格式的網(wǎng)絡視頻文件由100個文件塊組成,節(jié)點A已經(jīng)下載了該視頻文件的第1、3、7、10塊,則其數(shù)據(jù)信息表的內容就是[1,3,7,10](其中“1”、“3、“7”、“10”分別為各視頻文件塊的數(shù)據(jù)索引);而節(jié)點B已下載了該視頻文件的第1、2、9塊,則其數(shù)據(jù)信息表的內容就是[1,2,9]。可見,節(jié)點A所需的數(shù)據(jù)為視頻文件的第I 100塊中除了第1、3、7、10塊的所有文件快。當節(jié)點A根據(jù)已獲知的所需下載的文件塊,向節(jié)點B發(fā)送數(shù)據(jù)的下載請求時,通過判斷,可知節(jié)點A所需的文件塊2、9已存在于節(jié)點B中,因此節(jié)點B向節(jié)點A傳送文件塊2、9 ;而節(jié)點A所需的其它文件塊不存在于節(jié)點B中,因此節(jié)點B告知節(jié)點A其所需的其它文件塊不存在于節(jié)點B中。另一較佳實施例為所述數(shù)據(jù)索引為指向存儲所述數(shù)據(jù)索引所對應的數(shù)據(jù)的指針。
此外,本發(fā)明還提供了一種P2P網(wǎng)絡中的節(jié)點客戶端,如圖3所示,該客戶端包括數(shù)據(jù)信息表建立模塊、內部存儲器、連接模塊、下載請求發(fā)送模塊、判斷模塊以及執(zhí)行模塊,其中
當節(jié)點開始工作后,數(shù)據(jù)信息表建立模塊通過中心服務器搜索所述節(jié)點的鄰居節(jié)點并從這些鄰居節(jié)點下載數(shù)據(jù),根據(jù)所述下載數(shù)據(jù)建立所述節(jié)點的數(shù)據(jù)信息表;內部存儲器存儲所述數(shù)據(jù)信息表建立模塊建立的所述節(jié)點的數(shù)據(jù)信息表;連接模塊使得所述節(jié)點與所述P2P網(wǎng)絡中的另一節(jié)點建立連接;下載請求發(fā)送模塊將所述節(jié)點的數(shù)據(jù)下載請求發(fā)送給所述另一節(jié)點;判斷模塊根據(jù)所述另一節(jié)點中存儲的數(shù)據(jù)信息表,判斷請求的所述數(shù)據(jù)是否存在于所述另一節(jié)點中;若判斷模塊的結果為是,則執(zhí)行模塊執(zhí)行將所述數(shù)據(jù)從所述另一節(jié)點傳送至所述節(jié)點的操作,若判斷模塊的結果為否,則執(zhí)行模塊告知所述節(jié)點所述數(shù)據(jù)不存在于所述另一節(jié)點中?!^佳實施例為所述內部存儲器中存儲的數(shù)據(jù)信息表,包含存在于所述節(jié)點中的數(shù)據(jù)的數(shù)據(jù)索引;所述另一節(jié)點中存儲的數(shù)據(jù)信息表,包含存在于所述另一節(jié)點中的數(shù)據(jù)的數(shù)據(jù)索引。另一較佳實施例為所述下載請求發(fā)送模塊根據(jù)存儲在所述內部存儲器中的所述節(jié)點的數(shù)據(jù)信息表,獲知所述節(jié)點所需下載的數(shù)據(jù)。另一較佳實施例為所述節(jié)點中存儲的數(shù)據(jù)信息表中的數(shù)據(jù)索引,具體為存在于所述節(jié)點中的文件的各個文件塊的索引;所述另一節(jié)點中存儲的數(shù)據(jù)信息表中的數(shù)據(jù)索弓丨,具體為存在于所述另一節(jié)點中的文件的各個文件塊的索引。例如所述文件為視頻文件,所述文件塊為所述視頻文件的一部分。另一較佳實施例為所述數(shù)據(jù)索引為指向存儲所述數(shù)據(jù)索引所對應的數(shù)據(jù)的指針。
最后所應說明的是,以上實施例僅用以說明本發(fā)明的技術方案而非限制,盡管參照較佳實施例對本發(fā)明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發(fā)明的技術方案進行修 改或等同替換,而不脫離本發(fā)明技術方案的精神和范圍。
權利要求
1.一種P2P數(shù)據(jù)被動分發(fā)方法,其特征在于具體包括以下內容在一個至少包含第一節(jié)點和第二節(jié)點的P2P網(wǎng)絡中,第一節(jié)點與第二節(jié)點建立連接;第一節(jié)點向第二節(jié)點發(fā)送數(shù)據(jù)的下載請求;第二節(jié)點通過查找存儲于其中的第二數(shù)據(jù)信息表,判斷請求的所述數(shù)據(jù)是否存在于第二節(jié)點中;若是,則第二節(jié)點向第一節(jié)點傳送所述數(shù)據(jù),若否,則第二節(jié)點告知第一節(jié)點所述數(shù)據(jù)不存在于第二節(jié)點中。
2.如權利要求1所述的方法,其特征在于,在所述第一節(jié)點與第二節(jié)點建立連接之前,還包括所述第一節(jié)點根據(jù)存儲于其中的第一數(shù)據(jù)信息表,獲知其所需下載的數(shù)據(jù)。
3.如權利要求1或2所述的方法,其特征在于,存儲于節(jié)點中的所述數(shù)據(jù)信息表,其建立過程為所述節(jié)點開始工作后,搜索其鄰居節(jié)點并從這些鄰居節(jié)點下載數(shù)據(jù),根據(jù)所述下載數(shù)據(jù)建立所述節(jié)點的數(shù)據(jù)信息表。
4.如權利要求3所述的方法,其特征在于,將建立的所述節(jié)點的數(shù)據(jù)信息表存儲在所述節(jié)點的內存中。
5.如權利要求4所述的方法,其特征在于,所述P2P網(wǎng)絡中進一步包括中心服務器,所述搜索由所述中心服務器執(zhí)行。
6.如權利要求1或2所述的方法,其特征在于,存儲于節(jié)點中的所述數(shù)據(jù)信息表,包含存在于該節(jié)點中的數(shù)據(jù)的數(shù)據(jù)索引。
7.如權利要求2所述的方法,其特征在于,所述第一數(shù)據(jù)信息表具體包含存在于所述第一節(jié)點中的文件的各個文件塊的索引。
8.如權利要求6所述的方法,其特征在于,所述第二數(shù)據(jù)信息表具體包含存在于所述第二節(jié)點中的文件的各個文件塊的索引。
9.如權利要求7或8所述的方法,其特征在于所述文件為視頻文件,所述文件塊為所述視頻文件的一部分。
10.一種P2P網(wǎng)絡中的節(jié)點客戶端,該客戶端具體包括 連接模塊,其使得所述節(jié)點與所述P2P網(wǎng)絡中的另一節(jié)點建立連接; 下載請求發(fā)送模塊,其將所述節(jié)點的數(shù)據(jù)下載請求發(fā)送給所述另一節(jié)點; 判斷模塊,其根據(jù)所述另一節(jié)點中存儲的數(shù)據(jù)信息表,判斷請求的所述數(shù)據(jù)是否存在于所述另一節(jié)點中; 執(zhí)行模塊,若判斷模塊的結果為是,其執(zhí)行將所述數(shù)據(jù)從所述另一節(jié)點傳送至所述節(jié)點的操作,若判斷模塊的結果為否,其告知所述節(jié)點所述數(shù)據(jù)不存在于所述另一節(jié)點中。
全文摘要
本發(fā)明提出一套P2P數(shù)據(jù)被動分發(fā)方法的技術方案。針對包含多個節(jié)點的P2P網(wǎng)絡,首先通過中心服務器搜索節(jié)點的鄰居節(jié)點并從這些鄰居節(jié)點下載數(shù)據(jù),從而建立節(jié)點的數(shù)據(jù)信息表;然后建立兩節(jié)點之間的連接,目標節(jié)點向源節(jié)點發(fā)送數(shù)據(jù)的下載請求;判斷請求的數(shù)據(jù)是否存在于源節(jié)點中;若是,則源點向目標節(jié)點傳送所述數(shù)據(jù),若否,則源節(jié)點告知目標節(jié)點所請求的數(shù)據(jù)不存在于源節(jié)點中。此外還根據(jù)上述技術方案提供了一種P2P網(wǎng)絡中的節(jié)點客戶端。
文檔編號H04L29/08GK103037017SQ201210588198
公開日2013年4月10日 申請日期2012年12月31日 優(yōu)先權日2012年12月31日
發(fā)明者趙瑞前, 李茗, 邵長松, 張海, 馬宙, 李卓, 王世有 申請人:樂視網(wǎng)信息技術(北京)股份有限公司