一種基于p2p的自適應(yīng)資源下載方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及資源下載的技術(shù)領(lǐng)域,具體涉及一種基于P2P的自適應(yīng)資源下載方法。
【背景技術(shù)】
[0002]近年來(lái),P2P在互聯(lián)網(wǎng)上得到了大量應(yīng)用,同時(shí)聚集了大規(guī)模的用戶群體,其能夠充分利用網(wǎng)絡(luò)邊緣資源協(xié)同完成工作,使得用戶能夠更加快捷高效的獲取所需要的應(yīng)用資源。P2P資源下載的工作方式簡(jiǎn)述如下:首先資源請(qǐng)求者要去P2P網(wǎng)絡(luò)中請(qǐng)求資源,一旦完成資源定位,即從資源節(jié)點(diǎn)中分段下載所需資源。需要說(shuō)明的是:當(dāng)資源定位后,請(qǐng)求節(jié)點(diǎn)會(huì)去各個(gè)資源節(jié)點(diǎn)上進(jìn)行資源的分片下載,被請(qǐng)求者根據(jù)請(qǐng)求者的需求提供相應(yīng)的資源。即使被請(qǐng)求者當(dāng)前網(wǎng)絡(luò)狀況非常差,也必須提供傳輸,這樣將會(huì)降低整體數(shù)據(jù)通信質(zhì)量。
[0003]申請(qǐng)?zhí)枮?00810126223.7的中國(guó)專利申請(qǐng)公開(kāi)了一種對(duì)等連接網(wǎng)絡(luò)的數(shù)據(jù)調(diào)度方法和系統(tǒng),其中公開(kāi)了一種P2P網(wǎng)絡(luò)下的數(shù)據(jù)調(diào)度方法,可以實(shí)現(xiàn)請(qǐng)求端根據(jù)服務(wù)端的性能進(jìn)行排序并從最優(yōu)的服務(wù)端請(qǐng)求數(shù)據(jù),而請(qǐng)求端每個(gè)周期會(huì)根據(jù)服務(wù)端的性能進(jìn)行排序。該專利并未給出當(dāng)周期內(nèi)服務(wù)端的性能出現(xiàn)問(wèn)題時(shí)的解決方案,此外,該專利方案將下載數(shù)據(jù)分為不同的周期,每個(gè)周期結(jié)束都會(huì)向所有的服務(wù)端發(fā)起初始請(qǐng)求,獲取各個(gè)服務(wù)端的性能數(shù)據(jù)再進(jìn)行排序,這一過(guò)程會(huì)使得下載一個(gè)文件會(huì)被分成多個(gè)周期,每個(gè)周期結(jié)束后會(huì)重新建立連接,這會(huì)極大降低用戶體驗(yàn)。
【發(fā)明內(nèi)容】
[0004]為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種基于P2P的自適應(yīng)資源下載方法,能夠支持P2P網(wǎng)絡(luò)環(huán)境下節(jié)點(diǎn)自適應(yīng)選擇代價(jià)優(yōu)的節(jié)點(diǎn)進(jìn)行數(shù)據(jù)通信可以充分利用資源被請(qǐng)求者的網(wǎng)絡(luò)狀況來(lái)主動(dòng)為請(qǐng)求者提供下載建議,保證請(qǐng)求者能夠得到更好的資源下載體驗(yàn)。
[0005]為了達(dá)到上述目的,本發(fā)明的技術(shù)方案是:一種基于P2P的自適應(yīng)資源下載方法,其步驟如下:
步驟1:P2P客戶端向P2P服務(wù)端請(qǐng)求資源;
步驟2: P2P服務(wù)端響應(yīng)相應(yīng)的P2P客戶端,建立通信連接;
步驟3: P2P服務(wù)端利用網(wǎng)絡(luò)狀況監(jiān)測(cè)模塊實(shí)時(shí)監(jiān)測(cè)本地的網(wǎng)絡(luò)通信質(zhì)量;
步驟4: P2P服務(wù)端周期性同其他P2P服務(wù)端進(jìn)行消息交互,告知其他服務(wù)端本地的網(wǎng)絡(luò)狀況;
步驟5: P2P服務(wù)端根據(jù)自身的網(wǎng)絡(luò)狀況對(duì)P2P客戶端給出通信建議,P2P客戶端根據(jù)建議進(jìn)行數(shù)據(jù)通信。
[0006]所述P2P客戶端向P2P服務(wù)端請(qǐng)求資源的方法是:P2P服務(wù)端與P2P客戶端通過(guò)標(biāo)準(zhǔn)P2P協(xié)議中的Socket建立數(shù)據(jù)會(huì)話,開(kāi)始傳送數(shù)據(jù)。
[0007]所述P2P服務(wù)端設(shè)有網(wǎng)絡(luò)狀況監(jiān)測(cè)模塊和信令管理模塊,網(wǎng)絡(luò)狀況監(jiān)測(cè)統(tǒng)計(jì)模塊和信令管理模塊以LKM的形式動(dòng)態(tài)加載在P2P服務(wù)端操作系統(tǒng)內(nèi)核態(tài)下,會(huì)伴隨操作系統(tǒng)自啟動(dòng)。
[0008]所述網(wǎng)絡(luò)狀況監(jiān)測(cè)模塊用于P2P服務(wù)端監(jiān)測(cè)本地網(wǎng)絡(luò)狀況,并進(jìn)行統(tǒng)計(jì)維護(hù);網(wǎng)絡(luò)狀況監(jiān)測(cè)模塊包括網(wǎng)絡(luò)監(jiān)測(cè)單元,網(wǎng)絡(luò)監(jiān)測(cè)單元用于P2P服務(wù)端監(jiān)測(cè)本地網(wǎng)絡(luò)狀況;所述信令管理模塊信令管理模塊用于P2P服務(wù)端周期性的交互各自的網(wǎng)絡(luò)狀況,實(shí)現(xiàn)各個(gè)服務(wù)端交互本地的網(wǎng)絡(luò)通信代價(jià),并根據(jù)本地網(wǎng)絡(luò)代價(jià)對(duì)請(qǐng)求者發(fā)送建議消息;信令管理模塊包括信令管理單元,信令管理單元用于P2P服務(wù)端通信過(guò)程中的消息維護(hù)。
[0009]所述網(wǎng)絡(luò)狀況監(jiān)測(cè)模塊通過(guò)統(tǒng)計(jì)本地的網(wǎng)絡(luò)帶寬、丟包率、抖動(dòng)、延遲、負(fù)載監(jiān)測(cè)本地的網(wǎng)絡(luò)通信質(zhì)量,統(tǒng)計(jì)結(jié)果以本地文件的形式進(jìn)行存放。
[0010]所述信令管理模塊利用標(biāo)準(zhǔn)的P2P協(xié)議進(jìn)行周期性的信息交互實(shí)現(xiàn)P2P服務(wù)端各自網(wǎng)絡(luò)狀況的交互。
[0011]所述步驟5中,當(dāng)P2P服務(wù)端監(jiān)測(cè)本地通信性能沒(méi)有出現(xiàn)問(wèn)題時(shí),繼續(xù)與P2P客戶端進(jìn)行數(shù)據(jù)通信;當(dāng)P2P服務(wù)端監(jiān)測(cè)本地通信性能出現(xiàn)性能問(wèn)題時(shí),通過(guò)P2P協(xié)議的消息將重新連接的P2P服務(wù)端的信息,發(fā)送給請(qǐng)求資源的P2P客戶端。
[0012]所述P2P服務(wù)端的信息包括服務(wù)端的節(jié)點(diǎn)ID和IP地址的信息,所述服務(wù)端的節(jié)點(diǎn)ID和IP地址填充在OPT1N選項(xiàng)字段中。
[0013]本發(fā)明通過(guò)對(duì)各個(gè)服務(wù)端進(jìn)行性能監(jiān)測(cè),且各個(gè)P2P服務(wù)端會(huì)周期性的交互各自的通信代價(jià),當(dāng)一個(gè)正在工作的P2P服務(wù)端出現(xiàn)問(wèn)題時(shí),會(huì)自適應(yīng)的向P2P請(qǐng)求端推薦代價(jià)更優(yōu)的P2P服務(wù)端進(jìn)行重連,如果原始的P2P服務(wù)端工作狀態(tài)一直平穩(wěn),整個(gè)的數(shù)據(jù)過(guò)程也不會(huì)出現(xiàn)重新連接的情況,且可以保證請(qǐng)求端一直與代價(jià)最優(yōu)的P2P服務(wù)端進(jìn)行通信連接。本發(fā)明能夠支持P2P網(wǎng)絡(luò)環(huán)境下節(jié)點(diǎn)自適應(yīng)選擇代價(jià)優(yōu)的節(jié)點(diǎn)進(jìn)行數(shù)據(jù)通信可以充分利用資源被請(qǐng)求者的網(wǎng)絡(luò)狀況來(lái)主動(dòng)為請(qǐng)求者提供下載建議,保證請(qǐng)求者能夠得到更好的資源下載體驗(yàn)。
【附圖說(shuō)明】
[0014]圖1為本發(fā)明的流程圖。
[0015]圖2為基于P2P的自適應(yīng)資源下載方法的示意圖。
【具體實(shí)施方式】
[0016]為了使本發(fā)明所要解決的技術(shù)問(wèn)題、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)的說(shuō)明。應(yīng)當(dāng)說(shuō)明的是,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0017]一種基于P2P的自適應(yīng)資源下載方法,其步驟如下:
步驟1:P2P客戶端向P2P服務(wù)端請(qǐng)求資源。
[0018]P2P客戶端根據(jù)標(biāo)準(zhǔn)的P2P協(xié)議,將請(qǐng)求的資源ID發(fā)給P2P服務(wù)端。
[0019]步驟2:P2P服務(wù)端響應(yīng)相應(yīng)的P2P客戶端,建立通信連接。
[0020]P2P服務(wù)端收到P2P客戶端的資源請(qǐng)求消息后,根據(jù)請(qǐng)求的資源ID判斷本地是否存儲(chǔ)有該資源,如果有,則接受客戶端的資源請(qǐng)求,并建立通信連接;否則,發(fā)出響應(yīng)消息建議客戶端去其他的P2P服務(wù)端上下載資源。P2P服務(wù)端與P2P客戶端通過(guò)標(biāo)準(zhǔn)的P2P協(xié)議中的Socket建立數(shù)據(jù)會(huì)話,開(kāi)始傳送數(shù)據(jù)。
[0021]步驟3:P2P服務(wù)端利用網(wǎng)絡(luò)狀況監(jiān)測(cè)模塊實(shí)時(shí)監(jiān)測(cè)本地的網(wǎng)絡(luò)通信質(zhì)量。
[0022]P2P服務(wù)端內(nèi)均設(shè)有網(wǎng)絡(luò)狀況監(jiān)測(cè)模塊,網(wǎng)絡(luò)狀況監(jiān)測(cè)模塊用于P2P服務(wù)端監(jiān)測(cè)本地網(wǎng)絡(luò)狀況,并進(jìn)行統(tǒng)計(jì)維護(hù)。網(wǎng)絡(luò)狀況監(jiān)測(cè)模塊通過(guò)統(tǒng)計(jì)本地的網(wǎng)絡(luò)帶寬、丟包率、抖動(dòng)、延遲、負(fù)載,統(tǒng)計(jì)結(jié)果可以以本地文件的形式進(jìn)行存放,由于全部是文本類信息,所以不會(huì)過(guò)多占用服務(wù)端的存儲(chǔ)空間。網(wǎng)絡(luò)狀況監(jiān)測(cè)模塊包括網(wǎng)絡(luò)監(jiān)測(cè)單元,網(wǎng)絡(luò)監(jiān)測(cè)單元用于P2P服務(wù)端監(jiān)測(cè)本地網(wǎng)絡(luò)狀況。網(wǎng)絡(luò)狀況監(jiān)測(cè)統(tǒng)計(jì)模塊以LKM(Loadable Kernel Modu 1 e)的形式動(dòng)態(tài)加載在P2P服務(wù)端操作系統(tǒng)內(nèi)核態(tài)下,會(huì)伴隨操作系統(tǒng)自啟動(dòng),但是不需要改動(dòng)原始的服務(wù)器操作系統(tǒng)。網(wǎng)絡(luò)狀況監(jiān)測(cè)統(tǒng)計(jì)模塊一旦被加載后,就處于一直工作的狀態(tài),實(shí)時(shí)的對(duì)經(jīng)過(guò)P2P服務(wù)端的數(shù)據(jù)包進(jìn)行監(jiān)測(cè)統(tǒng)計(jì),從而監(jiān)測(cè)本地的網(wǎng)絡(luò)通信質(zhì)量。
[0023]每個(gè)P2P服務(wù)端通過(guò)網(wǎng)絡(luò)狀況監(jiān)測(cè)塊進(jìn)行加載,由于P2P服務(wù)端操作系統(tǒng)本身可以獲取帶寬、丟包率、抖動(dòng)等性能指標(biāo),網(wǎng)絡(luò)狀況監(jiān)測(cè)塊通過(guò)調(diào)用P2P服務(wù)端操作系統(tǒng)提供的API接口可直接獲取上述參數(shù)。需要說(shuō)明的是,可以設(shè)定周期進(jìn)行獲取,比如1秒獲取一次,獲取后在本地