亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

P2p網(wǎng)絡(luò)構(gòu)建方法及數(shù)據(jù)定位方法

文檔序號:7914492閱讀:243來源:國知局

專利名稱::P2p網(wǎng)絡(luò)構(gòu)建方法及數(shù)據(jù)定位方法
技術(shù)領(lǐng)域
:本發(fā)明涉及P2P網(wǎng)絡(luò),具體涉及一種P2P網(wǎng)絡(luò)構(gòu)建方法及數(shù)據(jù)定位方法。
背景技術(shù)
:隨著P2P技術(shù)的日益發(fā)展,P2P理論的研究也日臻完善。近年來,伴隨著云存儲的興起,將P2P技術(shù)應(yīng)用到云存儲中將會是一個重要的研究領(lǐng)域。然而結(jié)構(gòu)化P2P網(wǎng)絡(luò)在解決覆蓋網(wǎng)分割和局部性等問題上依然還有諸多不足。結(jié)構(gòu)化P2P網(wǎng)絡(luò)中的節(jié)點可能在不作任何通知的情況下突然失效,如果失效的節(jié)點剛好是一個割點,則很容易使得P2P覆蓋網(wǎng)被分割。目前解決覆蓋網(wǎng)分割的方法有諸多局限性,并沒有非常行之有效的方法。能夠有效緩解P2P網(wǎng)絡(luò)中覆蓋網(wǎng)分割問題,這很大部分取決于點連通度和邊連通度等關(guān)鍵因素。此外,結(jié)構(gòu)化P2P網(wǎng)絡(luò)中覆蓋網(wǎng)與物理網(wǎng)時常不一致,在覆蓋網(wǎng)中鄰近的節(jié)點在實際的物理網(wǎng)絡(luò)中很有可能相距很遠,造成通信延時,不具有路由局部性特征,不能滿足當(dāng)前用戶對快速響應(yīng)的需求。路由局部性是指在覆蓋網(wǎng)中鄰近的節(jié)點在實際的物理網(wǎng)絡(luò)中也是鄰近的。雖然目前有些P2P結(jié)構(gòu)具有一定的局部性,但是往往不能劃分為多個層次,而且各個節(jié)點之間的負載也有失平衡。環(huán)形P2P網(wǎng)絡(luò)(Chord)是一種典型的結(jié)構(gòu)化P2P網(wǎng)絡(luò)模型,也依然存在以上問題。在環(huán)形P2P網(wǎng)絡(luò)中,所有的節(jié)點都是處在同一個環(huán)中,每個節(jié)點存儲了一個前驅(qū)節(jié)點和多個(一般為logN,N為環(huán)形P2P網(wǎng)絡(luò)中所有節(jié)點的總數(shù)量)后繼節(jié)點,并且包含了一個路由表(Fingertable),其中路由表中存儲的節(jié)點數(shù)量也為IogN個。目前還沒有一種P2P系統(tǒng),能夠極大的緩解覆蓋網(wǎng)分區(qū),而且具有局部性的同時,能夠保持負載均衡。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種P2P網(wǎng)絡(luò)構(gòu)建方法,其構(gòu)建的網(wǎng)絡(luò)極大的緩解覆蓋網(wǎng)分區(qū),具有局部性的同時,能夠保持負載均衡本發(fā)明的另一目的在于提供一種數(shù)據(jù)定位方法,能夠有效的緩解網(wǎng)絡(luò)分割問題,在保持負載均衡的同時,并具有路由局部性特征,減少了通信時延,加快數(shù)據(jù)定位,提高了對用戶請求的響應(yīng)速度。本發(fā)明P2P網(wǎng)絡(luò)的構(gòu)建方法,包括以下步驟新節(jié)點η找到一個環(huán)形Ρ2Ρ網(wǎng)絡(luò)中的現(xiàn)有節(jié)點N,得到新節(jié)點η的ID中的地址信息;計算新節(jié)點η和現(xiàn)有節(jié)點N的地址信息中相同域的數(shù)量num;判斷num是否大于N節(jié)點所在本環(huán)的層次數(shù),如果不是,則節(jié)點N向?qū)哟螢閚um的環(huán)發(fā)出新節(jié)點加入請求;在層次為num的環(huán)中查找一后繼節(jié)點Nx,其響應(yīng)新節(jié)點η的加入請求;計算后繼節(jié)點Nx和新節(jié)點η相同域的數(shù)量num2,再設(shè)置num3等于num2減去后繼節(jié)點Nx所在本環(huán)的層次;判斷nUm3是否為0,如果不為0,則判斷后繼節(jié)點Nx有無子環(huán);如果無子環(huán),則新節(jié)點η將作為后繼節(jié)點Nx子環(huán)的第一個節(jié)點加入到后繼節(jié)點Nx的子環(huán)中,設(shè)置Nx子環(huán)的層次數(shù)為num加1。本發(fā)明P2P網(wǎng)絡(luò)的構(gòu)建方法,還包括若num3為0,則新節(jié)點η加入后繼節(jié)點Nx所在本環(huán)中。本發(fā)明Ρ2Ρ網(wǎng)絡(luò)的構(gòu)建方法,還包括若后繼節(jié)點Nx有子環(huán),則設(shè)置num為后繼節(jié)點Nx子環(huán)的層次,并向子環(huán)中的各個節(jié)點發(fā)送新節(jié)點加入請求,再重復(fù)上述在層次為num的環(huán)中查找一后繼節(jié)點Nx的步驟。本發(fā)明Ρ2Ρ網(wǎng)絡(luò)的構(gòu)建方法,還包括若num大于N節(jié)點所在本環(huán)的層次數(shù),則設(shè)置num3等于num減去N節(jié)點所在本環(huán)的層次數(shù),則重復(fù)上述判斷num3是否為0的步驟。本發(fā)明P2P網(wǎng)絡(luò)的構(gòu)建方法,現(xiàn)有節(jié)點N中含有地址-IP映射表。本發(fā)明P2P網(wǎng)絡(luò)的構(gòu)建方法,所述新節(jié)點η加入后繼節(jié)點Nx所在本環(huán)中的步驟包括后繼節(jié)點Nx的直接前驅(qū)節(jié)點更新其后繼節(jié)點列表,并把節(jié)點η增加到其路由表中;后繼節(jié)點Nx更新其直接前驅(qū)列表,并把節(jié)點η增加到其路由表中,節(jié)點η設(shè)置其直接前驅(qū)列表、直接后繼列表以及路由表,并設(shè)置節(jié)點η所在本環(huán)的層次等于后繼節(jié)點Nx所在本環(huán)的層次。本發(fā)明Ρ2Ρ網(wǎng)絡(luò)的構(gòu)建方法,所述新節(jié)點η將作為后繼節(jié)點Nx子環(huán)的第一個節(jié)點加入到后繼節(jié)點Nx的子環(huán)中的步驟包括后繼節(jié)點Nx更新其子環(huán)上的直接前驅(qū)列表,并把節(jié)點η增加到其子環(huán)路由表中,節(jié)點η設(shè)置其直接前驅(qū)列表和直接后繼列表以及路由表,并設(shè)置節(jié)點η所在本環(huán)的層次等于后繼節(jié)點Nx所在本環(huán)的層次加一。本發(fā)明的數(shù)據(jù)定位的方法,包括步驟需要查找數(shù)據(jù)的節(jié)點M計算出所要查找數(shù)據(jù)的ID;用數(shù)據(jù)ID與節(jié)點M自身ID中的比例碼進行比較,相同比例域的數(shù)量設(shè)為num4;判斷num4是否大于節(jié)點N所在本環(huán)的層次數(shù),如果是,則設(shè)置num4等于節(jié)點M所在本環(huán)的層次數(shù);在層次為num4的環(huán)中查找響應(yīng)對數(shù)據(jù)ID的查找請求的響應(yīng)節(jié)點Nz;判斷響應(yīng)節(jié)點阪有無子環(huán),如果有,則響應(yīng)節(jié)點Nz發(fā)送查找請求到Nz所在的子環(huán)中繼續(xù)查找;在響應(yīng)節(jié)點阪的子環(huán)中查找響應(yīng)對數(shù)據(jù)ID的查找請求的另一個響應(yīng)節(jié)點Ny,將響應(yīng)節(jié)點Nz設(shè)置為響應(yīng)節(jié)點Ny,并重復(fù)上述判斷響應(yīng)節(jié)點Nz有無子環(huán)的步驟。本發(fā)明數(shù)據(jù)定位的方法,還包括若num4不大于節(jié)點N所在本環(huán)的層次數(shù),則節(jié)點M發(fā)送查找請求到層次為num4的環(huán),并重復(fù)上述在層次為num4的環(huán)中查找響應(yīng)對數(shù)據(jù)ID的查找請求的響應(yīng)節(jié)點Nz的步驟。本發(fā)明數(shù)據(jù)定位的方法,還包括響應(yīng)節(jié)點Nz無子環(huán),則確定所需要查找的數(shù)據(jù)就存儲在響應(yīng)節(jié)點Nz中,查找完畢。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點1、在每個環(huán)中,只要某一個節(jié)點有子環(huán),則必定有多條路徑連接該節(jié)點的直接前驅(qū)和直接后繼,增加了點連通度和邊連通度,極大的緩解了覆蓋網(wǎng)的分割問題。2、節(jié)點的ID中包含了比例碼、地址碼和隨機碼,使得在地址碼中具有相同域的節(jié)點在同一個環(huán)中。提高了覆蓋網(wǎng)與實際物理網(wǎng)絡(luò)的一致性,減少了通信時延,并且不需要遍歷整個網(wǎng)絡(luò),加快了數(shù)據(jù)定位,降低了對用戶請求的響應(yīng)時間。此外由于還包含了比例碼,使得包含更多子環(huán)的節(jié)點其比例碼較短,能夠存儲更多的數(shù)據(jù),克服了負載不平衡的問題。附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構(gòu)成本發(fā)明的限制。在附圖中圖1為多層環(huán)形P2P網(wǎng)絡(luò)的組成結(jié)構(gòu)模型。圖2為節(jié)點的比例編碼和地址信息編碼示意圖。圖3為每個節(jié)點中直接前驅(qū)列表、直接后繼列表和后繼列表的示意圖。圖4為當(dāng)前節(jié)點本環(huán)上直接前驅(qū)的直接后繼列表和直接后繼的直接前驅(qū)列表示意圖。圖5為當(dāng)前節(jié)點在本環(huán)和子環(huán)上的直接前驅(qū)列表和直接后繼列表示意圖。圖6為當(dāng)前節(jié)點子環(huán)上直接前驅(qū)和直接后繼的直接后繼列表和直接前驅(qū)列表。圖7為本發(fā)明P2P網(wǎng)絡(luò)構(gòu)建方法的流程圖。圖8為本發(fā)明數(shù)據(jù)定位方法的流程圖。具體實施例方式參照圖1,本發(fā)明的多層環(huán)形P2P網(wǎng)絡(luò)是由多個屬于不同層次的環(huán)組成,每個環(huán)都是由多個節(jié)點按其節(jié)點ID的大小順時針方向構(gòu)成。節(jié)點是用于存儲用戶數(shù)據(jù)索引,每個節(jié)點都有一個唯一的ID,ID由比例碼、地址碼和隨機碼三部分組成。隨機碼是對節(jié)點相關(guān)屬性(如IP地址,端口)計算的HASH值,其長度一般為160位,也可以是其它長度。層次是指從環(huán)Ltl到Li所經(jīng)過的環(huán)的數(shù)量。所述Ltl環(huán)是指環(huán)中各個節(jié)點地址碼中沒有相同的地址域,它的層次即為0。Li環(huán)表示該環(huán)中各個節(jié)點的地址域中至少有i個相同的地址域,i小于或等于環(huán)中各個節(jié)點地址碼中相同地址域的最大數(shù)量,i稱為Li環(huán)的層次或者稱為Li環(huán)上的節(jié)點的層次。節(jié)點的層次與節(jié)點所在本環(huán)的層次是一樣的,對于環(huán)上的交接點,交接點的層次為其所在本環(huán)的層次。交接點是指環(huán)與環(huán)之間連接的節(jié)點,也即連接兩個環(huán)的節(jié)點,交接點只連接層次相差為1的兩個環(huán)。交接點的層次為交接點本環(huán)的層次,比交接點子環(huán)的層次小1。如圖1所示,環(huán)Ltl表示該環(huán)中地址碼中共同前綴的數(shù)量為0,環(huán)Ll表示該環(huán)中各個節(jié)點的地址碼的共同前綴數(shù)量為1個…,依次類推。每個環(huán)中的各個節(jié)點按照地址碼信息從A-Z的大小順序順時針排列在環(huán)中。環(huán)與環(huán)之間的交接節(jié)點叫交接點。環(huán)中各個節(jié)點用地址碼中對應(yīng)于層次的域來表示,如環(huán)Ltl中各個節(jié)點用地址碼的第一個域來表示,環(huán)Ll中的各個節(jié)點用地址域的第二個域來表示,…,依次類推。此外,LO環(huán)的環(huán)的層次為0,LO環(huán)上節(jié)點的層次也為0。Ll環(huán)的層次為1,環(huán)中節(jié)點的層次也為1。CN是交接點,它連接了LO環(huán)和Ll環(huán)。子環(huán)是指與交接點連接的兩個環(huán)中,層次較大的那個環(huán),交接點稱該環(huán)為子環(huán)。本環(huán)是指環(huán)中節(jié)點的層次與環(huán)的層次相同的環(huán),環(huán)中的節(jié)點稱該環(huán)為本環(huán)。父環(huán)是相對于子環(huán)上的節(jié)點而言的,與連接點連接的兩個環(huán)中,處于層次較大的那個環(huán)上的節(jié)點稱層次較小的那個環(huán)為父環(huán)。在圖1中,節(jié)點CN稱LO環(huán)為本環(huán),稱Ll環(huán)為CN的子環(huán),Ll環(huán)中的節(jié)點CN.BJ稱LO環(huán)為其父環(huán)。圖2是節(jié)點ID中比例碼和地址碼的示意圖。地址碼是用于表示各個節(jié)點的地址信息,由A-Z表示,且由多個域組成,每個域表示一個地理位置信息,域與域之間用“.,,隔開,用“/”表示結(jié)束。在第一層LO中各個節(jié)點的地址碼中并沒有共同的前綴,且各個節(jié)點按照字母的大小順時針排列。在第二層中的LlO的各個節(jié)點中地址碼有一個共同前綴為CN,Lll有一個共同前綴為US,在第三層中L20有2個共同前綴,分別為HB、CN,故第三層L20中的各個節(jié)點ID中地址碼的表示方式為CN.HB._/,L21中各個節(jié)點ID中地址碼的表示為US.υτ·_/。比例域是通過對各個節(jié)點比例進行香農(nóng)編碼和求反運算而計算出來的。節(jié)點比例是指某一個節(jié)點的所有子環(huán)的所有節(jié)點數(shù)量占該節(jié)點本環(huán)上所有節(jié)點的所有子環(huán)的所有節(jié)點數(shù)量的比例。因為節(jié)點是動態(tài)加入和離開的,所以該值并不是一個確切的值,主要用于負載均衡。計算出了本環(huán)上各個節(jié)點的比例之后,再用香農(nóng)編碼等編碼方式對這些比例進行編碼。最后再用本環(huán)與父環(huán)的交接節(jié)點的比例碼連上前面所計算的編碼就構(gòu)成了本環(huán)上各個節(jié)點的編碼。其表示方式與地址碼相似,對每個環(huán)上所計算的編碼用“.”隔開,分成多個域,并以“/”表示結(jié)束,如圖2所示,對各個節(jié)點之間的編碼是先用香農(nóng)編碼再用反碼的方式進行編碼的,節(jié)點CN和節(jié)點US的比例碼為11和10,因為它們子環(huán)中含有的節(jié)點數(shù)量是相同的,所以比例碼的位數(shù)也相同,而節(jié)點AA和ZZ的編碼為0010和0001,節(jié)點HB的比例碼為“11.1/”,節(jié)點WH的比例碼為“11.1.1/,,。對于不匹配任何比例碼的數(shù)據(jù)ID,則放到比例碼大于數(shù)據(jù)ID且最接近數(shù)據(jù)ID的節(jié)點中,如,對于數(shù)據(jù)0011……,則它將存儲在比例碼為10的節(jié)點中。此外,在系統(tǒng)初始化完成之后,由于節(jié)點加入和退出的概率是均等的,所以可以近似的認為節(jié)點的比例碼在一定的誤差范圍內(nèi)是穩(wěn)定的。如圖3所示,每個節(jié)點都有直接前驅(qū)列表DirectPredList、直接后繼列表DirectSuccList、路由表RoutingTable。直接前驅(qū)列表是指包含了多個直接前驅(qū)節(jié)點的數(shù)據(jù)結(jié)構(gòu),如鏈表、Vector等。直接前驅(qū)節(jié)點是指相對環(huán)中的某一特定節(jié)點Ni而言的,在環(huán)上與節(jié)點Ni鄰近的,且在Ni前面的節(jié)點即該節(jié)點地址碼小于節(jié)點Ni地址碼或該節(jié)點地址碼與節(jié)點Ni地址碼相同但是其隨機碼小于節(jié)點Ni隨機碼。當(dāng)環(huán)上只有一個節(jié)點時,直接前驅(qū)節(jié)點就是節(jié)點Ni本身。在本發(fā)明所提供的系統(tǒng)中,節(jié)點M的直接前驅(qū)列表最多包含三個直接前驅(qū)節(jié)點,分別是Ni本環(huán)上的節(jié)點N",以及在N"子環(huán)上與Nh相鄰的兩個子環(huán)節(jié)點。如果Np1沒有子環(huán),那么直接前驅(qū)列表就只包含Ni在本環(huán)上的節(jié)點隊+當(dāng)然節(jié)點Ni的直接前驅(qū)列表可以包含多于三個的直接前驅(qū)節(jié)點,但是為了不至于有太大的維護開銷,在本發(fā)明所提供的系統(tǒng)只包含了三個直接前驅(qū)節(jié)點。此外,如果隊是交接點,即Ni有子環(huán),那么Ni還具有用于子環(huán)的直接前驅(qū)列表,稱為子環(huán)直接前驅(qū)列表,構(gòu)造規(guī)則同上。每個直接列表中包含了本環(huán)的直接前驅(qū)和子環(huán)的直接前驅(qū),直接前驅(qū)是指其ID最接近于當(dāng)前節(jié)點ID,但是于前節(jié)點ID逆時針方向的節(jié)點。每個直接后繼列表包含了本環(huán)的直接后繼和子環(huán)的直接后繼,直接后繼是指其ID最接近于當(dāng)前節(jié)點ID,但是于當(dāng)前節(jié)點ID順時針方向的節(jié)點。由于每個環(huán)中節(jié)點的數(shù)量比較少,用于本環(huán)和子環(huán)的路由表包含相應(yīng)環(huán)所有節(jié)點的信息。此外,每個環(huán)中(除LO環(huán))外,均包含兩個特殊的節(jié)點,分別是處于交接節(jié)點在子環(huán)兩側(cè)的節(jié)點。它們都包含了交接點在本環(huán)上的直接前驅(qū)節(jié)點和直接后繼節(jié)點。設(shè)當(dāng)前節(jié)點為Ncot,直接前驅(qū)節(jié)點為N。urt,直接后繼節(jié)點為N。urt,NCUr在子環(huán)上的直接前驅(qū)為SN。urt,直接后繼為SNcmtlt5Ncur的直接前驅(qū)節(jié)點Neurt在本環(huán)上的直接后繼列表上的節(jié)點分別為N。m、SNcur+1,SNcur^1;Ncur的直接后繼節(jié)點N。m+1在本環(huán)上的直接前驅(qū)列表上的節(jié)點也分別為Neur、SNcur+1,SNeurt;Ncur用于本環(huán)的路由表上的節(jié)點為NO、……、Nn。直接后繼列表是指包含了多個直接后繼節(jié)點的數(shù)據(jù)結(jié)構(gòu),如鏈表、Vector等。直接后繼節(jié)點是指相對環(huán)中的某一特定節(jié)點隊而言的,在環(huán)上與節(jié)點Ni鄰近的,且在Ni后面的節(jié)點即該節(jié)點地址碼大于節(jié)點Ni地址碼或該節(jié)點地址碼與節(jié)點Ni地址碼相同但是隨機碼大于節(jié)點Ni隨機碼。當(dāng)環(huán)上只有一個節(jié)點時,直接后繼節(jié)點就是節(jié)點Ni本身。在本發(fā)明所提供的系統(tǒng)中,節(jié)點隊的直接后繼列表最多包含三個直接后繼節(jié)點,分別是Ni本環(huán)上的節(jié)點Ni+1,以及在Nw子環(huán)上與Ni+1相鄰的兩個子環(huán)節(jié)點。如果Nw沒有子環(huán),那么直接后繼列表就只包含Ni在本環(huán)上的節(jié)點Ni+1。當(dāng)然節(jié)點Ni的直接后繼列表可以包含多于三個的直接后繼節(jié)點,但是為了不至于有太大的維護開銷,在本發(fā)明所提供的系統(tǒng)只包含了三個直接后繼節(jié)點。此外,如果Ni是交接點,即Ni有子環(huán),那么Ni還具有用于子環(huán)的直接后繼列表,稱為子環(huán)直接后繼列表,構(gòu)造規(guī)則同上。此外,為了緩解覆蓋網(wǎng)分區(qū)的問題,交接點Nj在子環(huán)上的兩個鄰居節(jié)點SNf1和SNj+1,它們還得存儲交接點Ni在其本環(huán)上的兩個鄰居節(jié)點,即Ni在本環(huán)的直接前驅(qū)節(jié)點N"和直接后繼節(jié)點Ni+1,這兩個節(jié)點將分別存儲在SNp1(SNJ+1也一樣)的直接前驅(qū)列表和直接后繼列表中。節(jié)點N"的直接后繼列表中存儲了節(jié)點NpSNh1和SNi+1,節(jié)點Ni+1的直接前驅(qū)節(jié)點中也存儲了節(jié)點NpSNg和SNi+1。所以從節(jié)點Nh到節(jié)點Nw的路徑由原來的Ng-Ni-Nw這一條路徑增加至三條,其中多增加的兩條路徑分別為N^-SNh-Nw和Ng-SNw-Nw,因此只有當(dāng)隊、SNh和SNi+1三個節(jié)點同時失效時,才會產(chǎn)生網(wǎng)絡(luò)分區(qū)。增加邊邊量度不但可以極大的降低交接點子環(huán)和其本環(huán)分區(qū)的概率,而且可以對請求起到分流的作用,減輕交接點的負載。路由表是指包含了其它節(jié)點ID、IP地址以及轉(zhuǎn)發(fā)端口等路由信息的數(shù)據(jù)結(jié)構(gòu)。由于整個系統(tǒng)被分成了很多環(huán),每個環(huán)中節(jié)點數(shù)量比較少,所以環(huán)中的每一節(jié)點都包含了本環(huán)上其它所有節(jié)點的路由信息,因此在環(huán)中,某一個節(jié)點要向另外一個節(jié)點發(fā)送請求的時候,只需要一跳就可以達到目的節(jié)點。如果環(huán)中的某一節(jié)點Ni是交接點,即有子環(huán),則節(jié)點Ni還具有一個包含了子環(huán)節(jié)點路由信息的路由表,稱為子環(huán)路由表。此外,路由表中的路由信息是按照節(jié)點ID中地址碼按照字母表順序排序的。當(dāng)要查找某一節(jié)點Ni的存儲位置時,即確定M的直接前驅(qū)節(jié)點和直接后繼節(jié)點,具體查找規(guī)則如下判定節(jié)點Nj的地址碼是否在路由表的Ni和Nk節(jié)點之間,其中路由表中存儲的節(jié)點的總數(shù)量為m,i=0,···,m-1,k=(j+1)%m。如果Ni<NkMNi<Nj<Nk,或者Ni>Nk&&(Nj>Ni或者Nj<Nk),那么Nj就存儲在Ni與Nk之間,Nj的直接前驅(qū)節(jié)點為Ni,直接后繼節(jié)點為Nk。其中節(jié)點大小比較,都是指按照節(jié)點英文字母表的順序比較節(jié)點地址碼的大小。此外,如果環(huán)中各個節(jié)點的地址碼都是相等的,那么將比較它們的隨機碼,比較規(guī)則同上,只不過節(jié)點大小的比較,是指比較節(jié)點中隨機碼的大小。找到Nj的直接后繼節(jié)點Nk后,Nk將會響應(yīng)節(jié)點的請求。參照圖4,當(dāng)前節(jié)點CN在本環(huán)上的直接前驅(qū)節(jié)點為AR,AR的直接后繼N。u,、SN。urt、SNcur^1分別為CN、CNBJ、CNTJ;CN在本環(huán)上的直接后繼節(jié)點為EG,EG的直接前驅(qū)N。m、SN。urt、SNd分別為CN、CNBJ,CNTJ;CN本環(huán)上的路由表中的節(jié)點為GR、KR…。Ncur本身在本環(huán)上的直接前驅(qū)列表為N-fSN-fSN。^Ncot在子環(huán)上的直接前驅(qū)列表為SN。urt及SNeurt子環(huán)上緊鄰SN。urt的兩個節(jié)點;Ncot本身在本環(huán)上的直接后繼列表為Ncur+1>SNcur+2,SNcur,Ncur在子環(huán)上的直接后繼列表為SNeurt及SNc^1子環(huán)上緊鄰SNc^1的兩個節(jié)點。參照圖5,當(dāng)前節(jié)點CN在本環(huán)上的直接前驅(qū)列表中的節(jié)點為AR,以及AR子環(huán)上緊鄰AR的兩個節(jié)點AR_(AR若沒有子環(huán),則AR_為空),CN在子環(huán)上的直接前驅(qū)列表中的節(jié)點為CNTJ,以及CNTJ子環(huán)上緊鄰CNTJ的兩個節(jié)點CNTJ_(CNTJ若沒有子環(huán),則CNTJ_為空);CN在本環(huán)上的直接后繼列表中的節(jié)點為EG,以及EG子環(huán)上緊鄰EG的兩個節(jié)點EG(EG若沒有子環(huán),則EG_為空);CN在子環(huán)上的直接后繼列表中的節(jié)點為CNBJ,以及CNBJ子環(huán)上緊鄰CNBJ的兩個節(jié)點CNBJ_(CNBJ若沒有子環(huán),則CNBJ_為空)。當(dāng)前節(jié)點Ncm子環(huán)上的直接前驅(qū)節(jié)點SN。urt,直接后繼節(jié)點為SNc^115SNcur^1在本環(huán)上的直接后繼為SN。U,,由于SNeur即為Neur,所以SNeurt的直接后繼列表中只有一個后繼節(jié)點SN·。SNc^1在子環(huán)上的直接后繼節(jié)點同圖4實施例所示,故在此省略。此外SN。urt在直接前驅(qū)列表中還需要保存一個父環(huán)中的節(jié)點N。urt;SNcur+1在本環(huán)上的直接前驅(qū)為SN。m,由于SNcot即為Ncot,所以SNc^1的直接前驅(qū)列表中只有一個前驅(qū)節(jié)點SN。m。SN。urt在子環(huán)上的直接前驅(qū)節(jié)點同圖4實施例所示,故在此省略。此外SNeurt在直接后繼列表中還需要保存一個父環(huán)中的節(jié)點N。urt。參照圖6,當(dāng)前節(jié)點CN,其子環(huán)上直接前驅(qū)為CNTJ,直接后繼為CNBJ。CNTJ在本環(huán)上的直接后繼列表中就一個后繼節(jié)點為CN,此外還保存了當(dāng)前節(jié)點的后繼節(jié)點EG;CNBJ在本環(huán)上的直接前驅(qū)列表中也就一個前驅(qū)節(jié)點為CN,此外還保存了當(dāng)前節(jié)點的前驅(qū)節(jié)點AR。如圖7所示,本發(fā)明環(huán)形網(wǎng)絡(luò)的構(gòu)建方法,包括以下步驟(1)新節(jié)點η找到一個環(huán)形Ρ2Ρ網(wǎng)絡(luò)(Chord)中現(xiàn)有節(jié)點N,N含有地址IP映射表,得到該新節(jié)點η的ID中的地址信息。(2)計算η和N的地址信息中相同域的數(shù)量num。(3)判斷num是否大于N節(jié)點所在本環(huán)的層次數(shù),如果是,則轉(zhuǎn)到步驟0),否則轉(zhuǎn)到步驟(5)。(4)設(shè)置num3等于num減去N節(jié)點所在本環(huán)的層次數(shù)。(5)N將向?qū)哟螢閚um的環(huán)發(fā)出新節(jié)點加入請求。(6)在層次為num的環(huán)中查找一后繼結(jié)點Nx,其響應(yīng)新節(jié)點η的加入請求。(7)計算后繼結(jié)點Nx和η的共同域的數(shù)量num2,再設(shè)置num3等于num2減去Nx所在本環(huán)的層次。(8)判斷num3是否為0,如果num3等于0,則轉(zhuǎn)到步驟(9),否則轉(zhuǎn)到步驟(10)。(9)新節(jié)點η加入后繼結(jié)點Nx所在本環(huán)中,后繼結(jié)點Nx更新其直接前驅(qū)列表,并把節(jié)點η增加到其路由表中。此外節(jié)點η將設(shè)置其直接前驅(qū)列表和直接后繼列表以及路由表,并設(shè)置節(jié)點η所在本環(huán)的層次等于后繼節(jié)點Nx所在本環(huán)的層次。至此新節(jié)點的加入請求完成。(10)判斷后繼結(jié)點Nx有無子環(huán),如果無,則轉(zhuǎn)到步驟11,否則轉(zhuǎn)到步驟(12)。(11)新節(jié)點η將作為后繼結(jié)點Nx子環(huán)的第一個節(jié)點加入到后繼結(jié)點Nx的子環(huán)中。Nx更新其子環(huán)上的直接前驅(qū)列表,并把節(jié)點η增加到其子環(huán)路由表中。此外節(jié)點η將設(shè)置其直接前驅(qū)列表和直接后繼列表以及路由表,并設(shè)置節(jié)點η所在本環(huán)的層層次等于后繼節(jié)點Nx所在本環(huán)的層次加一。至此新節(jié)點的加入請求完成。(12)設(shè)置num為后繼節(jié)點Nx子環(huán)所在的層次。并向子環(huán)中的各個節(jié)點發(fā)送新節(jié)點加入的請求,再轉(zhuǎn)到步驟(6)。如圖8所示,數(shù)據(jù)定位的方法,包括步驟(1)需要查找數(shù)據(jù)的節(jié)點M計算出所要查找數(shù)據(jù)的ID。(2)用數(shù)據(jù)ID與該節(jié)點自身ID中的比例碼進行比較,相同比例域的數(shù)量設(shè)為num4o(3)判斷num4是否大于M節(jié)點所在本環(huán)的層次數(shù),如果是,則轉(zhuǎn)到步驟⑷,否則轉(zhuǎn)到步驟(5)。(4)設(shè)置num4等于M節(jié)點所在本環(huán)的層次數(shù)。(5)節(jié)點M發(fā)送查找請求到層次為num4的環(huán)。(6)在層次為num4的環(huán)中查找響應(yīng)對數(shù)據(jù)ID的查找請求的響應(yīng)節(jié)點Nz(7)判斷阪有無子環(huán),如果有,則轉(zhuǎn)到步驟8,否則轉(zhuǎn)到步驟(10)。(8)響應(yīng)節(jié)點阪發(fā)送查找請求到Nz所在的子環(huán)中繼續(xù)查找。(9)在阪的子環(huán)中查找響應(yīng)對數(shù)據(jù)ID的查找請求的另一個響應(yīng)節(jié)點Ny。將Nz設(shè)置為Ny。再轉(zhuǎn)到步驟(7)。(10)確定所需要查找的數(shù)據(jù)就存儲在響應(yīng)節(jié)點Nz中,查找完畢。以上所述僅是本發(fā)明的具體實施方式,應(yīng)當(dāng)指出,對于本
技術(shù)領(lǐng)域
的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干的改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。權(quán)利要求1.一種P2P網(wǎng)絡(luò)的構(gòu)建方法,其特征在于,包括以下步驟新節(jié)點η找到一個環(huán)形Ρ2Ρ網(wǎng)絡(luò)中的現(xiàn)有節(jié)點N,得到新節(jié)點η的ID中的地址信息;計算新節(jié)點η和現(xiàn)有節(jié)點N的地址信息中相同域的數(shù)量num;判斷num是否大于N節(jié)點所在本環(huán)的層次數(shù),如果不是,則節(jié)點N向?qū)哟螢閚um的環(huán)發(fā)出新節(jié)點加入請求;在層次為num的環(huán)中查找一后繼節(jié)點Nx,其響應(yīng)新節(jié)點η的加入請求;計算后繼節(jié)點Nx和新節(jié)點η相同域的數(shù)量num2,再設(shè)置num3等于num2減去后繼節(jié)點Nx所在本環(huán)的層次;判斷num3是否為0,如果不為0,則判斷后繼節(jié)點Nx有無子環(huán);如果無子環(huán),則新節(jié)點η將作為后繼節(jié)點Nx子環(huán)的第一個節(jié)點加入到后繼節(jié)點Nx的子環(huán)中,設(shè)置Nx子環(huán)的層次數(shù)為num加1。2.根據(jù)權(quán)利要求1所述的P2P網(wǎng)絡(luò)的構(gòu)建方法,其特征在于,還包括若num3為0,則新節(jié)點η加入后繼節(jié)點Nx所在本環(huán)中。3.根據(jù)權(quán)利要求1所述的Ρ2Ρ網(wǎng)絡(luò)的構(gòu)建方法,其特征在于,還包括若后繼節(jié)點Nx有子環(huán),則設(shè)置rmm為后繼節(jié)點Nx子環(huán)的層次,并向子環(huán)中的各個節(jié)點發(fā)送新節(jié)點加入請求,再重復(fù)上述在層次為num的環(huán)中查找一后繼節(jié)點Nx的步驟。4.根據(jù)權(quán)利要求1所述的P2P網(wǎng)絡(luò)的構(gòu)建方法,其特征在于,還包括若num大于N節(jié)點所在本環(huán)的層次數(shù),則設(shè)置num3等于num減去N節(jié)點所在本環(huán)的層次數(shù),則重復(fù)上述判斷num3是否為0的步驟。5.根據(jù)權(quán)利要求1所述的P2P網(wǎng)絡(luò)的構(gòu)建方法,其特征在于,現(xiàn)有節(jié)點N中含有地址-IP映射表。6.根據(jù)權(quán)利要求1所述的P2P網(wǎng)絡(luò)的構(gòu)建方法,其特征在于,所述新節(jié)點η加入后繼節(jié)點Nx所在本環(huán)中的步驟包括后繼節(jié)點Nx的直接前驅(qū)節(jié)點更新其后繼節(jié)點列表,并把節(jié)點η增加到其路由表中;后繼節(jié)點Nx更新其直接前驅(qū)列表,并把節(jié)點η增加到其路由表中;節(jié)點η設(shè)置其直接前驅(qū)列表、直接后繼列表以及路由表,并設(shè)置節(jié)點η所在本環(huán)的層次等于后繼節(jié)點Nx所在本環(huán)的層次。7.根據(jù)權(quán)利要求1所述的Ρ2Ρ網(wǎng)絡(luò)的構(gòu)建方法,其特征在于,所述新節(jié)點η將作為后繼節(jié)點Nx子環(huán)的第一個節(jié)點加入到后繼節(jié)點Nx的子環(huán)中的步驟包括后繼節(jié)點Nx更新其子環(huán)上的直接前驅(qū)列表,并把節(jié)點η增加到其子環(huán)路由表中,節(jié)點η設(shè)置其直接前驅(qū)列表和直接后繼列表以及路由表,并設(shè)置節(jié)點η所在本環(huán)的層次等于后繼節(jié)點Nx所在本環(huán)的層次加一。8.一種數(shù)據(jù)定位的方法,其特征在于,包括步驟需要查找數(shù)據(jù)的節(jié)點M計算出所要查找數(shù)據(jù)的ID;用數(shù)據(jù)ID與節(jié)點M自身ID中的比例碼進行比較,相同比例域的數(shù)量設(shè)為num4;判斷num4是否大于節(jié)點M所在本環(huán)的層次數(shù),如果是,則設(shè)置num4等于節(jié)點M所在本環(huán)的層次數(shù);在層次為num4的環(huán)中查找響應(yīng)對數(shù)據(jù)ID的查找請求的響應(yīng)節(jié)點Nz;判斷響應(yīng)節(jié)點Nz有無子環(huán),如果有,則響應(yīng)節(jié)點Nz發(fā)送查找請求到Nz所在的子環(huán)中繼續(xù)查找;在響應(yīng)節(jié)點Nz的子環(huán)中查找響應(yīng)對數(shù)據(jù)ID的查找請求的另一個響應(yīng)節(jié)點Ny,將響應(yīng)節(jié)點Nz設(shè)置為響應(yīng)節(jié)點Ny,并重復(fù)上述判斷響應(yīng)節(jié)點Nz有無子環(huán)的步驟。9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)定位的方法,其特征在于,還包括若num4不大于節(jié)點M所在本環(huán)的層次數(shù),則節(jié)點M發(fā)送查找請求到層次為num4的環(huán),并重復(fù)上述在層次為num4的環(huán)中查找響應(yīng)對數(shù)據(jù)ID的查找請求的響應(yīng)節(jié)點Nz的步驟。10.根據(jù)權(quán)利要求8所述的數(shù)據(jù)定位的方法,其特征在于,還包括響應(yīng)節(jié)點Nz無子環(huán),則確定所需要查找的數(shù)據(jù)就存儲在響應(yīng)節(jié)點Nz中,查找完畢。全文摘要本發(fā)明公開了一種環(huán)形P2P網(wǎng)絡(luò)的構(gòu)建方法,在每個環(huán)中,只要某一個節(jié)點有子環(huán),則必定有多條路徑連接該節(jié)點的直接前驅(qū)和直接后繼,增加了點連通度和邊連通度,極大的緩解了覆蓋網(wǎng)的分割問題,此外,節(jié)點的ID中包含了比例碼、地址碼和隨機碼,使得在地址碼中具有相同域的節(jié)點在同一個環(huán)中。提高了覆蓋網(wǎng)與實際物理網(wǎng)絡(luò)的一致性,減少了通信時延,并且不需要遍歷整個網(wǎng)絡(luò),加快了數(shù)據(jù)定位,降低了對用戶請求的響應(yīng)時間。此外由于還包含了比例碼,使得包含更多子環(huán)的節(jié)點其比例碼較短,能夠存儲更多的數(shù)據(jù),極大的緩解了由于路由局部性所帶來的負載不平衡的問題。文檔編號H04L29/08GK102333116SQ20111028007公開日2012年1月25日申請日期2011年9月20日優(yōu)先權(quán)日2011年9月20日發(fā)明者盧萍,周功業(yè),賴明輝,陳進才,黃楊鋒申請人:華中科技大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1