亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種p2p系統(tǒng)中種子分發(fā)方法和裝置與流程

文檔序號(hào):12039240閱讀:485來(lái)源:國(guó)知局
一種p2p系統(tǒng)中種子分發(fā)方法和裝置與流程
本發(fā)明應(yīng)用于p2p系統(tǒng)中,尤其涉及一種p2p視頻點(diǎn)播系統(tǒng)中種子分發(fā)方法,同時(shí),還公開了一種種子分發(fā)裝置。

背景技術(shù):
近年來(lái),隨著互聯(lián)網(wǎng)視頻行業(yè)蓬勃發(fā)展,基于p2p(peer-to-peernetwork,對(duì)等網(wǎng)絡(luò))的視頻點(diǎn)播技術(shù)受到越來(lái)越多的關(guān)注,各種各樣的p2p視頻播放軟件也走進(jìn)了人們的生活。P2p技術(shù)是采用點(diǎn)對(duì)點(diǎn)的方式進(jìn)行數(shù)據(jù)傳輸,與傳統(tǒng)的客戶端/服務(wù)器(C/S)模式不同,在p2p系統(tǒng)中,節(jié)點(diǎn)既要從鄰居節(jié)點(diǎn)下載數(shù)據(jù),同時(shí)也要為鄰居節(jié)點(diǎn)服務(wù),上傳數(shù)據(jù)給鄰居節(jié)點(diǎn)。圖1為現(xiàn)有p2p視頻點(diǎn)播系統(tǒng)的結(jié)構(gòu)圖,如圖1所示,p2p視頻點(diǎn)播系統(tǒng)中,主要有2種角色,登錄服務(wù)器(Tracker)和節(jié)點(diǎn)。Tracker的作用是為新加入的節(jié)點(diǎn)分配鄰居節(jié)點(diǎn)以及維護(hù)當(dāng)前在線節(jié)點(diǎn)的信息,節(jié)點(diǎn)向鄰居節(jié)點(diǎn)請(qǐng)求數(shù)據(jù),同時(shí)響應(yīng)鄰居節(jié)點(diǎn)的數(shù)據(jù)請(qǐng)求。現(xiàn)有技術(shù)中,P2p視頻點(diǎn)播系統(tǒng)的工作過(guò)程如下:(1)節(jié)點(diǎn)向Tracker發(fā)送加入頻道請(qǐng)求,(2)Tracker為該節(jié)點(diǎn)分配鄰居節(jié)點(diǎn),(3)該節(jié)點(diǎn)與分配的鄰居節(jié)點(diǎn)建立連接,連接成功后,節(jié)點(diǎn)之間進(jìn)行p2p數(shù)據(jù)傳輸。p2p技術(shù)的應(yīng)用解決了傳統(tǒng)C/S模式下隨著節(jié)點(diǎn)的增加服務(wù)器帶寬和處理能力成為系統(tǒng)瓶頸的問題,但是,p2p應(yīng)用占有用了大量的寶貴的骨干網(wǎng)流量,限制了網(wǎng)絡(luò)的傳輸能力;隨著越來(lái)越多的節(jié)點(diǎn)頻繁的加入和退出頻道,Tracker的處理能力要求也越來(lái)越大;Tracker為請(qǐng)求節(jié)點(diǎn)分配的鄰居節(jié)點(diǎn)如果根本就無(wú)法建立連接,需要多次嘗試建立連接之后,才能確定其是否為有效的鄰居節(jié)點(diǎn),這樣會(huì)導(dǎo)致無(wú)謂的連接,從而導(dǎo)致系統(tǒng)性能較差。

