專利名稱:一種文件傳輸?shù)姆椒把b置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對等網(wǎng)絡(luò)技術(shù),具體涉及一種文件傳輸?shù)姆椒把b置。
背景技術(shù):
隨著互聯(lián)網(wǎng)絡(luò)的發(fā)展,分布在世界各地的計算機的信息可以被互聯(lián)網(wǎng)上的用戶共享,人們可以在互聯(lián)網(wǎng)上可以隨時獲取各種信息,極大方便了人們的生活。目前在互聯(lián)網(wǎng)中,文件共享采用的網(wǎng)絡(luò)架構(gòu)大致有兩種,一種是以服務(wù)器/客戶端(Server/Client)方式實現(xiàn)的網(wǎng)絡(luò)架構(gòu),用戶即客戶端需要獲取信息時,先連接到服務(wù)器,并從服務(wù)器獲取所需的信息;另一種是對等網(wǎng)絡(luò)(Peer-to-PeerNetwork),對等網(wǎng)絡(luò)與傳統(tǒng)的服務(wù)器/客戶端模式不同,對等網(wǎng)絡(luò)中沒有明確的服務(wù)器和客戶端之分,每個對等結(jié)點(Peer)既作為服務(wù)器為對等網(wǎng)絡(luò)提供服務(wù),又作為客戶端從對等網(wǎng)絡(luò)獲得服務(wù)。目前,對等網(wǎng)絡(luò)在文件共享、數(shù)據(jù)檢索、協(xié)同計算、即時通訊、數(shù)據(jù)分散存儲以及網(wǎng)絡(luò)游戲等方面有著廣泛的應(yīng)用。
根據(jù)拓撲結(jié)構(gòu)可以將對等網(wǎng)絡(luò)分為中心化拓撲式對等網(wǎng)絡(luò)、全分布非結(jié)構(gòu)化對等網(wǎng)絡(luò)、全分布結(jié)構(gòu)化對等網(wǎng)絡(luò)和半分布式拓撲式對等網(wǎng)絡(luò),其中,全分布式非結(jié)構(gòu)化對等網(wǎng)絡(luò)中沒有中央服務(wù)器,它采用了洪泛(Flooding)發(fā)現(xiàn)和隨機轉(zhuǎn)發(fā)(Random Walker)機制。為了控制搜索消息的傳輸,通過生存時間TTL(Time To Live)的減值來實現(xiàn)。為了檢索某個文件,源對等結(jié)點向與之相鄰的所有活動對等結(jié)點發(fā)送一個檢索請求包Query,其他對等結(jié)點在接收到該檢索請求包后,檢查本地是否有符合檢索請求的文件內(nèi)容,如果有,則按檢索請求包的發(fā)送路徑返回一個檢索響應(yīng)包QueryHit。無論本地是否存在符合檢索請求的文件內(nèi)容,其他對等結(jié)點都會向所有鄰居結(jié)點轉(zhuǎn)發(fā)檢索請求包,直至檢索請求包中TTL屬性值遞減為0時停止繼續(xù)轉(zhuǎn)發(fā)。
現(xiàn)有對等網(wǎng)絡(luò)信息檢索中,普遍采用結(jié)點信息緩存的信息索引機制,通過將檢索結(jié)果沿反向查詢路徑傳遞,路徑上各對等結(jié)點將檢索結(jié)果進行緩存,為其它對等結(jié)點的后續(xù)檢索提供了文件路由信息。
表1、對等結(jié)點檢索前結(jié)點狀態(tài)
如表1所示,每個對等結(jié)點有一個本地共享目錄和一個非本地共享目錄,本地共享目錄保存了對等結(jié)點本地共享文件的索引,而非本地共享目錄保存了對等網(wǎng)絡(luò)中其它對等結(jié)點共享文件的索引。表1中,對等結(jié)點H的本地共享目錄表示其共享了文件l和m;其非本地共享目錄表示文件d由對等結(jié)點C共享。
表1是各對等結(jié)點的最初狀態(tài)。對等結(jié)點C檢索文件o,它首先查看自己的本地共享目錄和非本地共享目錄,沒有發(fā)現(xiàn)文件o的索引,因此隨機或按一定策略選擇一個鄰居進行查詢路由,本例中假設(shè)對等結(jié)點C選擇結(jié)點B作為查詢下一跳,因此將查詢請求轉(zhuǎn)發(fā)給對等結(jié)點B;對等結(jié)點B在本地共享目錄和非本地共享目錄中進行文件o的查找,沒有發(fā)現(xiàn)相應(yīng)文件,假設(shè)對等結(jié)點B繼續(xù)將查詢路由給結(jié)點D;對等結(jié)點D首先在本地共享目錄中進行文件o的查找,沒有找到,繼續(xù)在非本地共享目錄中查找,發(fā)現(xiàn)文件o是由對等結(jié)點F共享。由于非本地共享目錄中的記錄可能已過時,所以對等結(jié)點D將查詢請求直接路由給對等結(jié)點F進行確認;結(jié)點F在本地共享目錄中找到了文件o。至此,文件o被找到,查詢依次經(jīng)過的路徑為C->B->D->F。
對等結(jié)點F將檢索結(jié)果沿反向查詢路徑傳遞,即F->D->B->C,反向路徑上除F結(jié)點外的各對等結(jié)點將文件o的索引(o:F)保存到目錄緩存中。因此,經(jīng)過本次查詢后,對等結(jié)點狀態(tài)如表2所示。
表2、對等結(jié)點檢索后結(jié)點狀態(tài)
由于該機制對所有檢索結(jié)果都沿反向查詢路徑進行傳遞,經(jīng)過較多中轉(zhuǎn)結(jié)點,從而造成了一定的時延,使用戶的體驗下降;并且對檢索結(jié)果不加區(qū)分地沿反向查詢路徑進行緩存,許多無用文件的索引也被廣泛保存,浪費了對等結(jié)點的存儲空間;而且由于對等網(wǎng)絡(luò)中存在大量的索引,用戶的檢索會返回大量的檢索結(jié)果,用戶所需的信息可能被大量的無用信息淹沒,用戶必須對檢索結(jié)果再次進行人工過濾才能找到需要的內(nèi)容;該機制缺乏相應(yīng)的索引維護機制,當文件共享對等結(jié)點取消一個文件的共享時,無法有效地對文件索引進行清除。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種文件傳輸?shù)姆椒把b置,使用該方法能夠?qū)⒂脩舨樵冋埱蟮臋z索結(jié)果直接返回給查詢發(fā)起對等結(jié)點,并且基于文件交互即文件上傳和下載將文件的索引在對等網(wǎng)絡(luò)中存儲和散布。
為解決上述技術(shù)問題,本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的一種文件傳輸?shù)姆椒?,包括A、目的對等結(jié)點得到查詢請求后,將所述查詢請求與所述目的對等結(jié)點所維護的記錄有本地共享文件的共享文件列表中的索引進行匹配,如果有匹配的索引,直接向查詢發(fā)起對等結(jié)點返回滿足查詢請求的檢索結(jié)果,進入步驟C;
B、如果沒有匹配的索引,所述目的對等結(jié)點將所述查詢請求與該目的對等結(jié)點所維護的記錄有下載文件索引的文件下載列表和記錄有上傳文件索引的文件上傳列表中的索引進行匹配,如果有匹配的索引,將該查詢請求路由給所述匹配的索引對應(yīng)的目的對等結(jié)點,進入步驟A;C、所述查詢發(fā)起對等結(jié)點從所述檢索結(jié)果中選擇所述文件進行下載。
一種文件傳輸?shù)姆椒?,包括目的對等結(jié)點得到查詢請求后,將所述查詢請求與所述目的對等結(jié)點所維護的記錄有本地共享文件的共享文件列表、記錄有下載文件索引的文件下載列表和/或記錄有上傳文件索引的文件上傳列表中的索引進行匹配,如果在共享文件列表有匹配的索引,直接向查詢發(fā)起對等結(jié)點返回滿足查詢請求的檢索結(jié)果;如果在文件下載列表和/或文件上傳列表有匹配的索引,將所述查詢請求路由給所述文件下載列表和/或文件上傳列表中匹配的索引對應(yīng)的目的對等結(jié)點;所述查詢發(fā)起對等結(jié)點從所述檢索結(jié)果中選擇所述文件進行下載。
一種文件傳輸?shù)难b置,包括查詢請求處理單元,用于向其他對等結(jié)點發(fā)送查詢請求或接收其他對等結(jié)點發(fā)送的查詢請求;文件列表維護單元,用于維護保存有對等結(jié)點本地共享文件的索引的共享文件列表,維護記錄有下載文件索引的文件下載列表和記錄有上傳文件索引的文件上傳列表;索引匹配單元,用于將所述查詢請求與所述共享文件列表中的索引進行匹配,和/或?qū)⑺霾樵冋埱笈c所述文件下載列表和/或文件上傳列表中的索引進行匹配;檢索結(jié)果處理單元,用于在所述共享文件列表中有與所述查詢請求匹配的索引時,直接向發(fā)起所述查詢請求的對等結(jié)點返回滿足查詢請求的檢索結(jié)果;還用于接收其他對等結(jié)點發(fā)送的符合所述查詢請求的檢索結(jié)果;路由轉(zhuǎn)移單元,用于在所述文件下載列表或文件上傳列表中有與所述查詢請求匹配的索引時,將所述查詢請求路由給所述匹配的索引對應(yīng)的對等結(jié)點;文件傳輸單元,用于從所述檢索結(jié)果中選擇文件,通知共享該文件的對等結(jié)點的文件傳輸單元對該文件進行上傳,進行所述文件的下載。
以上技術(shù)方案可以看出,由于本發(fā)明在返回檢索結(jié)果時,無論查詢時中間經(jīng)過幾個對等結(jié)點都是直接將檢索結(jié)果返回給查詢發(fā)起對等結(jié)點,從而使用戶很快就能得到檢索結(jié)果,提高用戶的體驗;在文件下載后只有查詢發(fā)起對等結(jié)點和目的對等結(jié)點要對該文件的索引進行更新,查詢時的中間結(jié)點并不對該文件的索引進行保存,從而減少了對對等結(jié)點存儲空間的浪費,并且這樣是根據(jù)文件的交互對文件索引進行保存,從而保存的索引都是對用戶有價值的;并且本發(fā)明對同一個文件維護一棵共享樹,在共享樹中可以將負載高的對等結(jié)點的一些索引遷移到負載低的對等結(jié)點上,從而促使處于同一共享樹的對等結(jié)點之間的負載均衡;當共享樹的一個結(jié)點上的索引對用戶無價值時,將對用戶無價值的索引進行相應(yīng)的處理,從而保證共享樹中的結(jié)點對所述文件的索引都是對用戶有價值的,使查詢時返回的結(jié)果更加準確,用戶能夠從檢索結(jié)果中更容易找到需要的內(nèi)容。
圖1為本發(fā)明裝置的結(jié)構(gòu)圖;圖2為本發(fā)明方法的流程圖;圖3為本發(fā)明方法第一實施例的流程圖;圖4為文件由未共享變?yōu)楣蚕淼奶幚砹鞒虉D;圖5為本發(fā)明方法一實施例的初始共享樹;圖6為本發(fā)明方法一實施例的共享樹;圖7為本發(fā)明方法一實施例的最終共享樹。
具體實施例方式
本發(fā)明為一種文件傳輸?shù)姆椒把b置,為使本發(fā)明的目的、技術(shù)方案、及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明進一步詳細說明。
先介紹本發(fā)明提供的文件傳輸?shù)难b置,參見圖1,圖1為本發(fā)明裝置的結(jié)構(gòu)圖,如圖1所示,該裝置包括
查詢請求處理單元101,用于向其他對等結(jié)點發(fā)送查詢請求或接收其他對等結(jié)點發(fā)送的查詢請求;接收到的查詢請求可以是該裝置對應(yīng)的對等結(jié)點上的用戶輸入的查詢請求,也可以是由其他對等結(jié)點轉(zhuǎn)發(fā)過來的查詢請求,查詢請求中含有用戶所處查詢發(fā)起對等結(jié)點的路由信息;其中查詢發(fā)起對等結(jié)點是用戶所在的結(jié)點,在對等網(wǎng)絡(luò)中任何一個用戶接入對等網(wǎng)絡(luò)都會成為對等網(wǎng)絡(luò)中的一個對等結(jié)點;文件列表維護單元102,用于維護保存有對等結(jié)點本地共享文件的索引的共享文件列表,維護記錄有下載文件索引的文件下載列表和記錄有上傳文件索引的文件上傳列表;共享文件列表是該裝置構(gòu)建的一個索引列表,對等結(jié)點本地共享的每一個文件都在共享文件列表中有索引;索引至少包括文件名、本地路徑和文件哈希(Hash)值,其中文件名用于與用戶的查詢請求進行匹配,本地路徑可以方便的知道該文件在本地的存儲位置,文件Hash值是采用哈希算法為文件生成的一個值,哈希算法可以為SHA-1、MD5等已經(jīng)廣泛采用的哈希算法;不同的文件根據(jù)哈希算法生成的Hash值是不一樣的,但是同一個文件盡管它們的文件名不一樣,但是生成的Hash值卻是相同的,文件Hash值可以用來判斷兩個文件內(nèi)容的一致性;當然索引還可以包括其他的一些信息,如文件關(guān)鍵字等,文件關(guān)鍵字是由系統(tǒng)自動或用戶手動為文件指定的關(guān)鍵字,它可以與文件名相同,可以更加精確的對查詢請求進行匹配;其中文件上傳列表保存對等網(wǎng)絡(luò)中其余對等結(jié)點從本對等結(jié)點下載文件的歷史記錄,列表項格式為(文件名,文件關(guān)鍵字,文件Hash值,是否共享,下載對等結(jié)點ID值,下載對等結(jié)點IP值,是否共享,...);其中下載對等結(jié)點ID值,下載對等結(jié)點IP值和是否共享是可以有多個的,因為可能有多個對等結(jié)點從本對等結(jié)點下載了文件;列表中的第一個“是否共享”是維護文件在本對等結(jié)點的共享狀態(tài),后一個或多個“是否共享”是該文件在下載對等結(jié)點的共享狀態(tài);同樣,文件下載列表保存本對等結(jié)點從對等網(wǎng)絡(luò)中其它對等結(jié)點下載文件的歷史記錄,列表項格式為(文件名,文件關(guān)鍵字,文件Hash值,是否共享,上傳對等結(jié)點ID值,上傳對等結(jié)點IP值,是否共享,...);其中上傳對等結(jié)點ID值,上傳對等結(jié)點IP值和是否共享是可以有多個的,因為可能本對等結(jié)點從多個對等結(jié)點下載了文件;列表中的第一個“是否共享”是維護文件在本對等結(jié)點的共享狀態(tài),后一個或多個“是否共享”是該文件在上傳對等結(jié)點的共享狀態(tài);索引匹配單元103,用于將所述查詢請求與所述共享文件列表中的索引進行匹配,和/或?qū)⑺霾樵冋埱笈c所述文件下載列表和/或文件上傳列表中的索引進行匹配;根據(jù)用戶的查詢請求與共享文件列表中的索引進行匹配,比如說用戶輸入了“電影”,那么就從共享文件列表中的索引中搜索有關(guān)“電影”的內(nèi)容,如果沒有文件關(guān)鍵字,就跟文件名進行匹配,匹配可以是全字匹配也可以是其他的匹配,這個由用戶來決定,如果希望返回的結(jié)果盡可能精確可以選擇全字匹配;如果有文件關(guān)鍵字,則直接跟文件關(guān)鍵字進行匹配就可以了;當然為了返回更多的檢索結(jié)果,可以在共享文件列表中有對應(yīng)的檢索結(jié)果的情況下繼續(xù)到文件下載列表和/或文件上傳列表中去匹配;檢索結(jié)果處理單元104,用于在所述共享文件列表中有與所述查詢請求匹配的索引時,直接向發(fā)起所述查詢請求的對等結(jié)點返回滿足查詢請求的檢索結(jié)果;還用于接收其他對等結(jié)點發(fā)送的符合所述查詢請求的檢索結(jié)果;接上例,如果在索引中找到關(guān)于“電影”的文件,就向查詢發(fā)起對等結(jié)點返回找到的文件的相關(guān)信息,例如文件名、文件大小、文件Hash值、文件在本結(jié)點的路徑、本結(jié)點的網(wǎng)絡(luò)地址IP值以及本結(jié)點在結(jié)點中的唯一標識符ID等信息,其中文件的信息是為了方便在本結(jié)點找到該文件,而結(jié)點的信息則是方便查詢發(fā)起對等結(jié)點找到本結(jié)點,從而使文件的傳輸能夠順利進行;又因為查詢請求中有查詢發(fā)起對等結(jié)點的路由信息,所以能夠直接向查詢發(fā)起對等結(jié)點返回檢索結(jié)果;路由轉(zhuǎn)移單元105,用于在所述文件下載列表或文件上傳列表中有與所述查詢請求匹配的索引時,將所述查詢請求路由給所述匹配的索引對應(yīng)的對等結(jié)點;如果從文件下載列表和/或文件上傳列表找到了相應(yīng)的索引,則根據(jù)索引的對等結(jié)點ID值或IP值將查詢請求路由到對應(yīng)的對等結(jié)點,新的對等結(jié)點收到查詢請求后繼續(xù)進行匹配的操作,如果有匹配的文件就直接向查詢發(fā)起請求對等結(jié)點返回檢索結(jié)果或再次將查詢請求路由到另外的對等結(jié)點;這樣當從本地共享文件列表中找不到對應(yīng)的文件時,可以根據(jù)歷史的上傳/下載記錄將查詢請求路由到共享所述文件概率比較高的對等結(jié)點,對應(yīng)的對等結(jié)點收到查詢請求后,再將查詢請求與共享文件列表進行匹配,如果有匹配的文件就直接向查詢發(fā)起對等結(jié)點返回檢索結(jié)果,而不經(jīng)過轉(zhuǎn)發(fā)查詢請求的對等結(jié)點,從而使檢索結(jié)果能夠盡快地返回到查詢發(fā)起對等結(jié)點,使用戶能夠很快的得到檢索結(jié)果;當然在共享文件列表中找到對應(yīng)的文件后,也可以將查詢請求路由到其他對等結(jié)點,從而為返回更多的檢索結(jié)果,方便用戶選擇;文件傳輸單元106,用于從所述檢索結(jié)果中選擇文件,通知共享該文件的對等結(jié)點的文件傳輸單元對該文件進行上傳,進行所述文件的下載;文件傳輸單元接收到檢索結(jié)果后,顯示給用戶,用戶再從這些結(jié)果中選擇自己滿意的文件進行下載,查詢發(fā)起對等結(jié)點的文件傳輸單元根據(jù)文件的信息與目的對等結(jié)點的文件傳輸單元進行協(xié)商,目的對等結(jié)點的文件傳輸單元向查詢發(fā)起對等單元的文件傳輸單元提供該文件的上傳;其中目的對等結(jié)點是指在檢索結(jié)果中共享了符合查詢請求的文件的對等結(jié)點,查詢發(fā)起對等結(jié)點要從目的對等結(jié)點下載文件;從上可知,將用戶的查詢請求與維護的共享文件列表中的索引進行匹配,從而找到滿足用戶請求的文件,不管查詢請求中間經(jīng)過了幾個對等結(jié)點,目的對等結(jié)點都是直接將檢索結(jié)果返回給查詢發(fā)起對等結(jié)點,從而使用戶能夠盡快地看到檢索結(jié)果,提高了用戶體驗。
本發(fā)明裝置的第一實施例與圖1所描述的裝置相比增加了索引維護單元。
所述索引維護單元用于在文件傳輸完成后將所述文件在文件下載列表和文件上傳列表中的索引進行更新;例如用戶通過查詢發(fā)起對等結(jié)點從目的對等結(jié)點下載了一個文件,則查詢發(fā)起對等結(jié)點的索引維護單元要在文件下載列表中增加一個該文件的索引,記錄這一下載記錄;同樣目的對等結(jié)點要在文件上傳列表中增加一個該文件的索引,記錄這一上傳記錄;這樣每一次文件交互,對應(yīng)的上傳結(jié)點和下載結(jié)點都會在對應(yīng)的文件列表中記錄這一信息,從而使文件的傳輸在網(wǎng)絡(luò)中都有記錄,在下一次再次有查詢請求針對該文件時,可以盡快地返回檢索結(jié)果,從而使用戶的體驗增強。
本發(fā)明裝置第一實施例所述的索引維護單元還用于在收到文件狀態(tài)改變的信息時,對所述文件在共享文件列表中的索引進行更新;還用于當文件下載列表和/或文件上傳列表中有該文件的索引時,對文件下載列表和/或文件上傳列表中的索引進行更新,并將文件狀態(tài)改變的信息發(fā)送給文件下載列表和/或文件上傳列表中的索引對應(yīng)的對等結(jié)點。
當一個對等結(jié)點將一個先前未共享的文件置于共享時,就要在共享文件列表中更新該文件的索引,表示該文件已經(jīng)被共享;如果在文件下載列表和/或文件上傳列表中也有該文件的記錄,也要將該文件的索引進行更新,并通知對應(yīng)的對等結(jié)點更新該文件的索引,這樣在網(wǎng)絡(luò)中關(guān)于該文件的索引都會得到更新,從而保證網(wǎng)絡(luò)中關(guān)于每個文件的索引都是正確的,從而有助于對用戶的查詢請求返回更多更有效的檢索結(jié)果;同樣,當對等結(jié)點的一個先前共享的文件置于未共享時,也要進行上述的操作。
再介紹本發(fā)明裝置第二實施例,第二實施例與第一實施例相比增加了共享樹維護單元和負載均衡單元,其中共享樹維護單元,用于在收到所述文件的檢索結(jié)果后,創(chuàng)建該文件的共享樹,并把創(chuàng)建的共享樹信息發(fā)送給所述共享樹中的其他對等結(jié)點;共享樹是一個虛擬的結(jié)構(gòu),在網(wǎng)絡(luò)中并沒有保存整棵樹的結(jié)構(gòu),每個加入共享樹的對等結(jié)點也不知道共享樹中到底有哪些結(jié)點,但是他們都記錄有共享樹的根結(jié)點的信息,在有關(guān)樹的操作中都會帶上根結(jié)點,以通知其他對等結(jié)點本結(jié)點屬于哪棵樹;在網(wǎng)絡(luò)中關(guān)于同一個文件的共享樹可能會有多棵,共享樹的構(gòu)建過程將在方法中詳細描述;負載均衡單元,用于在當所述共享樹中一對等結(jié)點對所述文件的負載比共享樹中其他對等結(jié)點對該文件的負載高時,選擇負載高的對等結(jié)點上文件上傳列表中所述文件的索引對應(yīng)的對等結(jié)點上該文件的狀態(tài)為未共享的索引,并將選擇的索引遷移到對該文件負載低的對等結(jié)點;主要是實現(xiàn)一棵樹內(nèi)的負載均衡,負載均衡主要是通過節(jié)點間的索引遷移來實現(xiàn)的,具體的遷移過程將在方法中詳細描述;
所述索引維護單元還用于更新該文件在文件上傳列表和文件下載列表中的索引;文件的索引發(fā)生了變化,就需要對索引進行更新,從而保證文件在網(wǎng)絡(luò)中的索引都是正確的。
本發(fā)明裝置第二實施例所述的共享樹維護單元還用于在共享樹的結(jié)構(gòu)發(fā)生變化時更新共享樹,并觸發(fā)新的共享樹的其他對等結(jié)點更新所述共享樹;當一個對等結(jié)點取消了一個文件的共享,那么就需要將該結(jié)點從所述文件的共享樹中刪除;同樣一個對等結(jié)點增加了對一個文件的共享,則需要在所述文件的共享樹中增加該對等結(jié)點;具體的增加和刪除結(jié)點的過程將在方法中詳細描述。
以上對維護一個文件的共享樹進行了描述,采用了共享樹后,將可以促使同一個文件的各個共享對等結(jié)點間的負載均衡,從而保證用戶在下載文件時得到最快的速度。
以上對本發(fā)明提供的裝置進行了描述,下面介紹本發(fā)明的方法,參見圖2,圖2為本發(fā)明方法的流程圖,如圖2所示,本發(fā)明方法主要包括以下步驟步驟201、目的對等結(jié)點得到查詢請求后,將所述查詢請求與所述目的對等結(jié)點所維護的記錄有本地共享文件的共享文件列表中的索引進行匹配,如果有匹配的索引,進入步驟203;如果沒有匹配的索引,進入步驟202;收到的查詢請求可以是用戶在所述目的對等結(jié)點上直接輸入的,也可以是其他對等結(jié)點轉(zhuǎn)發(fā)過來的,查詢請求就是用戶想要查找的文件的關(guān)鍵信息;收到查詢請求后,將查詢請求與保存有本地共享文件的共享文件列表中的索引進行匹配,如果有匹配的索引,則說明本地共享的文件中有符合用戶查詢請求的文件,從而直接向查詢發(fā)起對等結(jié)點返回檢索結(jié)果;共享文件列表中的索引格式為文件名,文件關(guān)鍵字,文件Hash值;其中,文件名包括有該文件在本地的存儲路徑以及文件名,在沒有文件關(guān)鍵字項時將用查詢請求與文件名直接匹配;文件關(guān)鍵字是可選項,是由系統(tǒng)自動或用戶手動為文件制定的關(guān)鍵字,用于與查詢請求進行匹配,它可以與文件名相同,也可以是文件名的一部分關(guān)鍵字詞;文件Hash值是采用哈希算法為文件生成的一個值,不同的文件即使有相同的文件名生成的Hash值也不一樣,同一個文件不管文件名怎樣變化,它的Hash值也是不變的,所以Hash值與文件名無關(guān),而與文件含有的信息有關(guān);步驟202、所述目的對等結(jié)點將所述查詢請求與該目的對等結(jié)點所維護的記錄有下載文件索引的文件下載列表和記錄有上傳文件索引的文件上傳列表中的索引進行匹配,如果有匹配的索引,將該查詢請求路由給所述匹配的索引對應(yīng)的目的對等結(jié)點,進入步驟201;因為在共享文件列表中沒有找到對應(yīng)的文件索引,而很有可能本對等結(jié)點保存有匹配的文件,只是未共享或取消了共享;所以再到文件下載列表和/或文件上傳列表中去匹配,而文件下載列表和/或文件上傳列表記錄了本對等結(jié)點的文件交互記錄,從文件下載列表和/或文件上傳列表中用查詢請求與索引進行匹配,判斷是否有匹配的索引;步驟203、直接向查詢發(fā)起對等結(jié)點返回滿足查詢請求的檢索結(jié)果;步驟204、查詢發(fā)起對等結(jié)點從所述檢索結(jié)果中選擇所述文件進行下載;給用戶返回的檢索結(jié)果有多個,用戶可以根據(jù)結(jié)果中文件大小,共享對等結(jié)點的數(shù)量等與下載速度直接相關(guān)的信息選擇適當?shù)奈募螺d;從上可知,將用戶的查詢請求與維護的共享文件列表中的索引進行匹配,從而找到滿足用戶請求的文件,不管查詢請求中間經(jīng)過了幾個對等結(jié)點,目的對等結(jié)點都是直接將檢索結(jié)果返回給查詢發(fā)起對等結(jié)點,從而使用戶能夠盡快地看到檢索結(jié)果,并且用戶可以根據(jù)返回的檢索結(jié)果標識的文件的相關(guān)信息選擇文件下載,提高了用戶體驗。
如圖3所示,圖3是本發(fā)明方法第一實施例的具體流程圖。
步驟301、對等結(jié)點收到查詢請求;對等結(jié)點可以是中間對等結(jié)點,中間對等結(jié)點的本地共享文件列表中并沒有與查詢請求對應(yīng)的索引,但是在文件下載列表和/或文件上傳列表中可能有對應(yīng)的索引;也可以是目的對等結(jié)點,目的對等結(jié)點的本地共享文件列表中有與查詢請求對應(yīng)的索引;同樣查詢請求可以是用戶輸入的,也可以是由中間對等結(jié)點轉(zhuǎn)發(fā)的;
步驟302、將查詢請求與共享文件列表中的索引進行匹配,判斷是否有匹配的索引?如果是,進入步驟303;如果否,進入步驟305;先將查詢請求與本地共享文件列表中的索引進行匹配,如果有對應(yīng)的匹配即本地共享文件中有符合查詢請求的文件,就可以直接給查詢發(fā)起對等結(jié)點返回檢索結(jié)果;如果沒有匹配的索引,則要在文件下載列表和/或文件上傳列表中進行匹配;步驟303、直接向查詢發(fā)起對等結(jié)點返回滿足查詢請求的檢索結(jié)果;在共享文件列表中找到匹配查詢請求的索引,就直接向查詢發(fā)起對等結(jié)點返回檢索結(jié)果;步驟304、用戶通過查詢發(fā)起對等結(jié)點從所述檢索結(jié)果中選擇文件進行下載,結(jié)束本流程;查詢發(fā)起對等結(jié)點收到檢索結(jié)果后,顯示給用戶,用戶再根據(jù)自己的需要以及每個文件的網(wǎng)絡(luò)情況選擇文件下載;具體可以根據(jù)文件的大小,共享該文件的對等結(jié)點的數(shù)量以及該文件的共享速度等一些與文件相關(guān)的信息,這樣用戶可以根據(jù)自己的需要以及自身的硬件或軟件條件,選擇文件下載;例如用戶并不是很著急要下載一個文件,就可以選擇較大的文件下載,當然還有許多情況,這里不再一一贅述;步驟305、將查詢請求與文件下載列表和/或文件上傳列表中的索引進行匹配,判斷是否有匹配的索引,如果是,進入步驟306,如果否,結(jié)束本流程;因為在共享文件列表中沒有找到對應(yīng)的文件索引,而很有可能本對等結(jié)點保存有匹配的文件,只是未共享或取消了共享;所以再到文件下載列表和/或文件上傳列表中去匹配,而文件下載列表和/或文件上傳列表記錄了本對等結(jié)點的文件交互記錄,從文件下載列表和/或文件上傳列表中用查詢請求與索引進行匹配,判斷是否有匹配的索引;步驟306、將查詢請求路由給所述匹配的索引對應(yīng)的對等結(jié)點,進入步驟301;從文件下載列表和/或文件上傳列表中找到了匹配的索引,說明對應(yīng)的對等結(jié)點曾經(jīng)對本對等結(jié)點上傳過對應(yīng)的文件或從本對等結(jié)點下載過對應(yīng)的文件,所以將查詢請求路由到對應(yīng)的對等結(jié)點,對應(yīng)的對等結(jié)點再重復(fù)本實施例的流程;從上可以看出,當從共享文件列表找不到匹配的文件時,再從文件下載列表和/或文件上傳列表中進行查找,在找到了對應(yīng)的文件索引時,再將查詢請求路由到對應(yīng)的對等結(jié)點,對應(yīng)的對等結(jié)點再進行上述的流程;在實際應(yīng)用中,為了返回盡可能多的檢索結(jié)果,可以不管是否從共享文件列表中找到匹配的索引,都與文件下載列表和/或文件上傳列表中的索引進行匹配,這樣即使在本對等結(jié)點有對應(yīng)的共享文件,也會將查詢請求路由到其他的結(jié)點,從而再由其他對等結(jié)點進行同樣的匹配過程,返回更多的檢索結(jié)果;這樣在多個結(jié)點共享同一個文件的時候,可以根據(jù)文件的Hash值將這些文件作為同一個文件,用戶在選擇文件下載的時候,還可以選擇共享文件的對等結(jié)點多的文件下載,因為這樣可以從多個結(jié)點下載同一個文件,文件的下載速度將會更快;在實際應(yīng)用中先對文件下載列表進行匹配還是先對文件上傳列表進行匹配都可以,本發(fā)明并不對先與哪個列表進行匹配進行限定。
在實際應(yīng)用中,還有可能出現(xiàn)在一個對等結(jié)點的共享文件列表、文件上傳列表和文件下載列表都找不到對應(yīng)的索引的情況,如果這個對等結(jié)點是非查詢發(fā)起對等結(jié)點還好,因為這時查詢請求可能被路由到其他的對等結(jié)點,而其他的對等結(jié)點可以返回檢索結(jié)果;如果這個對等結(jié)點是查詢發(fā)起對等結(jié)點,這時就可以采用傳統(tǒng)的路由策略進行查詢路由,例如可以采用洪泛或隨機漫步的方式將查詢請求路由出去,從而盡可能保證用戶的查詢請求能夠返回符合用戶要求的檢索結(jié)果,提高用戶的滿意程度。
本發(fā)明方法的第一實施例雖然能夠保證用戶順利的進行文件的下載,但是僅僅這樣做是不夠的,在實際應(yīng)用中還應(yīng)該在文件下載完成后進行如下的步驟查詢發(fā)起對等結(jié)點在文件下載列表中對該文件的索引進行更新;目的對等結(jié)點在文件上傳列表中對該文件的索引進行更新。
因為文件下載列表和文件上傳列表記錄的是對等結(jié)點文件交互的歷史記錄,并且它們是一一對應(yīng)的,一個文件在一個對等結(jié)點的文件下載列表中有記錄,那么在另一個對等結(jié)點的文件上傳列表中必然有對應(yīng)的記錄,這是因為文件交互是兩個對等結(jié)點之間進行的;在進行了上述步驟后,下載該文件的對等結(jié)點即查詢發(fā)起對等結(jié)點將會在其文件下載列表中增加該文件的索引;同樣上傳所述文件的結(jié)點即目的對等結(jié)點將會在其文件上傳列表中增加該文件的索引,而目的對等結(jié)點在一個文件的交互中可能會有多個,那么這多個對等結(jié)點的文件上傳列表都要對文件索引進行更新。
在實際應(yīng)用中還會出現(xiàn)如下的情況,對等結(jié)點的文件狀態(tài)改變,文件狀態(tài)改變包括兩種一個文件從未共享變?yōu)楣蚕恚粋€文件從共享變?yōu)槲垂蚕?;這時就需要對各個列表中的所述文件的索引進行更新,參見圖4,圖4是將文件從未共享變?yōu)楣蚕淼奶幚砹鞒虉D步驟401、將文件x共享;用戶出于某種考慮,比如說提高某文件的散布范圍等,將文件x設(shè)置為共享;步驟402、將文件x的索引加入共享文件列表;這樣在有查詢請求時可以最快的查到對應(yīng)的記錄,從而能夠盡快的給查詢發(fā)起對等結(jié)點返回檢索結(jié)果;步驟403、文件x是否在文件下載列表中,如果是,進入步驟404,如果否,進入步驟406;步驟404、更新文件下載列表中文件x的共享狀態(tài)為共享;步驟405、通知對應(yīng)的文件上傳對等結(jié)點更新該文件的索引;因為在文件下載列表中有該文件的記錄的話,那就有對應(yīng)的文件上傳對等結(jié)點也有該文件的記錄,所以要通知對應(yīng)的文件上傳對等結(jié)點更新該文件的索引;步驟406、文件x是否在文件上傳列表中,如果是,進入步驟407,如果否,結(jié)束本流程;步驟407、更新文件上傳列表中文件x的共享狀態(tài)為共享;步驟408、通知對應(yīng)的文件下載對等結(jié)點更新該文件的索引;通過上述步驟,當文件x由未共享設(shè)置為共享后,對等網(wǎng)絡(luò)中該文件的索引都會得到更新,這樣在文件x符合用戶的查詢請求時可以盡快的給查詢發(fā)起對等結(jié)點返回文件x的信息,從而提高用戶的滿意度;同樣在文件由共享變?yōu)槲垂蚕頃r,處理流程的和圖4描述的流程基本上一樣,只是在增加索引的地方更改為刪除索引,以及將處于文件下載列表和文件上傳列表中的文件索引更改為未共享就可以了,在這里不再贅述;在圖4中是先對文件下載列表進行更新,再對文件上傳列表進行更新,而在實際應(yīng)用中也可以先對文件上傳列表進行更新,再對文件下載列表進行更新,因此本發(fā)明并不對先對哪個列表進行更新進行限定。
下面舉例說明共享樹的創(chuàng)建及更新步驟,因為采用哈希算法為網(wǎng)絡(luò)中每個文件生成其對應(yīng)的Hash值,而每個不同的文件的Hash值都是不同的,因此具有相同文件Hash值的多個文件被認為是同一文件,而共享樹是為一個文件生成的,共享同一文件的全部或部分對等結(jié)點構(gòu)成關(guān)于所述文件的共享樹,一個對等結(jié)點可能共享多個文件,因此一個對等結(jié)點可能屬于多個共享樹,但是對于同一個文件而言,雖然網(wǎng)絡(luò)中可能會有多個關(guān)于該文件的共享樹,但是一個對等結(jié)點只能屬于一個共享樹,在關(guān)于文件的索引里面加上一個標識值,標識該對等結(jié)點所屬共享樹的根結(jié)點。
先介紹共享樹的構(gòu)建過程,如表3所示,表3描述的是構(gòu)建共享樹前各對等結(jié)點的文件下載列表和文件上傳列表的狀態(tài);表3、構(gòu)建共享樹前文件下載列表和文件上傳列表的狀態(tài)
查詢對等結(jié)點Q發(fā)出關(guān)于文件X的查詢請求,對等網(wǎng)絡(luò)返回檢索結(jié)果,檢索結(jié)果顯示對等結(jié)點A、B、C和D返回的文件X的Hash值相同,則對等結(jié)點Q選擇其中任意一個或多個對等結(jié)點進行文件X的下載。最初,對等節(jié)點A、B、C和D并不知道相互都共享了文件X,它們之間也沒有任何關(guān)系,并且返回值顯示它們并沒有加入任何一棵關(guān)于文件X的共享樹;這時就可以為文件X創(chuàng)建共享樹,本發(fā)明提供兩種創(chuàng)建共享樹的方法一)、如果對等結(jié)點Q只選擇一個對等結(jié)點進行文件X的下載,本說明書以對等結(jié)點A進行描述,就以對等結(jié)點A為共享樹的根結(jié)點;當同時從多個對等結(jié)點下載時,可以采用隨機選擇的方式選擇根結(jié)點,也可以綜合考慮各個結(jié)點的狀態(tài),如結(jié)點的在線時長,共享速度等方面綜合考慮選擇根結(jié)點,本發(fā)明并不對具體的選擇策略進行限定,選擇了對等結(jié)點A作為共享樹的根結(jié)點;對等結(jié)點Q將對等結(jié)點B、C和D也共享了文件X的信息通知對等結(jié)點A,對等結(jié)點A再通知對等結(jié)點B、C和D以A為根結(jié)點創(chuàng)建共享樹,對等結(jié)點A、B、C和D將各自列表中文件X的索引進行更新,生成共享樹,生成共享樹后文件下載列表和文件上傳列表的狀態(tài)如表4所示;二)、采用一)中的方法選定對等結(jié)點A作為根結(jié)點后,通知對等結(jié)點B、C和D對等結(jié)點A也共享了文件X,對等結(jié)點B、C和D再與對等結(jié)點A進行交互,以A為根結(jié)點創(chuàng)建共享樹,對等結(jié)點A、B、C和D將各自列表中文件X的索引進行更新,生成共享樹,生成共享樹后文件下載列表和文件上傳列表的狀態(tài)如表4所示;文件下載完成后,如果對等結(jié)點Q也將文件X共享,則對等結(jié)點Q也加入關(guān)于文件X的共享樹,如果不共享的話,Q只是記錄文件X的交互事件,Q并未成為共享樹的結(jié)點;如表4所示,共享樹創(chuàng)建后各個對等結(jié)點關(guān)于文件X的索引都進行了更新,原來B、C和D與A之間沒有關(guān)系,現(xiàn)在有索引將它們聯(lián)系起來,各個索引最后添加了標識A,表明它們已經(jīng)加入了文件X的共享樹,并且這棵共享樹的根結(jié)點為A;創(chuàng)建了共享樹后,對等網(wǎng)絡(luò)中關(guān)于文件X的索引增加,這樣在有關(guān)于文件X的查詢請求后,可以更快更多的給查詢發(fā)起對等結(jié)點返回檢索結(jié)果。
表4、構(gòu)建共享樹后文件下載列表和文件上傳列表的狀態(tài)
同一棵共享樹中,有的結(jié)點由于共享某文件比較早,因此被下載得比較多,其索引被散布得比較廣,越來越多的對等結(jié)點向其發(fā)出文件下載請求,它的帶寬開銷、處理開銷、存儲開銷都比較大;而一些結(jié)點加入該共享樹較晚,因此其索引散布范圍較小,負載相對較輕,為了保證網(wǎng)絡(luò)的優(yōu)質(zhì)運行,同時也為了減輕負載較重的對等結(jié)點的負載,本發(fā)明還公開了使共享樹中各對等結(jié)點負載均衡的方法;其中負載主要是帶寬開銷、處理開銷和存儲開銷,帶寬開銷是為對等結(jié)點上傳文件消耗的,處理開銷是為實現(xiàn)各個上傳和檢索消耗的,而存儲開銷是由存儲索引消耗的,其中帶寬開銷和處理開銷是主要的開銷,因此最主要是考慮帶寬開銷和處理開銷,由于共享文件列表由對等結(jié)點的個體行為所影響,不涉及到對等結(jié)點相互間的交互,而文件下載列表和文件上傳列表體現(xiàn)了對等結(jié)點間的歷史行為和相互關(guān)系,因此只考慮文件下載列表和文件上傳列表所帶來的負載均衡問題。
還是以表4為例,假設(shè)此后的某一時刻,對等節(jié)點P將文件X共享,并且對等結(jié)點P加入了這棵關(guān)于文件X的共享樹。如果對等結(jié)點A負載過重,而對等結(jié)點P負載較輕,則可以將對等結(jié)點A的文件上傳列表中的一些未共享索引遷移到對等結(jié)點P的文件上傳列表中,同時對相應(yīng)下載對等結(jié)點的下載列表中的相應(yīng)索引進行更新,其中所述未共享索引是指索引對應(yīng)的下載結(jié)點中該文件處于未共享狀態(tài)的索引;在本例中只有一個索引,在有多個索引的情況下可以隨機選擇部分或者全部遷移到對等結(jié)點P中,索引遷移后的文件下載列表和文件上傳列表的狀態(tài)如表5所示表5、索引遷移后文件下載列表和文件上傳列表的狀態(tài)
對比表4可知,對等結(jié)點A將“Q,未共享”這一條索引遷移到了對等結(jié)點P,對等結(jié)點Q相應(yīng)的將“A,共享”這一條索引更新為“P,共享”,這樣對等結(jié)點Q再有關(guān)于文件X的查詢請求時,就會將查詢請求路由到對等結(jié)點P而不是對等結(jié)點A,從而降低對等結(jié)點A的負載,從而可以盡可能的使共享樹的各個對等結(jié)點的負載均衡;在實際應(yīng)用中索引遷移可以發(fā)生在共享樹的任意對等結(jié)點之間,從而盡可能保證共享樹中的各個對等結(jié)點關(guān)于該文件的負載均衡。
在實際應(yīng)用中,如果原來共享某文件的對等結(jié)點取消了所述文件的共享,而指向該對等結(jié)點的關(guān)于該文件的索引已經(jīng)在對等網(wǎng)絡(luò)中廣泛散布,必須對索引進行更新,前面已經(jīng)對更新的流程進行了描述;但是對索引進行更新僅僅能保證網(wǎng)絡(luò)中各索引是正確的,但是不能保證各個索引都是對用戶有價值的,因為這樣處理后會產(chǎn)生很多沒有意義的索引;以表5為例,當對等結(jié)點P取消文件X的共享后,對等結(jié)點Q關(guān)于文件X的索引就會變成“X,未共享(P,未共享)”,而該索引對于文件X的檢索不能提供有意義的信息;為了消除這種對用戶無價值的索引,可以按照以下的步驟對對等結(jié)點進行處理步驟一、取消文件共享的對等結(jié)點將文件上傳列表中的未共享索引轉(zhuǎn)移到文件上傳列表和文件下載列表中的共享結(jié)點或其他共享結(jié)點上;轉(zhuǎn)移時選擇負載較低的目的結(jié)點,從而保證各個對等結(jié)點的負載均衡;其中未共享索引是指索引對應(yīng)的下載結(jié)點中該文件處于未共享狀態(tài)的索引;步驟二、對被轉(zhuǎn)移索引所對應(yīng)的下載對等結(jié)點的下載列表中的相應(yīng)索引進行更新;這是為了保證轉(zhuǎn)移后各個對等結(jié)點的索引也能保持對用戶有價值;這樣可以消除對等網(wǎng)絡(luò)中對用戶無價值的索引,在對查詢請求進行匹配的時候,不用對該文件的索引進行無效的匹配,可以降低對等結(jié)點的處理開銷;在先前的狀態(tài)下,因為在文件上傳列表或上傳列表有該文件的索引,所以會對其進行匹配,但是該文件的索引卻是對用戶無價值的,所以使對等結(jié)點有不必要的處理開銷;并且更新了對用戶無價值的索引后,雖然索引是遷移到了其它對等結(jié)點,但是該索引卻已變?yōu)閷τ脩粲袃r值的索引,降低了存儲對用戶無價值的索引所帶來的存儲開銷。
下面舉一個實際的例子對上述流程進行描述,參見表6,表6描述的是文件X的一棵共享樹的各個結(jié)點的當前狀態(tài),它構(gòu)成的共享樹如圖5所示;如圖5描述的共享樹,根結(jié)點是對等結(jié)點A,它有兩個子結(jié)點對等結(jié)點B和對等結(jié)點C,其中結(jié)點B有兩個子結(jié)點對等結(jié)點D和對等結(jié)點E;對等結(jié)點F從對等結(jié)點B下載了文件X,但是并沒有將文件X共享;表6、共享樹各個結(jié)點文件下載列表和文件上傳列表的當前狀態(tài)
假設(shè)對等結(jié)點B取消了文件X的共享,對等結(jié)點F關(guān)于文件X的索引就會變成“X,未共享,(B,未共享)”,為了防止這種索引出現(xiàn),對等結(jié)點B將索引“F,未共享”遷移到對等結(jié)點A、D或E中的一個,假設(shè)對等結(jié)點D的負載最低,將索引遷移到對等結(jié)點D,同樣對等結(jié)點F也要將索引進行更新;并且當一個對等結(jié)點取消了某文件的共享后,就自動退出該文件的共享樹;在經(jīng)過上面的處理步驟后,共享樹的各個節(jié)點的狀態(tài)如表7所示,此時狀態(tài)表對應(yīng)的共享樹如圖6所示;表7、共享樹各個結(jié)點索引遷移后文件下載列表和文件上傳列表的狀態(tài)
如圖6所示,共享樹已經(jīng)被拆開成了3棵,一棵是根結(jié)點為A,它只有一個子結(jié)點C,另外兩棵都只有一個結(jié)點,分別是D和E;可以看出,結(jié)點取消共享后,采用上述處理流程進行處理可能會破壞原有共享樹的結(jié)構(gòu),使原有共享樹成為多個互不相連的分支,即分成了多個共享樹,這會為結(jié)點間的負載均衡帶來相應(yīng)問題,由于共享樹被分成多個分支,各分支被隔離開來,限制了負載轉(zhuǎn)移目的結(jié)點的可選擇范圍。因此,必須在前面所述的取消共享流程的基礎(chǔ)上,采用如下流程進行后續(xù)處理步驟刪除的結(jié)點將文件上傳列表中索引對應(yīng)的所述文件的狀態(tài)為未共享的索引遷移至共享樹中的處于所述結(jié)點的文件下載列表和/或文件上傳列表中的共享結(jié)點或其他處于共享樹中的共享結(jié)點,所述索引遷移至的結(jié)點觸發(fā)遷移的索引對應(yīng)的對等結(jié)點更新所述文件的索引;刪除的結(jié)點選擇一個該結(jié)點的子結(jié)點置于刪除的結(jié)點所處的位置,處于該位置的新的結(jié)點更新所述文件的索引,并觸發(fā)其在新共享樹的父子結(jié)點更新所述文件的索引;
這是因為在對等結(jié)點的文件上傳列表中的共享對等結(jié)點是其子結(jié)點,而在文件下載列表中的共享對等結(jié)點其父結(jié)點,經(jīng)過上述處理步驟后得出一棵新的共享樹,接表7描述的例子,新的共享樹的各個節(jié)點文件下載列表和文件上傳列表的狀態(tài)如表8所示,它對應(yīng)的共享樹如圖7所示。
表8、重新構(gòu)建共享樹后文件下載列表和文件上傳列表的狀態(tài)
如圖7所示,新的共享樹根結(jié)點為A,它有兩個子結(jié)點D和C,其中D又有一個子結(jié)點E;從上可以看出,當某文件的共享樹中一個對等結(jié)點取消了對所述文件的共享后,為了避免其它對等結(jié)點上出現(xiàn)對用戶無價值的索引,將取消共享的對等結(jié)點的文件上傳列表中的未共享索引遷移到文件下載列表和/或文件上傳列表中的共享結(jié)點或處于新共享樹的其他結(jié)點上,并將索引遷移帶來的索引變化進行更新,從而使對用戶無價值的索引變?yōu)閷τ脩粲袃r值,降低了文件查詢時的開銷;對等結(jié)點取消了文件的共享,就自動退出了所述文件的共享樹,當所述對等結(jié)點退出所述共享樹會破壞共享樹的結(jié)構(gòu)時,從它的子結(jié)點中選擇一個取代它的位置,并更新索引,從而保證了共享樹的完整,在促進負載均衡時可以提供更大的范圍,使網(wǎng)絡(luò)更為穩(wěn)定;其中選擇哪個子結(jié)點取代原有結(jié)點的位置,可以選擇在線時間長或者文件共享狀態(tài)比較好的對等結(jié)點,本發(fā)明并不對具體的選擇條件進行限定。
以上對本發(fā)明所提供的一種文件傳輸?shù)姆椒把b置進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種文件傳輸?shù)姆椒?,其特征在于,包括A、目的對等結(jié)點得到查詢請求后,將所述查詢請求與所述目的對等結(jié)點所維護的記錄有本地共享文件的共享文件列表中的索引進行匹配,如果有匹配的索引,直接向查詢發(fā)起對等結(jié)點返回滿足查詢請求的檢索結(jié)果,進入步驟C;B、如果沒有匹配的索引,所述目的對等結(jié)點將所述查詢請求與該目的對等結(jié)點所維護的記錄有下載文件索引的文件下載列表和記錄有上傳文件索引的文件上傳列表中的索引進行匹配,如果有匹配的索引,將該查詢請求路由給所述匹配的索引對應(yīng)的目的對等結(jié)點,進入步驟A;C、所述查詢發(fā)起對等結(jié)點從所述檢索結(jié)果中選擇所述文件進行下載。
2.如權(quán)利要求1所述的文件傳輸?shù)姆椒?,其特征在于,所述文件下載完成后進一步包括所述查詢發(fā)起對等結(jié)點在文件下載列表中對該文件的索引進行更新;所述目的對等結(jié)點在文件上傳列表中對該文件的索引進行更新。
3.如權(quán)利要求1或2所述的文件傳輸?shù)姆椒?,其特征在于,當對等網(wǎng)絡(luò)中任一對等結(jié)點得到文件狀態(tài)改變的信息時,所述方法還包括在共享文件列表中對狀態(tài)改變的文件的索引進行更新;如果在所述對等結(jié)點維護的文件下載列表或文件上傳列表中有該文件的索引,對文件下載列表或文件上傳列表中的該文件的索引進行更新,并將該文件狀態(tài)改變的信息發(fā)送給所述文件下載列表或文件上傳列表中的該文件的索引對應(yīng)的對等結(jié)點。
4.如權(quán)利要求1至3任一所述的文件傳輸?shù)姆椒ǎ涮卣髟谟?,所述方法還包括所述查詢發(fā)起對等結(jié)點收到所述文件的檢索結(jié)果后,觸發(fā)所述目的對等結(jié)點創(chuàng)建所述文件的共享樹;當所述共享樹中一對等結(jié)點對所述文件的負載比共享樹中其他對等結(jié)點對該文件的負載高時,所述負載高的對等結(jié)點選擇文件上傳列表中所述文件的索引對應(yīng)的對等結(jié)點上該文件的狀態(tài)為未共享的索引,將選擇的索引遷移到對該文件負載低的對等結(jié)點;所述負載低的對等結(jié)點在其維護的文件上傳列表中對所述文件的索引進行更新,并觸發(fā)遷移的索引對應(yīng)的對等結(jié)點更新所述文件在文件下載列表中的索引。
5.如權(quán)利要求4所述的文件傳輸?shù)姆椒?,其特征在于,當共享樹結(jié)構(gòu)發(fā)生變化時,該方法進一步包括共享樹結(jié)構(gòu)發(fā)生變化的對等結(jié)點觸發(fā)更新共享樹結(jié)構(gòu),并觸發(fā)共享樹中對等結(jié)點更新共享樹。
6.如權(quán)利要求5所述的文件傳輸?shù)姆椒?,其特征在于,當從共享樹中刪除一個結(jié)點時,所述共享樹結(jié)構(gòu)的更新具體為刪除的結(jié)點將文件上傳列表中索引對應(yīng)的所述文件的狀態(tài)為未共享的索引遷移至共享樹中的處于所述結(jié)點的文件下載列表和/或文件上傳列表中的共享結(jié)點或處于共享樹中的其他共享結(jié)點,所述索引遷移至的結(jié)點觸發(fā)遷移的索引對應(yīng)的對等結(jié)點更新所述文件的索引;刪除的結(jié)點選擇一個該結(jié)點的子結(jié)點置于刪除的結(jié)點所處的位置,處于該位置的新的結(jié)點更新所述文件的索引,并觸發(fā)其在新共享樹的父子結(jié)點更新所述文件的索引。
7.如權(quán)利要求4所述的文件傳輸?shù)姆椒ǎ涮卣髟谟冢龉蚕順涞膭?chuàng)建具體為所述查詢發(fā)起對等結(jié)點確定所述文件的共享結(jié)點,并選擇其中一個下載結(jié)點作為根結(jié)點,將除所述根結(jié)點外的其他共享結(jié)點的信息通知所述根結(jié)點;所述根結(jié)點根據(jù)所述其他共享結(jié)點的信息與所述其他共享結(jié)點進行交互,并將其他共享結(jié)點作為所述根結(jié)點的子結(jié)點構(gòu)建所述文件的共享樹。
8.如權(quán)利要求4所述的文件傳輸?shù)姆椒?,其特征在于,所述共享樹的?chuàng)建具體為所述查詢發(fā)起對等結(jié)點確定所述文件的共享結(jié)點,并選擇其中一個下載結(jié)點作為根結(jié)點,向除所述根結(jié)點以外的其他共享結(jié)點通知所述根結(jié)點的信息;所述其他共享結(jié)點根據(jù)所述根結(jié)點的信息與所述根結(jié)點進行交互,所述根結(jié)點將所述其他共享結(jié)點作為所述根結(jié)點的子結(jié)點構(gòu)建所述文件的共享樹。
9.一種文件傳輸?shù)姆椒?,其特征在于,包括目的對等結(jié)點得到查詢請求后,將所述查詢請求與所述目的對等結(jié)點所維護的記錄有本地共享文件的共享文件列表、記錄有下載文件索引的文件下載列表和/或記錄有上傳文件索引的文件上傳列表中的索引進行匹配,如果在共享文件列表有匹配的索引,直接向查詢發(fā)起對等結(jié)點返回滿足查詢請求的檢索結(jié)果;如果在文件下載列表和/或文件上傳列表有匹配的索引,將所述查詢請求路由給所述文件下載列表和/或文件上傳列表中匹配的索引對應(yīng)的目的對等結(jié)點;所述查詢發(fā)起對等結(jié)點從所述檢索結(jié)果中選擇所述文件進行下載。
10.一種文件傳輸?shù)难b置,其特征在于,包括查詢請求處理單元,用于向其他對等結(jié)點發(fā)送查詢請求或接收其他對等結(jié)點發(fā)送的查詢請求;文件列表維護單元,用于維護保存有對等結(jié)點本地共享文件的索引的共享文件列表,維護記錄有下載文件索引的文件下載列表和記錄有上傳文件索引的文件上傳列表;索引匹配單元,用于將所述查詢請求與所述共享文件列表中的索引進行匹配,和/或?qū)⑺霾樵冋埱笈c所述文件下載列表和/或文件上傳列表中的索引進行匹配;檢索結(jié)果處理單元,用于在所述共享文件列表中有與所述查詢請求匹配的索引時,直接向發(fā)起所述查詢請求的對等結(jié)點返回滿足查詢請求的檢索結(jié)果;還用于接收其他對等結(jié)點發(fā)送的符合所述查詢請求的檢索結(jié)果;路由轉(zhuǎn)移單元,用于在所述文件下載列表或文件上傳列表中有與所述查詢請求匹配的索引時,將所述查詢請求路由給所述匹配的索引對應(yīng)的對等結(jié)點;文件傳輸單元,用于從所述檢索結(jié)果中選擇文件,通知共享該文件的對等結(jié)點的文件傳輸單元對該文件進行上傳,進行所述文件的下載。
11.如權(quán)利要求10所述的文件傳輸?shù)难b置,其特征在于,該裝置還包括索引維護單元,用于在所述文件傳輸完成后將所述文件在文件下載列表和文件上傳列表中的索引進行更新。
12.如權(quán)利要求11所述的文件傳輸?shù)难b置,其特征在于,所述索引維護單元還用于在收到文件狀態(tài)改變的信息時,對所述文件在共享文件列表中的索引進行更新;還用于當文件下載列表和/或文件上傳列表中有該文件的索引時,對文件下載列表和/或文件上傳列表中的索引進行更新,并將所述文件狀態(tài)改變的信息發(fā)送給文件下載列表和/或文件上傳列表中的索引對應(yīng)的對等結(jié)點。
13.如權(quán)利要求10至12任一所述的文件傳輸?shù)难b置,其特征在于,該裝置還包括共享樹維護單元,用于創(chuàng)建所述文件的共享樹,并把創(chuàng)建的共享樹的根結(jié)點通知所述共享樹中的其他對等結(jié)點;負載均衡單元,用于在當所述共享樹中一對等結(jié)點對所述文件的負載比共享樹中其他對等結(jié)點對該文件的負載高時,選擇所述負載高的對等結(jié)點上文件上傳列表中所述文件的索引對應(yīng)的對等結(jié)點上該文件的狀態(tài)為未共享的索引,并將選擇的索引遷移到對該文件負載低的對等結(jié)點;所述索引維護單元還用于更新該文件在文件上傳列表和/或文件下載列表中的索引。
14.如權(quán)利要求13所述的文件傳輸?shù)难b置,其特征在于,所述共享樹維護單元還用于在共享樹的結(jié)構(gòu)發(fā)生變化時更新共享樹,并觸發(fā)新的共享樹的其他對等結(jié)點更新所述共享樹。
全文摘要
本發(fā)明公開了一種文件傳輸?shù)姆椒把b置,其中方法主要包括A)目的對等結(jié)點得到查詢請求后,將所述查詢請求與所述目的對等結(jié)點所維護的共享文件列表中的索引進行匹配,如果有匹配的索引,直接向查詢發(fā)起對等結(jié)點返回滿足查詢請求的檢索結(jié)果,進入步驟C;B)如果沒有匹配的索引,所述目的對等結(jié)點將所述查詢請求與該目的對等結(jié)點所維護的文件下載列表和文件上傳列表中的索引進行匹配,如果有匹配的索引,將該查詢請求路由給所述匹配的索引對應(yīng)的目的對等結(jié)點,進入步驟A;C)查詢發(fā)起對等結(jié)點從所述檢索結(jié)果中選擇所述文件進行下載;使用該方法,檢索結(jié)果直接返回給查詢發(fā)起對等結(jié)點,檢索結(jié)果能夠盡快地返回給用戶,提高用戶體驗。
文檔編號H04L12/00GK1968099SQ20061013810
公開日2007年5月23日 申請日期2006年11月9日 優(yōu)先權(quán)日2006年11月9日
發(fā)明者朱望斌, 符海芳, 劉經(jīng)及, 李朋, 呂曉雨, 朱賢, 金洪波 申請人:華為技術(shù)有限公司