專利名稱:一種p2p系統(tǒng)中查找種子的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及P2P系統(tǒng)中,對(duì)種子進(jìn)行選擇的方法及系統(tǒng)。
背景技術(shù):
目前,互聯(lián)網(wǎng)上的服務(wù)普遍采用客戶端/服務(wù)器(Client/Server,C/S)結(jié)構(gòu),如圖1所示。在這種模式下,每個(gè)客戶端都與服務(wù)器直接通訊和獲取數(shù)據(jù)。當(dāng)客戶端數(shù)量很大時(shí),需要服務(wù)器具備很高的數(shù)據(jù)處理能力、運(yùn)算能力以及非常大的網(wǎng)絡(luò)帶寬,導(dǎo)致服務(wù)器成本非常昂貴。
為了解決這個(gè)問(wèn)題,出現(xiàn)了一種對(duì)等(peer to peer,P2P)網(wǎng)絡(luò)結(jié)構(gòu),如圖2所示。一方面,允許客戶端與服務(wù)器通訊和獲取數(shù)據(jù),另一方面,也允許客戶端之間直接通信和獲取數(shù)據(jù)。在P2P系統(tǒng)中,能為其他客戶端充當(dāng)服務(wù)器角色和提供數(shù)據(jù)的客戶端稱為種子。現(xiàn)有技術(shù)中,種子信息存儲(chǔ)在服務(wù)器的內(nèi)存數(shù)組中,服務(wù)器在查找客戶端請(qǐng)求的種子信息時(shí),從內(nèi)存數(shù)組記錄的所有客戶端信息中查找符合條件的種子,種子查找范圍較大,查找效率較低,從而影響整個(gè)P2P系統(tǒng)的效率。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種P2P系統(tǒng)中查找種子的方法,旨在解決現(xiàn)有技術(shù)中存在的服務(wù)器在查找客戶端請(qǐng)求的種子信息時(shí),從內(nèi)存數(shù)組記錄的所有客戶端信息中查找符合條件的種子,種子查找范圍較大,查找效率較低,從而影響整個(gè)P2P系統(tǒng)的效率的問(wèn)題。
本發(fā)明的另一目的在于提供一種P2P系統(tǒng)中查找種子的系統(tǒng)。
本發(fā)明是這樣實(shí)現(xiàn)的,一種P2P系統(tǒng)中查找種子的方法,所述方法包括下述步驟建立在線節(jié)點(diǎn)列表,所述在線節(jié)點(diǎn)列表中記錄有在線客戶端的唯一標(biāo)識(shí)碼,所述唯一標(biāo)識(shí)碼為服務(wù)器向客戶端分配的唯一標(biāo)識(shí);保存客戶端的用戶信息數(shù)組,用戶信息數(shù)組中保存有登錄到P2P系統(tǒng)的客戶端的網(wǎng)絡(luò)信息,客戶端的唯一標(biāo)識(shí)碼對(duì)應(yīng)所述客戶端的用戶信息數(shù)組的下標(biāo),用戶信息數(shù)組中的每個(gè)數(shù)組元素包含一個(gè)指針,指向所述在線節(jié)點(diǎn)列表;當(dāng)收到客戶端獲取種子信息的請(qǐng)求時(shí),查找所述在線節(jié)點(diǎn)列表,根據(jù)在線客戶端的唯一標(biāo)識(shí)碼查找對(duì)應(yīng)的用戶信息數(shù)組的數(shù)組元素,選擇與客戶端請(qǐng)求的種子信息相匹配的在線客戶端的網(wǎng)絡(luò)信息,返回給所述請(qǐng)求種子信息的客戶端。
所述方法進(jìn)一步包括當(dāng)檢測(cè)到客戶端離線或客戶端主動(dòng)發(fā)出登出請(qǐng)求時(shí),將客戶端的唯一標(biāo)識(shí)碼從在線節(jié)點(diǎn)列表中刪除。
所述方法進(jìn)一步包括接收客戶端定時(shí)上報(bào)的數(shù)據(jù)信息,根據(jù)客戶端的唯一標(biāo)識(shí)碼,在用戶信息數(shù)組中訪問(wèn)到所述客戶端的數(shù)組元素,將客戶端上報(bào)的網(wǎng)絡(luò)信息更新到對(duì)應(yīng)的數(shù)組元素中。
所述在線節(jié)點(diǎn)列表有多個(gè),每個(gè)不同的在線節(jié)點(diǎn)列表記錄具有相同網(wǎng)絡(luò)信息的在線客戶端的唯一標(biāo)識(shí)碼。
所述在線節(jié)點(diǎn)列表包含一個(gè)雙向指針。
所述在線節(jié)點(diǎn)列表包含一個(gè)游標(biāo)指針,所述游標(biāo)指針指向在線節(jié)點(diǎn)列表最后一次被訪問(wèn)過(guò)的節(jié)點(diǎn)位置;當(dāng)收到客戶端獲取種子信息的請(qǐng)求時(shí),從所述在線節(jié)點(diǎn)列表中的當(dāng)前游標(biāo)指針開(kāi)始向后查找客戶端請(qǐng)求的種子的信息。
所述方法進(jìn)一步包括
建立空閑節(jié)點(diǎn)列表,記錄空閑節(jié)點(diǎn);當(dāng)客戶端登錄時(shí),從所述空閑節(jié)點(diǎn)列表中獲取一個(gè)空閑節(jié)點(diǎn),將客戶端的網(wǎng)絡(luò)信息保存到用戶信息數(shù)組的下標(biāo)與該客戶端的唯一標(biāo)識(shí)碼對(duì)應(yīng)的數(shù)組元素中,將數(shù)組元素中包含的指針指向該客戶端,并將該客戶端加入到所述在線節(jié)點(diǎn)列表;當(dāng)檢測(cè)到客戶端離線或客戶端主動(dòng)發(fā)出登出系統(tǒng)請(qǐng)求時(shí),根據(jù)客戶端的唯一標(biāo)識(shí)碼查找用戶信息數(shù)組中對(duì)應(yīng)的數(shù)組元素,將數(shù)組元素的指針指向的節(jié)點(diǎn)移動(dòng)到所述空閑節(jié)點(diǎn)列表。
一種P2P系統(tǒng)中查找種子的系統(tǒng),所述系統(tǒng)包括在線節(jié)點(diǎn)數(shù)據(jù)庫(kù),用于記錄在線客戶端的唯一標(biāo)識(shí)碼,所述唯一標(biāo)識(shí)碼為服務(wù)器向客戶端分配的唯一標(biāo)識(shí);用戶信息數(shù)據(jù)庫(kù),用于保存客戶端的用戶信息數(shù)組,用戶信息數(shù)組中保存有登錄到P2P系統(tǒng)的客戶端的網(wǎng)絡(luò)信息,客戶端的唯一標(biāo)識(shí)碼對(duì)應(yīng)所述客戶端的用戶信息數(shù)組的下標(biāo),用戶信息數(shù)組中的每個(gè)數(shù)組元素包含一個(gè)指針,指向所述在線節(jié)點(diǎn)數(shù)據(jù)庫(kù);以及種子信息查找模塊,用于在收到客戶端獲取種子信息的請(qǐng)求時(shí),查找在線節(jié)點(diǎn)數(shù)據(jù)庫(kù),根據(jù)在線客戶端的唯一標(biāo)識(shí)碼查找用戶信息數(shù)據(jù)庫(kù)中對(duì)應(yīng)的用戶信息數(shù)組的數(shù)組元素,選擇與客戶端請(qǐng)求的種子信息相匹配的在線客戶端的網(wǎng)絡(luò)信息,返回給所述請(qǐng)求種子信息的客戶端。
所述系統(tǒng)進(jìn)一步包括節(jié)點(diǎn)刪除模塊,用于在檢測(cè)到客戶端離線或客戶端主動(dòng)發(fā)出登出請(qǐng)求時(shí),將客戶端的唯一標(biāo)識(shí)碼從在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)中刪除。
所述系統(tǒng)進(jìn)一步包括種子信息更新模塊,用于接收客戶端定時(shí)上報(bào)的數(shù)據(jù)信息,根據(jù)客戶端的唯一標(biāo)識(shí)碼,在用戶信息數(shù)組中訪問(wèn)到所述客戶端的數(shù)組元素,將客戶端上報(bào)的網(wǎng)絡(luò)信息更新到對(duì)應(yīng)的數(shù)組元素中。
所述在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)有多個(gè),每個(gè)不同的在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)記錄具有相同網(wǎng)絡(luò)信息的在線客戶端的唯一標(biāo)識(shí)碼。
所述在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)包含一個(gè)雙向指針。
所述在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)包含一個(gè)游標(biāo)指針,所述游標(biāo)指針指向在線節(jié)點(diǎn)列表最后一次被訪問(wèn)過(guò)的節(jié)點(diǎn)位置。
所述系統(tǒng)進(jìn)一步包括空閑節(jié)點(diǎn)數(shù)據(jù)庫(kù),用于記錄空閑節(jié)點(diǎn);節(jié)點(diǎn)分配模塊,用于在客戶端登錄時(shí),從空閑節(jié)點(diǎn)數(shù)據(jù)庫(kù)中獲取一個(gè)空閑節(jié)點(diǎn),將客戶端的網(wǎng)絡(luò)信息保存到用戶信息數(shù)據(jù)中用戶信息數(shù)組的下標(biāo)與該客戶端的唯一標(biāo)識(shí)碼對(duì)應(yīng)的數(shù)組元素中,將數(shù)組元素中包含的指針指向該客戶端,并將該客戶端加入到在線節(jié)點(diǎn)數(shù)據(jù)庫(kù);以及節(jié)點(diǎn)回收模塊,用于在檢測(cè)到客戶端離線或客戶端主動(dòng)發(fā)出登出系統(tǒng)請(qǐng)求時(shí),根據(jù)客戶端的唯一標(biāo)識(shí)碼查找用戶信息數(shù)據(jù)庫(kù)中用戶信息數(shù)組中對(duì)應(yīng)的數(shù)組元素,將數(shù)組元素的指針指向的節(jié)點(diǎn)移動(dòng)到所述空閑節(jié)點(diǎn)數(shù)據(jù)庫(kù)。
本發(fā)明在查找種子時(shí),只查找在線的客戶端,可以減小種子的查找范圍,提高種子的查找效率。同時(shí),可以降低服務(wù)器的內(nèi)存消耗、帶寬和運(yùn)算能力要求。
圖1是現(xiàn)有技術(shù)中典型的C/S網(wǎng)絡(luò)結(jié)構(gòu)示意圖;圖2是現(xiàn)有技術(shù)中P2P系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)示意圖;圖3是本發(fā)明提供的實(shí)現(xiàn)種子查找的原理圖;圖4是本發(fā)明提供的實(shí)現(xiàn)種子查找的系統(tǒng)結(jié)構(gòu)圖。
具體實(shí)施例方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
在本發(fā)明中,服務(wù)器在查找客戶端請(qǐng)求的種子信息時(shí),只查找在線的客戶端,減小種子的查找范圍,提高種子的查找效率。
圖3示出了本發(fā)明的實(shí)現(xiàn)原理,在本發(fā)明中,服務(wù)器為每個(gè)客戶端分配一個(gè)UIN(Unique Identification Number,唯一標(biāo)識(shí)碼)。UIN是唯一的,對(duì)應(yīng)用戶信息數(shù)組的下標(biāo)。用戶信息數(shù)組中保存有登錄到P2P系統(tǒng)的每個(gè)客戶端的網(wǎng)際協(xié)議(Internet Protocol,IP)地址、網(wǎng)絡(luò)帶寬、防火墻類型以及地理位置分布等網(wǎng)絡(luò)信息。用戶信息數(shù)組的下標(biāo)用來(lái)標(biāo)識(shí)數(shù)組中每個(gè)數(shù)組元素的索引。
每個(gè)客戶端被看作是一個(gè)節(jié)點(diǎn)。在本發(fā)明中,通過(guò)建立在線節(jié)點(diǎn)列表保存在線客戶端的UIN。每個(gè)用戶信息數(shù)組的數(shù)組元素包含一個(gè)指針,該指針指向在線節(jié)點(diǎn)列表。在通信過(guò)程中,客戶端定時(shí)向服務(wù)器上報(bào)自身?yè)碛械臄?shù)據(jù)信息,例如數(shù)據(jù)的分片編號(hào)、下載速度等。服務(wù)器根據(jù)客戶端的UIN,在用戶信息數(shù)組中訪問(wèn)到該客戶端的數(shù)組元素,將客戶端上報(bào)的最新信息更新到相應(yīng)的數(shù)組元素中。
當(dāng)檢測(cè)到客戶端離線或客戶端主動(dòng)發(fā)出登出請(qǐng)求時(shí),服務(wù)器將客戶端從在線節(jié)點(diǎn)列表中刪除。
當(dāng)服務(wù)器接收到客戶端獲取種子信息的請(qǐng)求時(shí),首先查找在線節(jié)點(diǎn)列表,然后根據(jù)在線節(jié)點(diǎn)列表中在線客戶端的UIN查找用戶信息數(shù)組,獲取與UIN對(duì)應(yīng)的數(shù)組元素,將與客戶端請(qǐng)求的種子的防火墻類型、所下載的文件、地理位置分布等信息相匹配的種子的IP地址、防火墻類型以及帶寬等信息返回給客戶端,由客戶端與這些種子之間進(jìn)行通信和數(shù)據(jù)交互。
由上述可知,本發(fā)明在查找客戶端請(qǐng)求的種子信息時(shí),服務(wù)器可以通過(guò)在線節(jié)點(diǎn)列表只查找在線節(jié)點(diǎn)的信息,從而避免對(duì)用戶信息數(shù)組中所有節(jié)點(diǎn)的信息進(jìn)行查找,大大降低種子的查找范圍,提高種子的查找效率。
作為本發(fā)明的一個(gè)優(yōu)選實(shí)施例,為了進(jìn)一步提高種子的查找效率,本發(fā)明根據(jù)客戶端的網(wǎng)絡(luò)信息對(duì)在線節(jié)點(diǎn)列表進(jìn)行細(xì)分,將具有相同網(wǎng)絡(luò)信息的客戶端,例如交互相同文件、網(wǎng)絡(luò)類型相同、處于相同防火墻類型等的客戶端的UIN保存到同一個(gè)在線節(jié)點(diǎn)列表中。當(dāng)服務(wù)器查找種子時(shí),就可以到相應(yīng)的在線節(jié)點(diǎn)列表中獲取種子的信息,進(jìn)一步縮小種子的查找范圍,進(jìn)而進(jìn)一步提高種子的查找效率。
作為本發(fā)明的一個(gè)實(shí)施例,在線節(jié)點(diǎn)列表包含一個(gè)雙向指針,節(jié)點(diǎn)之間通過(guò)指針可以實(shí)現(xiàn)向前、向后的靈活訪問(wèn)。通過(guò)雙向指針,可以增加節(jié)點(diǎn)訪問(wèn)的靈活性,進(jìn)一步提高種子的查找效率。
在本發(fā)明的另一實(shí)施例中,為了避免部分客戶端反復(fù)被查找作為種子,導(dǎo)致該客戶端的通信負(fù)擔(dān)加大,在線節(jié)點(diǎn)列表中還包含一個(gè)游標(biāo)指針,指向在線節(jié)點(diǎn)列表最后一次被訪問(wèn)過(guò)的節(jié)點(diǎn)位置。當(dāng)服務(wù)器接收到客戶端獲取種子信息的請(qǐng)求時(shí),從在線節(jié)點(diǎn)列表中的當(dāng)前游標(biāo)指針開(kāi)始向后查找,從而使得在線客戶端具有均等的機(jī)會(huì)被選中作為種子,避免種子集中在部分客戶端上,減輕客戶端的通信負(fù)擔(dān)。
為了提高提高節(jié)點(diǎn)的回收和分配能力,在本發(fā)明的一個(gè)實(shí)施例中,服務(wù)器維護(hù)一個(gè)空閑節(jié)點(diǎn)列表,該列表保存著大量空閑節(jié)點(diǎn),空閑節(jié)點(diǎn)中無(wú)可用信息。當(dāng)客戶端登錄時(shí),服務(wù)器先從空閑列表中獲取一個(gè)空閑節(jié)點(diǎn)。服務(wù)器將客戶端的網(wǎng)絡(luò)信息,例如客戶端IP地址、防護(hù)墻類型、客戶端帶寬以及地理位置分布等網(wǎng)絡(luò)信息保存到用戶信息數(shù)組中下標(biāo)為該客戶端UIN的數(shù)組元素中。然后將用戶信息數(shù)組中的下標(biāo)為UIN的數(shù)組元素中包含的指針指向該客戶端,并把該客戶端加入到在線節(jié)點(diǎn)列表。
當(dāng)檢測(cè)到客戶端離線或客戶端主動(dòng)發(fā)出登出系統(tǒng)請(qǐng)求時(shí),服務(wù)器根據(jù)客戶端的UIN找到用戶信息數(shù)組中對(duì)應(yīng)的數(shù)組元素,然后將數(shù)組元素的指針指向的節(jié)點(diǎn)移動(dòng)到空閑節(jié)點(diǎn)列表中,完成客戶端登出系統(tǒng)的過(guò)程。
圖4示出了本發(fā)明提供的實(shí)現(xiàn)種子查找的系統(tǒng)的結(jié)構(gòu),用戶信息數(shù)據(jù)庫(kù)401保存客戶端的用戶信息數(shù)組,用戶信息數(shù)組中保存有登錄到P2P系統(tǒng)的每個(gè)客戶端的IP地址、網(wǎng)絡(luò)帶寬、防火墻類型以及地理位置分布等網(wǎng)絡(luò)信息,用戶信息數(shù)組的下標(biāo)用來(lái)標(biāo)識(shí)數(shù)組中每個(gè)數(shù)組元素的索引。
每個(gè)用戶信息數(shù)組的數(shù)組元素包含一個(gè)指針,該指針指向在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)402。每個(gè)客戶端被看作是一個(gè)節(jié)點(diǎn),在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)402中保存有節(jié)點(diǎn)的UIN。當(dāng)檢測(cè)到客戶端離線或客戶端主動(dòng)向服務(wù)器發(fā)出登出請(qǐng)求時(shí),節(jié)點(diǎn)刪除模塊403將客戶端的UIN從在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)402中刪除。
通信過(guò)程中,客戶端定時(shí)向服務(wù)器上報(bào)自身?yè)碛械臄?shù)據(jù)信息,例如數(shù)據(jù)的分片編號(hào)。種子信息更新模塊404根據(jù)客戶端的UIN,在用戶信息數(shù)據(jù)庫(kù)401的用戶信息數(shù)組中訪問(wèn)到該客戶端的數(shù)組元素,把用戶上報(bào)的最新信息更新到該數(shù)組元素中。
當(dāng)接收到客戶端獲取種子信息的請(qǐng)求時(shí),種子查找模塊405首先查找在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)402,然后根據(jù)在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)402中在線節(jié)點(diǎn)的UIN查找用戶信息數(shù)據(jù)庫(kù)401,獲取與UIN對(duì)應(yīng)的數(shù)組元素,將與客戶端請(qǐng)求的種子的防火墻類型、所下載的文件、地理位置分布等信息相匹配的種子的IP地址、防火墻類型以及帶寬等信息返回給客戶端。
作為本發(fā)明的一個(gè)優(yōu)選實(shí)施例,系統(tǒng)中包括多個(gè)在線節(jié)點(diǎn)數(shù)據(jù)庫(kù),每個(gè)在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)用來(lái)保存具有相同網(wǎng)絡(luò)信息的客戶端的UIN,例如交互相同文件的客戶端、網(wǎng)絡(luò)類型相同、處于相同防火墻類型的客戶端等。
作為本發(fā)明的一個(gè)實(shí)施例,在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)402具有一個(gè)雙向指針,節(jié)點(diǎn)之間通過(guò)指針向前、向后靈活訪問(wèn)。
同時(shí),在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)402還有一個(gè)游標(biāo)指針,指向線節(jié)點(diǎn)數(shù)據(jù)庫(kù)402最后一次被訪問(wèn)過(guò)的節(jié)點(diǎn)位置。當(dāng)服務(wù)器接收到客戶端獲取種子信息的請(qǐng)求時(shí),種子查找模塊405從在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)402的當(dāng)前游標(biāo)指針開(kāi)始向后查找,從而使得在線客戶端具有均等的機(jī)會(huì)被選中作為種子,避免種子集中在部分客戶端上,減輕客戶端的通信負(fù)擔(dān)。
在本發(fā)明的另一實(shí)施例中,系統(tǒng)進(jìn)一步包括空閑節(jié)點(diǎn)數(shù)據(jù)庫(kù)406,保存空閑節(jié)點(diǎn),空閑節(jié)點(diǎn)中無(wú)可用信息。
當(dāng)客戶端登錄系統(tǒng)時(shí),節(jié)點(diǎn)分配模塊407先從空閑節(jié)點(diǎn)數(shù)據(jù)庫(kù)406中獲取一個(gè)空閑節(jié)點(diǎn)。節(jié)點(diǎn)分配模塊407將客戶端的網(wǎng)絡(luò)信息,例如客戶端IP地址、防護(hù)墻類型、客戶端帶寬以及地理位置分布等保存到用戶信息數(shù)據(jù)庫(kù)401中,將用戶信息數(shù)組中的下標(biāo)和客戶端UIN中的數(shù)組元素的指針指向該客戶端,并把該客戶端加入到在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)402中。
當(dāng)檢測(cè)到客戶端離線或客戶端主動(dòng)向服務(wù)器發(fā)出登出系統(tǒng)請(qǐng)求時(shí),節(jié)點(diǎn)回收模塊408根據(jù)客戶端的UIN查找用戶信息數(shù)據(jù)庫(kù)401中用戶信息數(shù)組對(duì)應(yīng)的數(shù)組元素,然后將數(shù)組元素中指針指向的節(jié)點(diǎn)移動(dòng)到空閑節(jié)點(diǎn)數(shù)據(jù)庫(kù)406,完成客戶端登出系統(tǒng)的過(guò)程。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種P2P系統(tǒng)中查找種子的方法,其特征在于,所述方法包括下述步驟建立在線節(jié)點(diǎn)列表,所述在線節(jié)點(diǎn)列表中記錄有在線客戶端的唯一標(biāo)識(shí)碼,所述唯一標(biāo)識(shí)碼為服務(wù)器向客戶端分配的唯一標(biāo)識(shí);保存客戶端的用戶信息數(shù)組,用戶信息數(shù)組中保存有登錄到P2P系統(tǒng)的客戶端的網(wǎng)絡(luò)信息,客戶端的唯一標(biāo)識(shí)碼對(duì)應(yīng)所述客戶端的用戶信息數(shù)組的下標(biāo),用戶信息數(shù)組中的每個(gè)數(shù)組元素包含一個(gè)指針,指向所述在線節(jié)點(diǎn)列表;當(dāng)收到客戶端獲取種子信息的請(qǐng)求時(shí),查找所述在線節(jié)點(diǎn)列表,根據(jù)在線客戶端的唯一標(biāo)識(shí)碼查找對(duì)應(yīng)的用戶信息數(shù)組的數(shù)組元素,選擇與客戶端請(qǐng)求的種子信息相匹配的在線客戶端的網(wǎng)絡(luò)信息,返回給所述請(qǐng)求種子信息的客戶端。
2.如權(quán)利要求1所述的方法,其特征在于,所述方法進(jìn)一步包括當(dāng)檢測(cè)到客戶端離線或客戶端主動(dòng)發(fā)出登出請(qǐng)求時(shí),將客戶端的唯一標(biāo)識(shí)碼從在線節(jié)點(diǎn)列表中刪除。
3.如權(quán)利要求1所述的方法,其特征在于,所述方法進(jìn)一步包括接收客戶端定時(shí)上報(bào)的數(shù)據(jù)信息,根據(jù)客戶端的唯一標(biāo)識(shí)碼,在用戶信息數(shù)組中訪問(wèn)到所述客戶端的數(shù)組元素,將客戶端上報(bào)的網(wǎng)絡(luò)信息更新到對(duì)應(yīng)的數(shù)組元素中。
4.如權(quán)利要求1所述的方法,其特征在于,所述在線節(jié)點(diǎn)列表有多個(gè),每個(gè)不同的在線節(jié)點(diǎn)列表記錄具有相同網(wǎng)絡(luò)信息的在線客戶端的唯一標(biāo)識(shí)碼。
5.如權(quán)利要求1或4所述的方法,其特征在于,所述在線節(jié)點(diǎn)列表包含一個(gè)雙向指針。
6.如權(quán)利要求1或4所述的方法,其特征在于,所述在線節(jié)點(diǎn)列表包含一個(gè)游標(biāo)指針,所述游標(biāo)指針指向在線節(jié)點(diǎn)列表最后一次被訪問(wèn)過(guò)的節(jié)點(diǎn)位置;當(dāng)收到客戶端獲取種子信息的請(qǐng)求時(shí),從所述在線節(jié)點(diǎn)列表中的當(dāng)前游標(biāo)指針開(kāi)始向后查找客戶端請(qǐng)求的種子的信息。
7.如權(quán)利要求1所述的方法,其特征在于,所述方法進(jìn)一步包括建立空閑節(jié)點(diǎn)列表,記錄空閑節(jié)點(diǎn);當(dāng)客戶端登錄時(shí),從所述空閑節(jié)點(diǎn)列表中獲取一個(gè)空閑節(jié)點(diǎn),將客戶端的網(wǎng)絡(luò)信息保存到用戶信息數(shù)組的下標(biāo)與該客戶端的唯一標(biāo)識(shí)碼對(duì)應(yīng)的數(shù)組元素中,將數(shù)組元素中包含的指針指向該客戶端,并將該客戶端加入到所述在線節(jié)點(diǎn)列表;當(dāng)檢測(cè)到客戶端離線或客戶端主動(dòng)發(fā)出登出系統(tǒng)請(qǐng)求時(shí),根據(jù)客戶端的唯一標(biāo)識(shí)碼查找用戶信息數(shù)組中對(duì)應(yīng)的數(shù)組元素,將數(shù)組元素的指針指向的節(jié)點(diǎn)移動(dòng)到所述空閑節(jié)點(diǎn)列表。
8.一種P2P系統(tǒng)中查找種子的系統(tǒng),其特征在于,所述系統(tǒng)包括在線節(jié)點(diǎn)數(shù)據(jù)庫(kù),用于記錄在線客戶端的唯一標(biāo)識(shí)碼,所述唯一標(biāo)識(shí)碼為服務(wù)器向客戶端分配的唯一標(biāo)識(shí);用戶信息數(shù)據(jù)庫(kù),用于保存客戶端的用戶信息數(shù)組,用戶信息數(shù)組中保存有登錄到P2P系統(tǒng)的客戶端的網(wǎng)絡(luò)信息,客戶端的唯一標(biāo)識(shí)碼對(duì)應(yīng)所述客戶端的用戶信息數(shù)組的下標(biāo),用戶信息數(shù)組中的每個(gè)數(shù)組元素包含一個(gè)指針,指向所述在線節(jié)點(diǎn)數(shù)據(jù)庫(kù);以及種子信息查找模塊,用于在收到客戶端獲取種子信息的請(qǐng)求時(shí),查找在線節(jié)點(diǎn)數(shù)據(jù)庫(kù),根據(jù)在線客戶端的唯一標(biāo)識(shí)碼查找用戶信息數(shù)據(jù)庫(kù)中對(duì)應(yīng)的用戶信息數(shù)組的數(shù)組元素,選擇與客戶端請(qǐng)求的種子信息相匹配的在線客戶端的網(wǎng)絡(luò)信息,返回給所述請(qǐng)求種子信息的客戶端。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述系統(tǒng)進(jìn)一步包括節(jié)點(diǎn)刪除模塊,用于在檢測(cè)到客戶端離線或客戶端主動(dòng)發(fā)出登出請(qǐng)求時(shí),將客戶端的唯一標(biāo)識(shí)碼從在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)中刪除。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述系統(tǒng)進(jìn)一步包括種子信息更新模塊,用于接收客戶端定時(shí)上報(bào)的數(shù)據(jù)信息,根據(jù)客戶端的唯一標(biāo)識(shí)碼,在用戶信息數(shù)組中訪問(wèn)到所述客戶端的數(shù)組元素,將客戶端上報(bào)的網(wǎng)絡(luò)信息更新到對(duì)應(yīng)的數(shù)組元素中。
11.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)有多個(gè),每個(gè)不同的在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)記錄具有相同網(wǎng)絡(luò)信息的在線客戶端的唯一標(biāo)識(shí)碼。
12.如權(quán)利要求8或11所述的系統(tǒng),其特征在于,所述在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)包含一個(gè)雙向指針。
13.如權(quán)利要求8或11所述的系統(tǒng),其特征在于,所述在線節(jié)點(diǎn)數(shù)據(jù)庫(kù)包含一個(gè)游標(biāo)指針,所述游標(biāo)指針指向在線節(jié)點(diǎn)列表最后一次被訪問(wèn)過(guò)的節(jié)點(diǎn)位置。
14.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述系統(tǒng)進(jìn)一步包括空閑節(jié)點(diǎn)數(shù)據(jù)庫(kù),用于記錄空閑節(jié)點(diǎn);節(jié)點(diǎn)分配模塊,用于在客戶端登錄時(shí),從空閑節(jié)點(diǎn)數(shù)據(jù)庫(kù)中獲取一個(gè)空閑節(jié)點(diǎn),將客戶端的網(wǎng)絡(luò)信息保存到用戶信息數(shù)據(jù)中用戶信息數(shù)組的下標(biāo)與該客戶端的唯一標(biāo)識(shí)碼對(duì)應(yīng)的數(shù)組元素中,將數(shù)組元素中包含的指針指向該客戶端,并將該客戶端加入到在線節(jié)點(diǎn)數(shù)據(jù)庫(kù);以及節(jié)點(diǎn)回收模塊,用于在檢測(cè)到客戶端離線或客戶端主動(dòng)發(fā)出登出系統(tǒng)請(qǐng)求時(shí),根據(jù)客戶端的唯一標(biāo)識(shí)碼查找用戶信息數(shù)據(jù)庫(kù)中用戶信息數(shù)組中對(duì)應(yīng)的數(shù)組元素,將數(shù)組元素的指針指向的節(jié)點(diǎn)移動(dòng)到所述空閑節(jié)點(diǎn)數(shù)據(jù)庫(kù)。
全文摘要
本發(fā)明適用于網(wǎng)絡(luò)通信領(lǐng)域,提供了一種P2P系統(tǒng)中查找種子的方法及系統(tǒng),建立在線節(jié)點(diǎn)列表,以服務(wù)器為客戶端分配的唯一標(biāo)識(shí)索引在線節(jié)點(diǎn),并通過(guò)用戶信息數(shù)組保存節(jié)點(diǎn)的網(wǎng)絡(luò)信息,在查找客戶端請(qǐng)求的種子信息時(shí),查找在線節(jié)點(diǎn)列表,從用戶信息數(shù)組中選擇與客戶端請(qǐng)求的種子信息相匹配的在線客戶端的網(wǎng)絡(luò)信息返回客戶端。本發(fā)明在查找種子時(shí),只查找在線的客戶端,可以減小種子的查找范圍,提高種子的查找效率。同時(shí),可以降低服務(wù)器的內(nèi)存消耗、帶寬和運(yùn)算能力要求。
文檔編號(hào)H04L12/66GK101072156SQ20061006145
公開(kāi)日2007年11月14日 申請(qǐng)日期2006年6月28日 優(yōu)先權(quán)日2006年6月28日
發(fā)明者伍海君, 吳波, 張寶和, 朱治, 宋洋 申請(qǐng)人:騰訊科技(深圳)有限公司