技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是克服現(xiàn)有技術(shù)中由于登陸服務(wù)器向請(qǐng)求節(jié)點(diǎn)分配無(wú)法建立連接的鄰居節(jié)點(diǎn),從而導(dǎo)致整體性能較差的缺點(diǎn)。本發(fā)明解決上述技術(shù)問題所采取的技術(shù)方案如下:一種p2p系統(tǒng)中種子分發(fā)方法,包括:登陸服務(wù)器接收節(jié)點(diǎn)發(fā)來(lái)的加入頻道請(qǐng)求,該頻道請(qǐng)求中包括頻道ID信息、節(jié)點(diǎn)的IP地址信息和NAT類型、登陸時(shí)間;將該節(jié)點(diǎn)加入到本地緩存的頻道節(jié)點(diǎn)列表中;接收請(qǐng)求節(jié)點(diǎn)的查詢鄰居節(jié)點(diǎn)請(qǐng)求;根據(jù)所述請(qǐng)求查詢本地緩存的頻道節(jié)點(diǎn)列表,從中獲取符合條件的鄰居節(jié)點(diǎn);根據(jù)NAT類型和IP地址信息對(duì)所述查詢到的鄰居節(jié)點(diǎn)進(jìn)行篩選,將篩選后的鄰居節(jié)點(diǎn)信息返回給請(qǐng)求節(jié)點(diǎn)。進(jìn)一步地,優(yōu)選的方法包括:根據(jù)所述請(qǐng)求查詢本地緩存的節(jié)點(diǎn)列表,從中獲取符合條件的鄰居節(jié)點(diǎn),包括:從緩存的頻道節(jié)點(diǎn)列表中選取與請(qǐng)求節(jié)點(diǎn)在同一ISP號(hào)碼內(nèi)的部分或者全部鄰居節(jié)點(diǎn);根據(jù)NAT類型和IP地址信息對(duì)所述查詢到鄰居節(jié)點(diǎn)進(jìn)行篩選,包括:根據(jù)NAT類型是否可建立直接連接選取可用的鄰居節(jié)點(diǎn);基于IP地址的相似性對(duì)所述可用鄰居節(jié)點(diǎn)進(jìn)行評(píng)分,并選擇評(píng)分在前的鄰居節(jié)點(diǎn)。進(jìn)一步地,優(yōu)選的是,所述加入頻道請(qǐng)求中,所述IP地址信息包括:公網(wǎng)IP地址和/或內(nèi)網(wǎng)IP地址,PORT接口,所述將該節(jié)點(diǎn)加入到本地緩存的頻道節(jié)點(diǎn)列表中,包括:根據(jù)所述公網(wǎng)IP地址信息獲取所述節(jié)點(diǎn)的ISP號(hào)碼信息;獲取所述節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)湫畔ⅲ桓鶕?jù)所述節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)湫畔⒏禄蛘呓⒈镜鼐彺娴念l道節(jié)點(diǎn)列表。進(jìn)一步地,優(yōu)選的是,所述將該節(jié)點(diǎn)加入到本地緩存的頻道節(jié)點(diǎn)列表中,進(jìn)一步具體包括:從節(jié)點(diǎn)的加入頻道請(qǐng)求中獲取頻道ID信息;根據(jù)頻道ID信息查詢或者建立對(duì)應(yīng)的頻道ID對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)列表;根據(jù)請(qǐng)求節(jié)點(diǎn)的公網(wǎng)IP地址獲得其ISP號(hào)碼,并從所述頻道ID對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)列表查詢或者建立所述ISP號(hào)碼所對(duì)應(yīng)的鄰居節(jié)點(diǎn)PeerID集合,并將節(jié)點(diǎn)的PeerID和網(wǎng)絡(luò)拓?fù)湫畔⒉迦氲郊袭?dāng)中。進(jìn)一步地,優(yōu)選的是,進(jìn)一步還包括:登陸服務(wù)器接收頻道節(jié)點(diǎn)列表中的節(jié)點(diǎn)發(fā)來(lái)的心跳信息;其中,當(dāng)所述心跳信息中包含節(jié)點(diǎn)的NAT類型變更的信息時(shí),根據(jù)所述NAT類型變更信息更新本地緩存的相應(yīng)節(jié)點(diǎn)的NAT類型。進(jìn)一步地,優(yōu)選的是,還包括:當(dāng)一段時(shí)間內(nèi)未接收到節(jié)點(diǎn)的心跳信息時(shí),則登陸服務(wù)器從本地緩存的節(jié)點(diǎn)列表中清除相應(yīng)的節(jié)點(diǎn)信息。一種p2p系統(tǒng)中種子分發(fā)裝置,包括:接收單元,接收節(jié)點(diǎn)發(fā)來(lái)的加入頻道請(qǐng)求,該頻道請(qǐng)求中包括頻道ID信息、節(jié)點(diǎn)的IP地址信息和NAT類型;頻道管理單元,用于將該節(jié)點(diǎn)加入到本地緩存的頻道節(jié)點(diǎn)列表中;所述接收單元,進(jìn)一步用于接收請(qǐng)求節(jié)點(diǎn)的查詢鄰居節(jié)點(diǎn)請(qǐng)求;節(jié)點(diǎn)分配單元,進(jìn)一步用于根據(jù)所述請(qǐng)求查詢本地緩存的頻道節(jié)點(diǎn)列表,從中獲取符合條件的鄰居節(jié)點(diǎn);根據(jù)NAT類型和IP地址信息對(duì)所述查詢到的鄰居節(jié)點(diǎn)進(jìn)行篩選,將篩選后的鄰居節(jié)點(diǎn)信息返回給請(qǐng)求節(jié)點(diǎn)。進(jìn)一步地,優(yōu)選的是,所述節(jié)點(diǎn)分配單元,根據(jù)所述請(qǐng)求查詢本地緩存的節(jié)點(diǎn)列表,從中獲取符合條件的鄰居節(jié)點(diǎn),進(jìn)一步包括:從緩存的頻道節(jié)點(diǎn)列表中選取與請(qǐng)求節(jié)點(diǎn)在同一ISP號(hào)碼內(nèi)的部分或者全部鄰居節(jié)點(diǎn);根據(jù)NAT類型和IP地址信息對(duì)所述查詢到鄰居節(jié)點(diǎn)進(jìn)行篩選,包括:根據(jù)NAT類型是否可建立直接連接選取可用的鄰居節(jié)點(diǎn);基于IP地址的相似性對(duì)所述可用鄰居節(jié)點(diǎn)進(jìn)行評(píng)分,并選擇評(píng)分在前的鄰居節(jié)點(diǎn)。進(jìn)一步地,優(yōu)選的是,所述加入頻道請(qǐng)求中,所述IP地址信息包括:公網(wǎng)IP地址和/或內(nèi)網(wǎng)IP地址,PORT接口,所述頻道管理單元將該節(jié)點(diǎn)加入到本地緩存的頻道節(jié)點(diǎn)列表中,進(jìn)一步包括:根據(jù)所述公網(wǎng)IP地址信息獲取所述節(jié)點(diǎn)的ISP號(hào)碼信息;獲取所述節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)湫畔?;根?jù)所述節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)湫畔⒏禄蛘呓⒈镜鼐彺娴念l道節(jié)點(diǎn)列表。進(jìn)一步地,優(yōu)選的是,所述頻道管理單元,將該節(jié)點(diǎn)加入到本地緩存的頻道節(jié)點(diǎn)列表中,進(jìn)一步具體包括:從節(jié)點(diǎn)的加入頻道請(qǐng)求中獲取頻道ID信息;根據(jù)頻道ID信息查詢或者建立對(duì)應(yīng)的頻道ID對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)列表;根據(jù)請(qǐng)求節(jié)點(diǎn)的公網(wǎng)IP地址獲得其ISP號(hào)碼,并從所述頻道ID對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)列表查詢或者建立所述ISP號(hào)碼所對(duì)應(yīng)的鄰居節(jié)點(diǎn)PeerID集合,并將節(jié)點(diǎn)的PeerID和網(wǎng)絡(luò)拓?fù)湫畔⒉迦氲郊袭?dāng)中。進(jìn)一步地,優(yōu)選的是,所述頻道管理單元,進(jìn)一步還用于接收頻道節(jié)點(diǎn)列表中的節(jié)點(diǎn)發(fā)來(lái)的心跳信息;其中,當(dāng)所述心跳信息中包含節(jié)點(diǎn)的NAT類型變更的信息時(shí),根據(jù)所述NAT類型變更信息更新本地緩存的相應(yīng)節(jié)點(diǎn)的NAT類型。進(jìn)一步地,優(yōu)選的是于,所述頻道管理單元,進(jìn)一步還用于當(dāng)一段時(shí)間內(nèi)未接收到節(jié)點(diǎn)的心跳信息時(shí),則登陸服務(wù)器從本地緩存的節(jié)點(diǎn)列表中清除相應(yīng)的節(jié)點(diǎn)信息。本發(fā)明采取了上述方案以后,由于還包括根據(jù)NAT類型和IP地址信息對(duì)所述查詢到鄰居節(jié)點(diǎn)進(jìn)行篩選,將篩選后的鄰居節(jié)點(diǎn)信息返回給請(qǐng)求節(jié)點(diǎn),因此,其最終分配的鄰居節(jié)點(diǎn)性能較佳,克服了現(xiàn)有技術(shù)中由于Tracker為請(qǐng)求節(jié)點(diǎn)分配的鄰居節(jié)點(diǎn)可能需要多次嘗試建立連接之后,才能確定其是否為有效的鄰居節(jié)點(diǎn),從而導(dǎo)致系統(tǒng)性能較差的缺點(diǎn)。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書中闡述,并且,部分地從說(shuō)明書中變得顯而易見,或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在所寫的說(shuō)明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。附圖說(shuō)明下面結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)的描述,以使得本發(fā)明的上述優(yōu)點(diǎn)更加 明確。其中,圖1是現(xiàn)有技術(shù)中的p2p視頻點(diǎn)播系統(tǒng)結(jié)構(gòu)圖;圖2是本發(fā)明p2p系統(tǒng)中種子分發(fā)方法的實(shí)施例一的流程示意圖;圖3是本發(fā)明p2p系統(tǒng)中種子分發(fā)方法的實(shí)施例二的流程示意圖;圖4是本發(fā)明p2p系統(tǒng)中種子分發(fā)方法的具體應(yīng)用場(chǎng)景的示意圖;圖5是本發(fā)明p2p系統(tǒng)中種子分發(fā)方法中登陸服務(wù)器管理種子、分配種子的流程圖;圖6是本發(fā)明p2p系統(tǒng)中種子分發(fā)方法中登陸服務(wù)器進(jìn)行NAT類型過(guò)濾的流程圖;圖7是本發(fā)明p2p系統(tǒng)中種子分發(fā)裝置的結(jié)構(gòu)示意圖。具體實(shí)施方式以下將結(jié)合附圖及實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明的實(shí)施方式,借此對(duì)本發(fā)明如何應(yīng)用技術(shù)手段來(lái)解決技術(shù)問題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過(guò)程能充分理解并據(jù)以實(shí)施。需要說(shuō)明的是,只要不構(gòu)成沖突,本發(fā)明中的各個(gè)實(shí)施例以及各實(shí)施例中的各個(gè)特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之內(nèi)。另外,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。首先,對(duì)本發(fā)明中出現(xiàn)的英文縮寫進(jìn)行如下解釋和說(shuō)明。STUN:SimpleTraversalofUDPoverNATs,NAT的UDP簡(jiǎn)單穿越;ISP:InternetServiceProvider,互聯(lián)網(wǎng)服務(wù)提供商;CID:ChannelID,頻道ID;CIDtime:登陸時(shí)間;PeerID:peerid,種子的ID號(hào);Peer:種子,節(jié)點(diǎn);NAT:NetworkAddressTranslation,網(wǎng)絡(luò)地址轉(zhuǎn)換;NAT_OPEN:NotinNAT,andUDParenotlimited;NAT_OPEN_SYM:NotinNAT,andFirewallactslikesymmetricNAT;NAT_BLOCK:UDPtrafficisblocked;NAT_FULL_CONE:FullConeNAT;NAT_RESTRICT_CONE:RestrictConeNAT;NAT_PORT_RESTRICT_CONE:PortRestrictConeNAT;NAT_SYMMETRIC:SymmetricNAT;NAT_UPNP_OPEN:InNAT,butisopenedbyUpnP;NatT:請(qǐng)求查詢節(jié)點(diǎn)自身NATTYPE;PnatT:種子節(jié)點(diǎn)的NATTYPE。方法實(shí)施例一:為了克服現(xiàn)有的p2p系統(tǒng),如視頻點(diǎn)播系統(tǒng)中,數(shù)據(jù)調(diào)度中未考慮節(jié)點(diǎn)鏈路代價(jià)、不能快速分發(fā)種子和種子有效分發(fā)的缺限,本發(fā)明提出一種p2p視頻點(diǎn)播系統(tǒng)中種子高效管理與有效分發(fā)方法。如圖2所示,在一個(gè)實(shí)施例中,根據(jù)本發(fā)明的一個(gè)方面,本發(fā)明提供了一種p2p系統(tǒng)中種子分發(fā)方法,包括:步驟S101:登陸服務(wù)器接收節(jié)點(diǎn)發(fā)來(lái)的加入頻道請(qǐng)求,該頻道請(qǐng)求中包括頻道ID信息、節(jié)點(diǎn)的IP地址信息和NAT類型、登陸時(shí)間;步驟S102:將該節(jié)點(diǎn)加入到本地緩存的頻道節(jié)點(diǎn)列表中;步驟S103:接收請(qǐng)求節(jié)點(diǎn)的查詢鄰居節(jié)點(diǎn)請(qǐng)求;步驟S104:根據(jù)所述請(qǐng)求查詢本地緩存的頻道節(jié)點(diǎn)列表,從中獲取符合條件的鄰居節(jié)點(diǎn);步驟S105:根據(jù)NAT類型和IP地址信息對(duì)所述查詢到鄰居節(jié)點(diǎn)進(jìn)行篩選,將篩選后的鄰居節(jié)點(diǎn)信息返回給請(qǐng)求節(jié)點(diǎn)。也就是說(shuō),現(xiàn)有技術(shù)沒有針對(duì)NAT類型和IP地址進(jìn)行鄰居節(jié)點(diǎn)篩選,因此,其選擇的鄰居節(jié)點(diǎn)往往不是最佳的鄰居節(jié)點(diǎn),而本申請(qǐng)則基于一定的策略對(duì)鄰居節(jié)點(diǎn)進(jìn)行篩選,因此,其最終分配的鄰居節(jié)點(diǎn)性能較佳,克服了現(xiàn)有技術(shù)中為請(qǐng)求節(jié)點(diǎn)分配的鄰居節(jié)點(diǎn)如果根本就無(wú)法建立連接,需要多次嘗試建立連接之后,才能確定其是否為有效的鄰居節(jié)點(diǎn),這樣會(huì)導(dǎo)致無(wú)謂的連接,從而導(dǎo)致系統(tǒng)性能較差的缺點(diǎn)。方法實(shí)施例二:以下結(jié)合具體實(shí)施例進(jìn)一步地描述,其中,在該實(shí)施例中,主要對(duì)實(shí)施例一中的方法和步驟進(jìn)行細(xì)化,如圖3所示,具體包括:步驟S201:登陸服務(wù)器接收節(jié)點(diǎn)發(fā)來(lái)的加入頻道請(qǐng)求,該頻道請(qǐng)求中包括頻道ID信息、節(jié)點(diǎn)的IP地址信息和NAT類型;其中,在實(shí)施例中,所述加入頻道請(qǐng)求中,所述IP地址信息包括:公網(wǎng)IP地址和/或內(nèi)網(wǎng)IP地址,PORT接口,即如果節(jié)點(diǎn)屬于公網(wǎng)的節(jié)點(diǎn),則僅僅攜帶公網(wǎng)IP地址和公網(wǎng)的PORT接口;如果節(jié)點(diǎn)屬于NAT后的節(jié)點(diǎn),則其會(huì)攜帶公網(wǎng)IP地址、內(nèi)網(wǎng)IP地址、公網(wǎng)PORT接口、私網(wǎng)PORT接口。步驟S202:登陸服務(wù)器將該節(jié)點(diǎn)加入到本地緩存的頻道節(jié)點(diǎn)列表中,具體來(lái)說(shuō),主要包括:根據(jù)所述公網(wǎng)IP地址信息獲取所述節(jié)點(diǎn)的ISP號(hào)碼信息;獲取所述節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)湫畔?;根?jù)所述節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)湫畔⒏禄蛘呓⒈镜鼐彺娴念l道節(jié)點(diǎn)列表。更具體地說(shuō),在具體的實(shí)施例中,上述步驟主要是按照以下的順序進(jìn)行相應(yīng)的頻道節(jié)點(diǎn)列表加入的:步驟S2021:從節(jié)點(diǎn)的加入頻道請(qǐng)求中獲取頻道ID信息;步驟S2022:根據(jù)頻道ID信息查詢或者建立對(duì)應(yīng)的頻道ID對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)列表,再根據(jù)請(qǐng)求節(jié)點(diǎn)的公網(wǎng)IP地址獲得其ISP號(hào)碼;步驟S2023:從所述頻道ID對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)列表查詢或者建立所述ISP號(hào)碼所對(duì)應(yīng)的鄰居節(jié)點(diǎn)PeerID集合,并將節(jié)點(diǎn)的PeerID和網(wǎng)絡(luò)拓?fù)湫畔⒉迦氲郊袭?dāng)中。圖5是本發(fā)明p2p系統(tǒng)中種子分發(fā)方法中登陸服務(wù)器管理種子、分配種子的流程圖;圖6是本發(fā)明p2p系統(tǒng)中種子分發(fā)方法中登陸服務(wù)器進(jìn)行NAT類型過(guò)濾的流程圖;結(jié)合上述具體的流程事宜進(jìn)行詳細(xì)說(shuō)明,其中,根據(jù)上述實(shí)施例的技術(shù)啟示,在一個(gè)實(shí)施例中,登錄服務(wù)器管理數(shù)據(jù)存儲(chǔ)列表所此前的數(shù)據(jù)存儲(chǔ)信息數(shù)據(jù)結(jié)構(gòu)如下:CID->ISP->SET<PeerID>。更具體地說(shuō),登陸服務(wù)器維護(hù)了根據(jù)以下三種數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)列表, 且這三種格式的數(shù)據(jù)存儲(chǔ)列表分別用于:更新節(jié)點(diǎn)列表插入刪除時(shí)使用(結(jié)構(gòu)一)、查詢節(jié)點(diǎn)列表時(shí)使用(結(jié)構(gòu)二)、登錄服務(wù)器更新節(jié)點(diǎn)過(guò)程使用(結(jié)構(gòu)三),以此實(shí)現(xiàn)快速地進(jìn)行查詢和全面存儲(chǔ)。結(jié)構(gòu)一:typedefstd::map<std::string/*ISP*/,std::set<uint32/**PeerID*/>>ISp2pEERs_Orig;//更新節(jié)點(diǎn)列表插入刪除時(shí)使用結(jié)構(gòu)二:typedefstd::map<std::string/*ISP*/,std::vector<uint32/**PeerID*/>>ISp2pEERs_Copy;//查詢節(jié)點(diǎn)列表時(shí)使用結(jié)構(gòu)三:登錄服務(wù)器更新節(jié)點(diǎn)過(guò)程使用。其中,根據(jù)上述數(shù)據(jù)結(jié)構(gòu),當(dāng)?shù)顷懛?wù)器接收到節(jié)點(diǎn)注冊(cè)頻道的請(qǐng)求的時(shí)候,登陸服務(wù)器根據(jù)上述數(shù)據(jù)結(jié)構(gòu)進(jìn)行上述頻道節(jié)點(diǎn)注冊(cè)和更新,例如,在進(jìn)行節(jié)點(diǎn)更新的時(shí)候,登錄服務(wù)器從結(jié)構(gòu)三對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)列表中,根據(jù)CID先查詢到CID_orig,即如下的結(jié)構(gòu):std::map<uint32/*CID*/,ISp2pEERs_Orig>CID_orig;這個(gè)是從CID到ISp2pEERs_Orig的一個(gè)映射關(guān)系;再根據(jù)請(qǐng)求節(jié)點(diǎn)的IP獲得其ISP號(hào)從CID_orig中查詢到ISP所對(duì)應(yīng)的PeerID集合如結(jié)構(gòu)一,最后將PeerID插入到集合當(dāng)中。在具體的算法中,可以將該集合由二叉樹或紅黑二叉樹實(shí)現(xiàn),由此,其插入和刪除的速度比較快。步驟203:接收請(qǐng)求節(jié)點(diǎn)的查詢鄰居節(jié)點(diǎn)請(qǐng)求;步驟S204:根據(jù)所述請(qǐng)求查詢本地緩存的頻道節(jié)點(diǎn)列表,從中獲取符合條件的鄰居節(jié)點(diǎn),包括:從緩存的頻道節(jié)點(diǎn)列表中選取與請(qǐng)求節(jié)點(diǎn)在同一ISP號(hào)碼內(nèi)的部分或者全部鄰居節(jié)點(diǎn):即根據(jù)IP地址中的公網(wǎng)IP地址進(jìn)行查詢并獲取相應(yīng)的處于同一ISP號(hào)碼的部分或者全部鄰居節(jié)點(diǎn)。步驟S205:根據(jù)NAT類型和IP地址信息對(duì)所述查詢到鄰居節(jié)點(diǎn)進(jìn)行篩選,包括:S2051:根據(jù)NAT類型是否可建立直接連接選取可用的鄰居節(jié)點(diǎn);S2052:基于IP地址的相似性對(duì)所述可用鄰居節(jié)點(diǎn)進(jìn)行評(píng)分,并選擇評(píng)分在前的鄰居節(jié)點(diǎn)。即通過(guò)上述方法,其最終分配的鄰居節(jié)點(diǎn)性能較佳,克服了現(xiàn)有技術(shù)中為請(qǐng)求節(jié)點(diǎn)分配的鄰居節(jié)點(diǎn)如果根本就無(wú)法建立連接,需要多次嘗試建立連接之后,才能確定其是否為有效的鄰居節(jié)點(diǎn),這樣會(huì)導(dǎo)致無(wú)謂的連接,從而導(dǎo)致系統(tǒng)性能較差的缺點(diǎn)。具體來(lái)說(shuō),根據(jù)如上所述的三種數(shù)據(jù)結(jié)構(gòu),登陸服務(wù)器會(huì)在進(jìn)行節(jié)點(diǎn)查詢的過(guò)程中,首先會(huì)將根據(jù)每次查詢的頻道CID在結(jié)構(gòu)三對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)列表中的CID_time中查看CID_time,即其登陸時(shí)間;如果CID_time超過(guò)時(shí)(定時(shí)),則會(huì)從set集合時(shí)拷貝一份數(shù)據(jù)到另一數(shù)據(jù)存儲(chǔ)列表(在實(shí)施例中,簡(jiǎn)稱vector數(shù)組)當(dāng)中并隨機(jī)存儲(chǔ),并更新CID_time時(shí)間為當(dāng)前時(shí)間。然后再?gòu)膙ector數(shù)組當(dāng)中任意點(diǎn)拷貝一組種子;然后再對(duì)這一組種子進(jìn)行過(guò)濾,評(píng)分,過(guò)濾主要是根據(jù)NAT類型是否可以建立連接的條件,評(píng)分是根據(jù)IP相似程度,其具體實(shí)現(xiàn)方式如上面所描述,在此不進(jìn)行詳細(xì)說(shuō)明。其中,可以認(rèn)為set和vector是兩個(gè)容器,Set是插入比較快,查詢比較慢。Vector是插入比較慢,查詢比較快。即我們?cè)诓迦霑r(shí)用set容器,查詢時(shí)用vector容器,由于所有的數(shù)據(jù)都插入到了set容器當(dāng)中,所以這里需要定時(shí)的從set容器導(dǎo)一份數(shù)據(jù)到vector當(dāng)中,由此實(shí)現(xiàn)快速查詢。由此,本發(fā)明不僅僅實(shí)現(xiàn)了選擇最合適的種子節(jié)點(diǎn)的功能,且在登陸服 務(wù)器具體查詢的時(shí)候,實(shí)現(xiàn)了插入、刪除、查詢并存時(shí)一種數(shù)據(jù)結(jié)構(gòu)難以達(dá)到最理想的情況,提高了登錄服務(wù)器的工作性能;并且,該方法能夠加快種子查詢速度、節(jié)約帶寬、查詢種子更加精準(zhǔn)。其中,該方法還包括:登陸服務(wù)器接收頻道節(jié)點(diǎn)列表中的節(jié)點(diǎn)發(fā)來(lái)的心跳信息;當(dāng)所述心跳信息中包含節(jié)點(diǎn)的NAT類型變更的信息時(shí),根據(jù)所述NAT類型變更信息更新本地緩存的相應(yīng)節(jié)點(diǎn)的NAT類型。其中,當(dāng)一段時(shí)間內(nèi)未接收到節(jié)點(diǎn)的心跳信息時(shí),則登陸服務(wù)器從本地緩存的節(jié)點(diǎn)列表中清除相應(yīng)的節(jié)點(diǎn)信息。通過(guò)上述方法,登陸服務(wù)器能夠較好地掌握相應(yīng)的節(jié)點(diǎn)信息,并據(jù)此在后續(xù)的種子分發(fā)的時(shí)候,其分配更為精確。方法實(shí)施例三:結(jié)合進(jìn)行p2p視頻點(diǎn)播的時(shí)候?qū)Ρ景l(fā)明進(jìn)行詳細(xì)的說(shuō)明,當(dāng)然,本實(shí)施例中的方法也可以應(yīng)用于其他p2p系統(tǒng)中,本實(shí)施例僅僅是為示意,并非用于限定本發(fā)明。如圖4所示,所述p2p系統(tǒng)中種子分發(fā)方法,涉及到如下的節(jié)點(diǎn)/服務(wù)器:請(qǐng)求節(jié)點(diǎn)、鄰居節(jié)點(diǎn)、STUNSERVER服務(wù)器、登陸服務(wù)器(Tracker)。根據(jù)如圖4所示的各個(gè)節(jié)點(diǎn)/服務(wù)器之間的交互所示,以請(qǐng)求節(jié)點(diǎn)為例,本發(fā)明實(shí)施例的種子分發(fā)方法主要包括以下步驟:步驟S301:請(qǐng)求節(jié)點(diǎn)向STUNSERVER服務(wù)器發(fā)送其NAT類型檢測(cè)消息,判定其所述節(jié)點(diǎn)自身NAT類型;具體來(lái)說(shuō),STUNSERVER(SimpleTraversalofUDPoverNATs),NAT的UDP簡(jiǎn)單穿越,是一種服務(wù)器,節(jié)點(diǎn)之間與其交互最終能夠獲取節(jié)點(diǎn)本身的NAT類型,該技術(shù)屬于現(xiàn)有技術(shù),在此不詳述其具體過(guò)程。步驟S302:所述請(qǐng)求節(jié)點(diǎn)向登錄服務(wù)器(Tracker)登錄并注冊(cè),所述登錄服務(wù)器獲取所述請(qǐng)求節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)湫畔?;所述登錄服?wù)器根據(jù)所述請(qǐng)求節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)湫畔⒏鹿?jié)點(diǎn)列表。具體來(lái)說(shuō),包括:數(shù)據(jù)請(qǐng)求節(jié)點(diǎn)向Tracker進(jìn)行登錄并注冊(cè),登錄信息包括NAT類型、公網(wǎng)與內(nèi)網(wǎng)IP,PORT、登錄時(shí)間,且其注冊(cè)信息包括其本地所有緩存的頻道信 息;其中,登錄服務(wù)器根據(jù)請(qǐng)求節(jié)點(diǎn)的公網(wǎng)IP地址獲取請(qǐng)求節(jié)點(diǎn)的ISP號(hào),并將注冊(cè)的所有頻道信息更新節(jié)點(diǎn)列表,具體步驟在上面實(shí)施例中進(jìn)行了詳細(xì)說(shuō)明,本實(shí)施例不再贅述。其中,與上述方法實(shí)施例類似,請(qǐng)求節(jié)點(diǎn)定時(shí)間隔一段時(shí)間向Tracker發(fā)送一次心跳信息,當(dāng)NAT類型有變化時(shí)隨心跳一起發(fā)送給Tracker,用于更新節(jié)點(diǎn)當(dāng)前狀態(tài),Tracker會(huì)定時(shí)清除超時(shí)沒有心跳的節(jié)點(diǎn)。步驟S303:所述請(qǐng)求節(jié)點(diǎn)向所述登錄服務(wù)器查詢鄰居節(jié)點(diǎn),所述登錄服務(wù)器篩選出優(yōu)質(zhì)有效的種子返回給請(qǐng)求節(jié)點(diǎn),具體來(lái)說(shuō),登錄服務(wù)器先查詢到一批種子,之后再對(duì)種子進(jìn)行評(píng)分和過(guò)濾,過(guò)濾條件是:NAT類型可以建立連接的,確保種子的優(yōu)質(zhì)有效性,最后分配給請(qǐng)求節(jié)點(diǎn)。步驟S304:請(qǐng)求節(jié)點(diǎn)收到登錄服務(wù)器分配的鄰居節(jié)點(diǎn)之后,如果是NAT后的種子,可通過(guò)STUNSERVER服務(wù)器直接建立連接,如圖3所示的步驟4、5、6、7所示。如步驟S304:向STUNSERVER服務(wù)器發(fā)起橋接請(qǐng)求;步驟S305:STUN服務(wù)器向鄰居節(jié)點(diǎn)轉(zhuǎn)發(fā)請(qǐng)求;S306:鄰居節(jié)點(diǎn)連接請(qǐng)求至請(qǐng)求節(jié)點(diǎn);S307:請(qǐng)求節(jié)點(diǎn)與鄰居節(jié)點(diǎn)建立連接并進(jìn)行數(shù)據(jù)傳輸,由于其屬于相應(yīng)的數(shù)據(jù)傳輸?shù)木唧w實(shí)現(xiàn)方法,在此不詳細(xì)說(shuō)明。由此可見,請(qǐng)求節(jié)點(diǎn)收到登錄服務(wù)器分配的鄰居節(jié)點(diǎn)之后,如果是NAT后的種子,可通過(guò)STUN服務(wù)器直接建立連接。其中,如果沒有進(jìn)行相應(yīng)的過(guò)濾,請(qǐng)求節(jié)點(diǎn)可能會(huì)分配到一些根據(jù)無(wú)法建立連接的種子,這樣會(huì)導(dǎo)致無(wú)謂的連接,從而導(dǎo)致系統(tǒng)性能較差,也就是說(shuō),本實(shí)施例中的種子分發(fā)方法,基于ISP、NAT類型、IP地址的相似性進(jìn)行鄰居節(jié)點(diǎn)過(guò)濾,這樣就會(huì)避免一些無(wú)謂的連接,從而節(jié)省了不同網(wǎng)絡(luò)客戶端之間的相互連接,減少了系統(tǒng)性能損耗。裝置實(shí)施例一:根據(jù)上述方法相對(duì)應(yīng),本發(fā)明還公開了一種種子分發(fā)裝置,設(shè)置于登陸服務(wù)器(Tracker)中,主要包括:接收單元,接收節(jié)點(diǎn)發(fā)來(lái)的加入頻道請(qǐng)求,該頻道請(qǐng)求中包括頻道ID信 息、節(jié)點(diǎn)的IP地址信息和NAT類型;頻道管理單元,用于將該節(jié)點(diǎn)加入到本地緩存的頻道節(jié)點(diǎn)列表中;其中,登陸服務(wù)器中的緩存單元,用于存儲(chǔ)上述頻道節(jié)點(diǎn)列表。所述接收單元,進(jìn)一步用于接收請(qǐng)求節(jié)點(diǎn)的查詢鄰居節(jié)點(diǎn)請(qǐng)求;節(jié)點(diǎn)分配單元,進(jìn)一步用于根據(jù)所述請(qǐng)求查詢本地緩存的頻道節(jié)點(diǎn)列表,從中獲取符合條件的鄰居節(jié)點(diǎn);根據(jù)NAT類型和IP地址信息對(duì)所述查詢到鄰居節(jié)點(diǎn)進(jìn)行篩選,將篩選后的鄰居節(jié)點(diǎn)信息返回給請(qǐng)求節(jié)點(diǎn)。其中,所述節(jié)點(diǎn)分配單元,根據(jù)所述請(qǐng)求查詢本地緩存的節(jié)點(diǎn)列表,從中獲取符合條件的鄰居節(jié)點(diǎn),進(jìn)一步包括:從緩存的頻道節(jié)點(diǎn)列表中選取與請(qǐng)求節(jié)點(diǎn)在同一ISP號(hào)碼內(nèi)的部分或者全部鄰居節(jié)點(diǎn);根據(jù)NAT類型和IP地址信息對(duì)所述查詢到鄰居節(jié)點(diǎn)進(jìn)行篩選,包括:根據(jù)NAT類型是否可建立直接連接選取可用的鄰居節(jié)點(diǎn);基于IP地址的相似性對(duì)所述可用鄰居節(jié)點(diǎn)進(jìn)行評(píng)分,并選擇評(píng)分在前的鄰居節(jié)點(diǎn)。其中,所述加入頻道請(qǐng)求中,所述IP地址信息包括:公網(wǎng)IP地址和/或內(nèi)網(wǎng)IP地址,PORT接口,所述頻道管理單元將該節(jié)點(diǎn)加入到本地緩存的頻道節(jié)點(diǎn)列表中,進(jìn)一步包括:根據(jù)所述公網(wǎng)IP地址信息獲取所述節(jié)點(diǎn)的ISP號(hào)碼信息;獲取所述節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)湫畔ⅲ桓鶕?jù)所述節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)湫畔⒏禄蛘呓⒈镜鼐彺娴念l道節(jié)點(diǎn)列表。其中,所述頻道管理單元,將該節(jié)點(diǎn)加入到本地緩存的頻道節(jié)點(diǎn)列表中,進(jìn)一步具體包括:從節(jié)點(diǎn)的加入頻道請(qǐng)求中獲取頻道ID信息;根據(jù)頻道ID信息查詢到對(duì)應(yīng)的頻道ID對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)列表,再根據(jù)請(qǐng)求節(jié)點(diǎn)的公網(wǎng)IP地址獲得其ISP號(hào)碼,并從所述頻道ID對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)列表查詢到所述ISP號(hào)碼所對(duì)應(yīng)的鄰居節(jié)點(diǎn)PeerID集合,并將節(jié)點(diǎn)的PeerID和網(wǎng)絡(luò)拓?fù)湫畔⒉迦氲郊袭?dāng)中。其中,所述頻道管理單元,進(jìn)一步還用于接收頻道節(jié)點(diǎn)列表中的節(jié)點(diǎn)發(fā)來(lái)的心跳信息;其中,當(dāng)所述心跳信息中包含節(jié)點(diǎn)的NAT類型變更的信息時(shí),根據(jù)所述NAT類型變更信息更新本地緩存的相應(yīng)節(jié)點(diǎn)的NAT類型。其中,所述頻道管理單元,進(jìn)一步還用于當(dāng)一段時(shí)間內(nèi)未接收到節(jié)點(diǎn)的心跳信息時(shí),則登陸服務(wù)器從本地緩存的節(jié)點(diǎn)列表中清除相應(yīng)的節(jié)點(diǎn)信息。此外,本發(fā)明裝置執(zhí)行的方法如上述實(shí)施例中所描述,由于在方法實(shí)施例中已經(jīng)詳細(xì)地進(jìn)行了說(shuō)明,本發(fā)明裝置中并未進(jìn)行詳細(xì)說(shuō)明,具體單元之間的功能和執(zhí)行動(dòng)作可以參考方法實(shí)施例中的描述。本發(fā)明裝置同樣具有以上方法實(shí)施例中的優(yōu)點(diǎn),即其最終分配的鄰居節(jié)點(diǎn)性能較佳,克服了現(xiàn)有技術(shù)中由于Tracker為請(qǐng)求節(jié)點(diǎn)分配的鄰居節(jié)點(diǎn)如果根本就無(wú)法建立連接,需要多次嘗試建立連接之后,才能確定其是否為有效的鄰居節(jié)點(diǎn),這樣會(huì)導(dǎo)致無(wú)謂的連接,從而導(dǎo)致系統(tǒng)性能較差的缺點(diǎn)。需要說(shuō)明的是,對(duì)于上述方法實(shí)施例而言,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng),某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本申請(qǐng)所必須的。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。最后應(yīng)說(shuō)明的是:以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1