專利名稱:覆蓋網(wǎng)絡(luò)系統(tǒng)和服務(wù)提供方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通過(guò)分布式哈希表技術(shù)在哈??臻g中分配至少一個(gè)節(jié)點(diǎn)的覆 蓋網(wǎng)絡(luò)系統(tǒng),以及在該覆蓋網(wǎng)絡(luò)系統(tǒng)中使用的服務(wù)提供方法。
背景技術(shù):
近來(lái),作為客戶端/服務(wù)器系統(tǒng)的替代品,將越來(lái)越多的興趣投向稱為對(duì)等(peer to peer)(此后稱為P2P)的連接形式,其中,與網(wǎng)絡(luò)連接的所有節(jié) 點(diǎn)可以動(dòng)態(tài)地改變其角色。對(duì)照數(shù)據(jù)集中在服務(wù)器處的客戶端/服務(wù)器系統(tǒng), 在P2P系統(tǒng)中,以分布式方式在同等節(jié)點(diǎn)中保存數(shù)據(jù)。即,通過(guò)同等節(jié)點(diǎn)之 間的合作來(lái)進(jìn)行保存數(shù)據(jù)的位置的搜索。用于搜索保存數(shù)據(jù)的位置的技術(shù)的例子是分布式哈希表(此后稱為 DHT)。在DHT中,將指示保存數(shù)據(jù)主體的位置的信息登記在具有與從該數(shù) 據(jù)生成的哈希值接近的哈希值的節(jié)點(diǎn)處。此時(shí),使用相同的哈希函數(shù)來(lái)生成 數(shù)據(jù)的哈希值和節(jié)點(diǎn)的哈希值。在登記指示保存數(shù)據(jù)的位置的信息的每個(gè)節(jié) 點(diǎn)處,以哈希表的形式來(lái)保持?jǐn)?shù)據(jù)的哈希值和指示保存該數(shù)據(jù)主體的位置的 信息的對(duì)。由于從不同的數(shù)據(jù)生成的哈希值呈現(xiàn)完全不同的值,因此在網(wǎng)絡(luò)上分布 登記了指示保存數(shù)據(jù)的位置的信息的節(jié)點(diǎn)。即,以分布式方式在同等節(jié)點(diǎn)中 存儲(chǔ)哈希表,以便在同等節(jié)點(diǎn)之間分布負(fù)載。當(dāng)進(jìn)行對(duì)數(shù)據(jù)的搜索時(shí),可以通過(guò)計(jì)算數(shù)據(jù)的哈希值和使用哈希值作為 密鑰(key)進(jìn)行搜索來(lái)找到數(shù)據(jù)。在DHT中,構(gòu)成網(wǎng)絡(luò)的每個(gè)節(jié)點(diǎn)具有描 述到相鄰節(jié)點(diǎn)的路由的路由表。在該路由表中,使用節(jié)點(diǎn)的哈希值來(lái)表示節(jié) 點(diǎn)間的距離。為了查閱(refer to)在網(wǎng)絡(luò)上的節(jié)點(diǎn)之一處登記的數(shù)據(jù),首先計(jì)算該數(shù) 據(jù)的哈希值,并參考自身節(jié)點(diǎn)中的路由表來(lái)向具有最接近于該數(shù)據(jù)的哈希值 的值的節(jié)點(diǎn)發(fā)出搜索請(qǐng)求。如果已經(jīng)接收到搜索請(qǐng)求的節(jié)點(diǎn)沒(méi)有指示保存該 數(shù)據(jù)的位置的信息,則已經(jīng)接收到搜索請(qǐng)求的節(jié)點(diǎn)參考自身節(jié)點(diǎn)中的路由表,向具有最接近于該數(shù)據(jù)的哈希值的哈希值的節(jié)點(diǎn)發(fā)出搜索請(qǐng)求。通過(guò)重復(fù)該 操作,搜索的范圍變得更窄,并且最終可以找到指示保存該數(shù)據(jù)的位置的信 息。當(dāng)已經(jīng)獲得指示保存該數(shù)據(jù)的位置的信息時(shí),能夠基于該信息獲得該數(shù)據(jù)主體。即,在使用DHT技術(shù)構(gòu)造的覆蓋網(wǎng)絡(luò)中,可能不考慮數(shù)據(jù)主體的位置而訪問(wèn)該數(shù)據(jù)主體。如上所述,在DHT中,基于使用哈希值表示的同等節(jié)點(diǎn)間的距離來(lái)進(jìn)行 路由。因此,不需要知道IP網(wǎng)絡(luò)上提供的分段(segment )。即,能夠使用進(jìn) 行路由的DHT在IP層之上的層中構(gòu)造覆蓋網(wǎng)絡(luò)??梢詫⒏采w網(wǎng)絡(luò)上所提供的服務(wù)廣泛分類為兩類,即,由各個(gè)節(jié)點(diǎn)提供 的局部服務(wù)和整體上涉及覆蓋網(wǎng)絡(luò)的全局服務(wù)。由各個(gè)節(jié)點(diǎn)提供的局部服務(wù) 的例子包括Web服務(wù)和FTP服務(wù)。由各個(gè)節(jié)點(diǎn)提供的服務(wù)僅在節(jié)點(diǎn)存活于網(wǎng) 絡(luò)上的時(shí)間段期間可用,并且當(dāng)節(jié)點(diǎn)已經(jīng)離開(kāi)網(wǎng)絡(luò)時(shí),服務(wù)變得不可用。相反,即使當(dāng)例如節(jié)點(diǎn)已經(jīng)新加入覆蓋網(wǎng)絡(luò)或節(jié)點(diǎn)已經(jīng)離開(kāi)覆蓋網(wǎng)絡(luò)時(shí), 只要覆蓋網(wǎng)絡(luò)存在,則認(rèn)為全局服務(wù)可用。全局服務(wù)的例子包括當(dāng)新節(jié)點(diǎn)加 入覆蓋網(wǎng)絡(luò)時(shí)所使用的驗(yàn)證服務(wù)、和用于管理的節(jié)點(diǎn)列表服務(wù)和服務(wù)列表服當(dāng)提供全局服務(wù)時(shí),經(jīng)常采用一些手段以便改進(jìn)全局服務(wù)的可用性,例 如在網(wǎng)絡(luò)上提供用于提供全局服務(wù)的服務(wù)器,或預(yù)先指定一些節(jié)點(diǎn)作為類似 服務(wù)器運(yùn)作的超級(jí)節(jié)點(diǎn)。將在覆蓋網(wǎng)絡(luò)上提供服務(wù)器的方案稱為混合P2P, 并且將在覆蓋網(wǎng)絡(luò)上提供超級(jí)節(jié)點(diǎn)的方案稱為超級(jí)節(jié)點(diǎn)混合P2P。另 一方面, 將純粹僅由同等節(jié)點(diǎn)組成覆蓋網(wǎng)絡(luò)的方案稱為純(pure) P2P。日本未審查專利申請(qǐng)公開(kāi)物No.2005-196676公開(kāi)了除了對(duì)等節(jié)點(diǎn)以外還 提供了中央服務(wù)器的混合P2P系統(tǒng)。發(fā)明內(nèi)容在覆蓋網(wǎng)絡(luò)上提供服務(wù)器或超級(jí)節(jié)點(diǎn)以便可以可靠地提供全局服務(wù)的情 況下,與純P2P系統(tǒng)相比,該系統(tǒng)變得更不靈活。另外,在超級(jí)節(jié)點(diǎn)混合P2P的情況下,通常,基于節(jié)點(diǎn)的能力(CPU性 能、存儲(chǔ)器容量、網(wǎng)絡(luò)帶寬等)來(lái)指定超級(jí)節(jié)點(diǎn)。但是,例如,在由視頻會(huì) 議系統(tǒng)中使用的終端組成的網(wǎng)絡(luò)或由網(wǎng)絡(luò)攝像機(jī)組成的網(wǎng)絡(luò)的情況下,所有 節(jié)點(diǎn)的能力實(shí)質(zhì)上相同,以至于難以確定要指定那個(gè)節(jié)點(diǎn)作為超級(jí)節(jié)點(diǎn)。希望可以僅由同等節(jié)點(diǎn)自主提供全局服務(wù)。根據(jù)本發(fā)明的實(shí)施例,提供了一種覆蓋網(wǎng)絡(luò)系統(tǒng),在該系統(tǒng)中通過(guò)分布 式哈希表技術(shù)將至少 一個(gè)節(jié)點(diǎn)映射在哈希空間中,至少 一個(gè)節(jié)點(diǎn)的每個(gè)都具 有通過(guò)對(duì)自身節(jié)點(diǎn)的標(biāo)識(shí)信息進(jìn)行哈希操作而獲得的節(jié)點(diǎn)標(biāo)識(shí)符,并且在該 系統(tǒng)中提供了關(guān)于構(gòu)成覆蓋網(wǎng)絡(luò)系統(tǒng)的所有節(jié)點(diǎn)的至少一個(gè)服務(wù)。至少一個(gè) 節(jié)點(diǎn)的每個(gè)包括存儲(chǔ)單元,被配置以存儲(chǔ)表示服務(wù)的名稱的服務(wù)名和表示服務(wù)的主體的服務(wù)主體;以及控制器,被配置以便使用在哈??臻g中存在的 服務(wù)密鑰來(lái)搜索當(dāng)前服務(wù)提供者節(jié)點(diǎn)、以便在自身節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符和哈希 空間中的服務(wù)密鑰之間的距離小于當(dāng)前服務(wù)提供者節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符和在哈 希空間中的服務(wù)密鑰之間的距離時(shí)檢查是否允許自身節(jié)點(diǎn)來(lái)接管服務(wù)、以及 以便在接管被許可時(shí)調(diào)用自身節(jié)點(diǎn)中的服務(wù)主體以提供服務(wù),其中通過(guò)對(duì)服 務(wù)名進(jìn)行哈希操作而獲得服務(wù)密鑰。因此,自動(dòng)將每個(gè)服務(wù)分配給具有在哈??臻g中最接近于服務(wù)的服務(wù)密 鑰的節(jié)點(diǎn)標(biāo)識(shí)符的節(jié)點(diǎn)。根據(jù)本發(fā)明的實(shí)施例,自動(dòng)指定提供服務(wù)的節(jié)點(diǎn),使得可以僅由同等節(jié) 點(diǎn)自主提供全局服務(wù)。
圖1是示出根據(jù)本發(fā)明的實(shí)施例的視頻會(huì)議系統(tǒng)的示例配置的圖;圖2是示出本實(shí)施例中的全局服務(wù)表的示例結(jié)構(gòu)的圖;圖3是示出在本實(shí)施例中由服務(wù)提供者節(jié)點(diǎn)執(zhí)行的處理的例子的流程圖;圖4是示出在本實(shí)施例中由服務(wù)用戶執(zhí)行的處理的例子的流程圖; 圖5是示出在本實(shí)施例中在服務(wù)接管時(shí)執(zhí)行的處理的例子的流程圖; 圖6是示出在本實(shí)施例中當(dāng)節(jié)點(diǎn)加入覆蓋網(wǎng)絡(luò)時(shí)執(zhí)行的處理的例子的流 程圖;圖7是示出在本實(shí)施例中當(dāng)節(jié)點(diǎn)加入覆蓋網(wǎng)絡(luò)時(shí)執(zhí)行的處理的例子的流 程圖;圖8是示出在本實(shí)施例中當(dāng)節(jié)點(diǎn)正常離開(kāi)覆蓋網(wǎng)絡(luò)時(shí)執(zhí)行的處理的例子 的流程圖;圖9是示出當(dāng)在節(jié)點(diǎn)出現(xiàn)問(wèn)題時(shí)執(zhí)行的處理的例子的流程圖;以及圖10A到IOF是示出本實(shí)施例中的動(dòng)態(tài)服務(wù)分配的處理的例子的圖。H/太t ^fe 士 A'現(xiàn)在,將參考附圖來(lái)描述本發(fā)明的實(shí)施例。在本實(shí)施例中,根據(jù)本發(fā)明 的網(wǎng)絡(luò)系統(tǒng)被應(yīng)用于由多個(gè)視頻會(huì)議終端構(gòu)成的視頻會(huì)議系統(tǒng)。圖]是示出經(jīng)由網(wǎng)絡(luò)彼此連接的多個(gè)視頻會(huì)議終端100的圖。圖1所示的每個(gè)視頻會(huì) 議終端IOO是構(gòu)成覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn)。因此,在圖1中,被連接于網(wǎng)絡(luò)l的六 個(gè)視頻會(huì)議終端100被分別標(biāo)示為節(jié)點(diǎn)Nl到N6。在下面的描述中,當(dāng)描述 作為節(jié)點(diǎn)的視頻會(huì)議終端100的功能時(shí),視頻會(huì)議終端100將被標(biāo)示為節(jié)點(diǎn) Nn (其中n是整數(shù))。將在使用DHT來(lái)構(gòu)造覆蓋網(wǎng)絡(luò)并使用Chord作為其算 法的例子的上下文中描述該實(shí)施例。首先,將描迷視頻會(huì)議終端]OO的內(nèi)部配置的例子。圖1所示的視頻會(huì) 議終端100包括鏡頭IO和成像單元11。鏡頭IO;R包括在外部所附或內(nèi)部提 供的照相機(jī)單元中。成像單元11光電地轉(zhuǎn)換通過(guò)鏡頭10輸入的對(duì)象(object) 的光學(xué)圖像,以生成視頻信號(hào)。鏡頭IO和成像單元11捕獲視頻會(huì)議終端100 的用戶的圖像,通過(guò)成像而獲得的視頻信號(hào)經(jīng)過(guò)在信號(hào)處理器(未示出)中 的信號(hào)處理,并且經(jīng)由通信接口 (此后簡(jiǎn)稱為I/F) 12將所處理的視頻信號(hào)分 發(fā)給網(wǎng)絡(luò)1上的其他—見(jiàn)頻會(huì)議終端100。通信I/F 12是用于與網(wǎng)絡(luò)1連接的接口。通信I/F 12用于捕獲從網(wǎng)絡(luò)1 上的其他視頻會(huì)議終端100發(fā)送到該視頻會(huì)議終端100中的數(shù)據(jù)。該視頻會(huì) 議終端100還具有用于顯示經(jīng)由通信I/F 12獲得的其他視頻會(huì)議終端100的 用戶的圖像的顯示器13。例如,顯示器13由例如液晶面板組成。此外,視頻會(huì)議終端100具有麥克風(fēng)14和揚(yáng)聲器15,并且麥克風(fēng)14和 揚(yáng)聲器15與音頻處理器16連接。音頻處理器16對(duì)由麥克風(fēng)14收集的視頻 會(huì)議終端100的用戶的音頻信號(hào)執(zhí)行用于傳輸?shù)囊纛l數(shù)據(jù)處理,并將得到的 音頻信號(hào)發(fā)送給通信I/F 12。此外,音頻處理器16對(duì)經(jīng)由通信I/F 12獲得的 其他視頻會(huì)議終端100的用戶的音頻信號(hào)執(zhí)行音頻數(shù)據(jù)處理,并從揚(yáng)聲器]5 輸出得到的音頻信號(hào)。根據(jù)經(jīng)由包括按鈕、鍵盤(pán)等等在內(nèi)的操作單元17的用戶操作的輸入來(lái)執(zhí) 行上述組件的操作。通過(guò)由中央處理單元(CPU)等等組成的控制器18來(lái)控 制組件的操作??刂破?8與存儲(chǔ)器19連接。存儲(chǔ)器19存儲(chǔ)控制所需的程序等等??刂破?8讀取在存儲(chǔ)器19中所存儲(chǔ)的程序,并執(zhí)行該程序。視頻會(huì)議終端100包括由存儲(chǔ)卡、硬盤(pán)等等組成的存儲(chǔ)單元20。存儲(chǔ)單 元20可以存儲(chǔ)從網(wǎng)絡(luò)1上的其他用戶發(fā)送的數(shù)據(jù)等等。此外,存儲(chǔ)單元20 已經(jīng)預(yù)先存儲(chǔ)了路由表T和全局服務(wù)表T2。路由表T1是描述與自身節(jié)點(diǎn)相鄰的節(jié)點(diǎn)的位置信息的表,并且由例如m 行組成。在m行表的第i行上,描述在自身節(jié)點(diǎn)ID+2A(i-l)的范圍內(nèi)的節(jié)點(diǎn)的 信息。當(dāng)01=4時(shí),每個(gè)節(jié)點(diǎn)在其路由表T1中存儲(chǔ)從自身節(jié)點(diǎn)開(kāi)始的1、 2、 4 和8跳的節(jié)點(diǎn)的信息。節(jié)點(diǎn)ID是由表達(dá)式hash (X)獲得的哈希值,其中節(jié) 點(diǎn)的IP地址、標(biāo)識(shí)符等等被分配給表達(dá)式中的"X"。即,節(jié)點(diǎn)ID(標(biāo)識(shí)符) 是通過(guò)對(duì)點(diǎn)的IP地址、標(biāo)識(shí)符等等進(jìn)行哈希操作而獲得的哈希值。由于每個(gè)節(jié)點(diǎn)具有這種路由表T1,因此即使每個(gè)節(jié)點(diǎn)僅具有從自身節(jié)點(diǎn) 開(kāi)始的1、 2、 4和8跳的節(jié)點(diǎn)的信息,通過(guò)基于各個(gè)節(jié)點(diǎn)的路由表T1的信息 從節(jié)點(diǎn)到節(jié)點(diǎn)地傳送搜索請(qǐng)求,也縮小了搜索范圍,并且最終可以找到意要 的數(shù)據(jù)。全局服務(wù)表T2是描述關(guān)于在覆蓋網(wǎng)絡(luò)上提供的所有全局服務(wù)(此后也簡(jiǎn) 稱為服務(wù))的信息的表。全局服務(wù)的例子包括視頻會(huì)議終端100的驗(yàn)證服務(wù)、 允許瀏覽視頻會(huì)議終端100的列表的地址列表服務(wù)等等。稍后將詳細(xì)描述全 局服務(wù)表T2。在本實(shí)施例中,限定服務(wù)作為具有以下四個(gè)元素,月l務(wù)名 (service name )'服務(wù)主體(service body )*月良務(wù)簡(jiǎn)檔(service profile ),服務(wù)記錄數(shù)據(jù)文件服務(wù)名是覆蓋網(wǎng)絡(luò)上所提供的服務(wù)的名稱,且根據(jù)預(yù)定的命名機(jī)制、例 如以URI(統(tǒng)一資源標(biāo)識(shí)符)的形式來(lái)標(biāo)識(shí)。例如,將驗(yàn)證服務(wù)表示為 urn:abcdabcd:dht:product:service:global:authentication, 并且將地址歹ll表月良務(wù)表 示為 urn:abcdabcd:dht:product:service:global:nodelist。月l務(wù)主體是可4丸4亍的程 序,并且該程序被配置以便可以動(dòng)態(tài)地開(kāi)始或停止服務(wù)。服務(wù)簡(jiǎn)檔是以文件格式的內(nèi)容,其中,描述了用于訪問(wèn)服務(wù)的端點(diǎn)信息 (例如IP地址或URL)或API (應(yīng)用編程接口 )。服務(wù)簡(jiǎn)檔是可以根據(jù)每個(gè) 節(jié)點(diǎn)的本身環(huán)境而動(dòng)態(tài)配置的文件,并且其內(nèi)容在各個(gè)節(jié)點(diǎn)之間變化。例如,如果服務(wù)簡(jiǎn)檔的格式是服務(wù)端點(diǎn)4ttp:host:port:/path/service,則相同服務(wù)的服 務(wù)簡(jiǎn)檔在各個(gè)節(jié)點(diǎn)之間變化,例如在節(jié)點(diǎn) Nl 中的 http:〃192.168.0.1/cgi-bin/servicel.cgi 和 在 節(jié) 點(diǎn) N2 中 的 http: 192.168.1.1:8080/service/servicel.cgi。服務(wù)簡(jiǎn)檔和服務(wù)主體被存儲(chǔ)在每個(gè) 節(jié)點(diǎn)的存儲(chǔ)單元20 (參考圖1)中。服務(wù)記錄數(shù)據(jù)文件是描述當(dāng)執(zhí)行服務(wù)時(shí)出現(xiàn)的、并且將要被記錄和保存 的數(shù)據(jù)的文件。由服務(wù)主體動(dòng)態(tài)地輸出或輸入服務(wù)記錄數(shù)據(jù)文件。此外,在本實(shí)施例中,給各個(gè)定義的元素分配用于標(biāo)識(shí)的名稱,并且使 用所分配的名稱的哈希值在覆蓋網(wǎng)絡(luò)的相同哈??臻g中映射這些元素。因此, 可以在覆蓋網(wǎng)絡(luò)上的任何地方搜索并獲得由這些元素定義的服務(wù)。全局服務(wù)表T2是用于標(biāo)識(shí)的名稱和哈希值的列表。覆蓋網(wǎng)絡(luò)中的每個(gè)節(jié) 點(diǎn)具有全局服務(wù)表T2。全局服務(wù)表T2包括對(duì)應(yīng)于服務(wù)數(shù)量的多個(gè)元素定義 組,以便為覆蓋網(wǎng)絡(luò)上所提供的所有服務(wù)定義元素。如果在覆蓋網(wǎng)絡(luò)上提供 驗(yàn)證服務(wù)和地址列表服務(wù),則為驗(yàn)證服務(wù)和地址列表服務(wù)的每個(gè)定義上述元 素。圖2示出全局服務(wù)表T2的結(jié)構(gòu)的例子。全局服務(wù)表T2包括用于索引 (index )、服務(wù)名、服務(wù)密鑰、服務(wù)簡(jiǎn)檔名、服務(wù)簡(jiǎn)檔密鑰、服務(wù)簡(jiǎn)檔、月良 務(wù)主體、服務(wù)記錄數(shù)據(jù)文件名、服務(wù)記錄數(shù)據(jù)文件密鑰和服務(wù)記錄數(shù)據(jù)文件的字段。根據(jù)在全局服務(wù)表T2的行方向上計(jì)數(shù)的項(xiàng)目的數(shù)量來(lái)分配索引,并且由 1到n來(lái)表示索引。在全局服務(wù)表T2的行方向上計(jì)數(shù)的項(xiàng)目的數(shù)量根據(jù)全局 服務(wù)的數(shù)量而增加或減少。先前已經(jīng)描述了服務(wù)名,因此將省略其描述。服 務(wù)密鑰是通過(guò)對(duì)服務(wù)名進(jìn)行哈希操作而獲得的哈希值、即通過(guò)hash (service name ) 獲得的哈希值。在圖 2 中,服務(wù)名是 " um:abcd:dht:service:global:servicenamel" , 因 jt匕 通 過(guò) "hash(um:abcd:dht:service:global:servicenamel)',獲4尋月良務(wù)密4月。將服務(wù)簡(jiǎn)檔名定義為與服務(wù)名相同。服務(wù)簡(jiǎn)檔密鑰是通過(guò)對(duì)服務(wù)簡(jiǎn)檔名 進(jìn)行哈希操作而獲得的哈希值。由于服務(wù)簡(jiǎn)檔名與服務(wù)名相同,因此服務(wù)簡(jiǎn) 檔密鑰具有與服務(wù)密鑰相同的值。月良務(wù)簡(jiǎn)檔描述了到上述服務(wù)簡(jiǎn)檔的主體的路徑。由于服務(wù)簡(jiǎn)檔被存儲(chǔ)在 存儲(chǔ)單元20(參考圖1)中,因此描述存儲(chǔ)單元20中的路徑。在圖2所示的例子中,該路徑一皮描述為 '7dht/service_profile/service_profilel.xml"。 還在月l 務(wù)主體中描述去往上述服務(wù)主體的路徑。在圖2所示的例子中,該路徑被描 述為 "www/cgi-bin/servicel.cgi"。服務(wù)記錄數(shù)據(jù)文件名是服務(wù)記錄數(shù)據(jù)文件的名稱。類似于服務(wù)名,由中 曰韓URI的字符串表示服務(wù)記錄數(shù)據(jù)文件名。在圖2所示的例子中,服務(wù)記 錄H據(jù)文件名^皮描述為"um:abcd:dht:service:global:servicedatal"。月良務(wù)i己錄 數(shù)據(jù)文件名是通過(guò)對(duì)服務(wù)記錄數(shù)據(jù)文件名進(jìn)行哈希操作而獲得的哈希值,因 jt匕月良務(wù)"i己錄凄史4居文1"牛名是hash(urn:abcd:dht:service:global:servicedatal)。在月艮 務(wù)記錄數(shù)據(jù)文件中,描述了到服務(wù)記錄數(shù)據(jù)文件的主體的路徑。由于可以從服務(wù)名、服務(wù)簡(jiǎn)檔名和服務(wù)記錄數(shù)據(jù)文件名來(lái)計(jì)算服務(wù)密鑰、 服務(wù)簡(jiǎn)檔密鑰和服務(wù)記錄數(shù)據(jù)文件密鑰,因此可以每次計(jì)算服務(wù)密鑰、服務(wù) 簡(jiǎn)檔密鑰和服務(wù)記錄數(shù)據(jù)文件密鑰,而不需要預(yù)先在全局服務(wù)表T2中包括這 些項(xiàng)目。雖然每個(gè)節(jié)點(diǎn)具有相同的全局服務(wù)表T2,但是僅由一個(gè)特定節(jié)點(diǎn)來(lái)提供 每個(gè)服務(wù)。該特定節(jié)點(diǎn)指的是具有與服務(wù)密鑰距離最短的節(jié)點(diǎn)ID的節(jié)點(diǎn)。在 本實(shí)施例中,特定節(jié)點(diǎn)用作服務(wù)提供者。服務(wù)提供者滿足下列條件'服務(wù)提供者具有服務(wù)主體,并且正執(zhí)行該服務(wù)主體。,服務(wù)提供者提供服務(wù)簡(jiǎn)檔。,服務(wù)提供者準(zhǔn)備并更新服務(wù)記錄數(shù)據(jù)文件的數(shù)據(jù),并將最近的數(shù)據(jù)上傳 到覆蓋網(wǎng)絡(luò)即,雖然覆蓋網(wǎng)絡(luò)上的每個(gè)節(jié)點(diǎn)具有服務(wù)主體,但僅用作服務(wù)提供者的 節(jié)點(diǎn)執(zhí)行服務(wù)主體。因此,僅由服務(wù)提供者擁有的服務(wù)簡(jiǎn)檔有效地作為描述 訪問(wèn)正被執(zhí)行的服務(wù)的方法的服務(wù)簡(jiǎn)檔。圖3是示出由被指定作為服務(wù)提供者的節(jié)點(diǎn)執(zhí)行的服務(wù)提供處理的例子 的流程圖。稍后將描述服務(wù)提供者的指定。被指定為服務(wù)提供者的節(jié)點(diǎn)在自 身節(jié)點(diǎn)內(nèi)準(zhǔn)備服務(wù)簡(jiǎn)檔(步驟S1),并且調(diào)用被存儲(chǔ)在存儲(chǔ)單元20中的服務(wù) 主體(程序)來(lái)開(kāi)始提供服務(wù)(步驟S2)。然后,節(jié)點(diǎn)在自身節(jié)點(diǎn)內(nèi)生成服 務(wù)記錄數(shù)據(jù)文件(步驟S3)。在生成服務(wù)記錄數(shù)據(jù)文件后,該節(jié)點(diǎn)確定用于 上傳服務(wù)記錄數(shù)據(jù)文件的目標(biāo)節(jié)點(diǎn)和與目標(biāo)節(jié)點(diǎn)相鄰的節(jié)點(diǎn),并將服務(wù)記錄 數(shù)據(jù)文件保存在這些節(jié)點(diǎn)中(步驟S4)。使用表達(dá)式put(key,content)來(lái)執(zhí)行步驟S4中的上傳的目標(biāo)節(jié)點(diǎn)的確定和在目標(biāo)節(jié)點(diǎn)中文件的保存。即,通過(guò)執(zhí)行表達(dá)式put(service record data file key, service record data file),確定被映射到服務(wù)記錄數(shù)據(jù)文件密鑰(和其相鄰節(jié) 點(diǎn)),并且保存服務(wù)記錄數(shù)據(jù)文件(允許恢復(fù)文件的副本或片段)。在保存了服務(wù)記錄數(shù)據(jù)文件后,節(jié)點(diǎn)檢查是否已經(jīng)更新了自身節(jié)點(diǎn)中的 服務(wù)記錄數(shù)據(jù)文件(步驟S5)。如果還沒(méi)有更新服務(wù)記錄數(shù)據(jù)文件,則不執(zhí) 行處理。如果已經(jīng)更新了服務(wù)記錄數(shù)據(jù)文件,則處理返回到步驟S4,其中將 所更新的文件保存在更新目標(biāo)節(jié)點(diǎn)中。每次當(dāng)更新自身節(jié)點(diǎn)中的服務(wù)記錄數(shù) 據(jù)文件時(shí),執(zhí)行用于將自身節(jié)點(diǎn)中的服務(wù)記錄數(shù)據(jù)文件保存到更新目標(biāo)節(jié)點(diǎn) 的處理。服務(wù)名和服務(wù)記錄數(shù)據(jù)文件名被定義為不同的名稱。由于從不同的名稱 (數(shù)據(jù))生成的哈希值具有不同的值,因此,通過(guò)執(zhí)行上述處理,服務(wù)提供 者的節(jié)點(diǎn)和保存了服務(wù)記錄數(shù)據(jù)文件的節(jié)點(diǎn)被分發(fā)在覆蓋網(wǎng)絡(luò)上。在下面的 描述中,圖3所示的處理將被描述為"服務(wù)提供流程"。接下來(lái),將參考圖4所示的流程圖來(lái)描述由使用服務(wù)的節(jié)點(diǎn)執(zhí)行的處理 的例子。希望使用服務(wù)的節(jié)點(diǎn)首先使用自身節(jié)點(diǎn)的全局服務(wù)表T2中的服務(wù)簡(jiǎn) 檔密鑰來(lái)搜索服務(wù)提供者節(jié)點(diǎn)(步驟Sll )。使用表達(dá)式Node-lookup(key)來(lái) 執(zhí)行對(duì)服務(wù)提供者節(jié)點(diǎn)的搜索??梢酝ㄟ^(guò)分配服務(wù)筒檔密鑰作為表達(dá)式中的 "key"來(lái)找到被映射到服務(wù)簡(jiǎn)檔密鑰的節(jié)點(diǎn)。在確定服務(wù)提供者節(jié)點(diǎn)后,該節(jié)點(diǎn)基于自身節(jié)點(diǎn)的路由表T1來(lái)訪問(wèn)服務(wù) 提供者節(jié)點(diǎn),并獲得由服務(wù)提供者節(jié)點(diǎn)擁有的服務(wù)筒檔(步驟S12)。然后, 該節(jié)點(diǎn)分析該服務(wù)筒檔(步驟S13),并通過(guò)服務(wù)簡(jiǎn)檔中描述的方法來(lái)訪問(wèn)服 務(wù)以使用該服務(wù)(步驟S14)。在下面的描述中,將圖4所示的處理稱為"服 務(wù)使用流程"。下面,將參考圖5所示的流程圖來(lái)描述由從另一節(jié)點(diǎn)接管(takeover)服 務(wù)的節(jié)點(diǎn)執(zhí)行的處理的例子。新成為服務(wù)提供者的節(jié)點(diǎn)首先準(zhǔn)備服務(wù)簡(jiǎn)檔(步 驟S21)。然后,該節(jié)點(diǎn)使用在全局服務(wù)表T2中的服務(wù)記錄數(shù)據(jù)文件密鑰來(lái) 從覆蓋網(wǎng)絡(luò)獲得服務(wù)記錄數(shù)據(jù)文件(步驟S22 ),并重建該服務(wù)(步驟S23 )。 使用表達(dá)式conten,get(key)來(lái)獲得服務(wù)記錄數(shù)據(jù)文件。通過(guò)將服務(wù)記錄數(shù)據(jù) 文件密鑰分配在表達(dá)式中的"key"中,可以從被映射到服務(wù)記錄數(shù)據(jù)文件密 鑰的節(jié)點(diǎn)獲得服務(wù)記錄數(shù)據(jù)文件。在獲得服務(wù)記錄數(shù)據(jù)文件后,節(jié)點(diǎn)開(kāi)始服務(wù)主體(程序)(步驟S24)。在正提供服務(wù)的同時(shí),節(jié)點(diǎn)檢查是否已經(jīng)更新了自身節(jié)點(diǎn)中的服務(wù)記錄數(shù)據(jù) 文件(步驟S25)。如果還沒(méi)有更新服務(wù)記錄數(shù)據(jù)文件,則不執(zhí)行處理。如果 已經(jīng)更新了服務(wù)記錄數(shù)據(jù)文件,則在更新目標(biāo)節(jié)點(diǎn)中保存所更新的文件(步驟S26)。每次更新自身節(jié)點(diǎn)中的服務(wù)記錄數(shù)據(jù)文件時(shí),執(zhí)行用于將自身節(jié)點(diǎn) 中的服務(wù)記錄數(shù)據(jù)文件保存到更新的目標(biāo)節(jié)點(diǎn)的處理。在下面的描述中,將 圖5所示的處理稱為"服務(wù)接管流程"。接下來(lái),將參考圖6和7所示的流程圖來(lái)描述當(dāng)新節(jié)點(diǎn)加入覆蓋網(wǎng)絡(luò)時(shí) 所執(zhí)行的處理的例子。圖6示出在新加入的節(jié)點(diǎn)是構(gòu)成覆蓋網(wǎng)絡(luò)的第一個(gè)節(jié) 點(diǎn)的例子。該加入覆蓋網(wǎng)絡(luò)的第 一個(gè)節(jié)點(diǎn)對(duì)自身節(jié)點(diǎn)的全局服務(wù)表T2中描述 的每個(gè)服務(wù)執(zhí)行服務(wù)提供流程(步驟S31)。即,該節(jié)點(diǎn)用作用于全局服務(wù)表 T2中描述的所有服務(wù)的服務(wù)提供者。圖7示出當(dāng)新節(jié)點(diǎn)加入已經(jīng)提供了一些服務(wù)的覆蓋網(wǎng)絡(luò)時(shí)所執(zhí)行的處理 的例子。新加入的節(jié)點(diǎn)計(jì)算自身節(jié)點(diǎn)ID與全局服務(wù)表T2中描述的每個(gè)服務(wù) 的服務(wù)密鑰之間的距離Dl (步驟S31)。然后,該節(jié)點(diǎn)使用對(duì)應(yīng)的服務(wù)密鑰 來(lái)搜索每個(gè)服務(wù)的服務(wù)提供者節(jié)點(diǎn)(步驟S32)。在搜索每個(gè)服務(wù)的服務(wù)提供 者節(jié)點(diǎn)后,該節(jié)點(diǎn)計(jì)算服務(wù)提供者節(jié)點(diǎn)的節(jié)點(diǎn)ID與全局服務(wù)表中的相關(guān)服務(wù) 密鑰之間的距離D2 (步驟S33 )。然后,距離Dl與距離D2相比較(步驟S34)。如果距離D1大于或等于 距離D2 (D1》D2),則自身節(jié)點(diǎn)與服務(wù)密鑰的距離比當(dāng)前服務(wù)提供者的大或 與其相同,因此,新加入的節(jié)點(diǎn)不接管服務(wù),并且立即退出處理。如果距離 Dl小于距離D2(DKD2),則自身節(jié)點(diǎn)到服務(wù)密鑰的距離比現(xiàn)有服務(wù)提供者節(jié) 點(diǎn)小。因此,為了成為服務(wù)提供者,節(jié)點(diǎn)向當(dāng)前服務(wù)提供者節(jié)點(diǎn)發(fā)送服務(wù)接 管許可請(qǐng)求(步驟S35)。當(dāng)接收到服務(wù)接管許可請(qǐng)求時(shí)(步驟S36),當(dāng)前服務(wù)提供者節(jié)點(diǎn)確定是 否接受該請(qǐng)求(步驟S37)。如果要拒絕該請(qǐng)求,則當(dāng)前服務(wù)提供者節(jié)點(diǎn)向位 于請(qǐng)求的源的新加入的節(jié)點(diǎn)發(fā)送響應(yīng)以及拒絕的理由(步驟S38)。如果要接 受該請(qǐng)求,則當(dāng)前服務(wù)提供者節(jié)點(diǎn)向位于請(qǐng)求的源的新加入的節(jié)點(diǎn)發(fā)送響應(yīng) (步驟S39 )。當(dāng)從當(dāng)前服務(wù)提供者節(jié)點(diǎn)接收到響應(yīng)時(shí)(步驟S40),基于響應(yīng)的內(nèi)容, 新加入的節(jié)點(diǎn)確定是否已經(jīng)許可了服務(wù)的接管(步驟S41)。如果已經(jīng)拒絕了 服務(wù)的接管,則新加入的節(jié)點(diǎn)立即退出處理。如果已經(jīng)許可了服務(wù)的接管,則新加入的節(jié)點(diǎn)執(zhí)行服務(wù)接管流程(步驟S42),并在執(zhí)行服務(wù)接管流程完成 后向前任服務(wù)提供者節(jié)點(diǎn)發(fā)送完成通知(步驟S43 )。當(dāng)接收到完成通知時(shí)(步 驟S44 ),前任服務(wù)提供者節(jié)點(diǎn)停止正提供的服務(wù)(步驟S45 )。通過(guò)上述處理,與服務(wù)密鑰距離最小的節(jié)點(diǎn)總是用作服務(wù)的服務(wù)提供者。 接下來(lái),將參考圖8和9所示的流程圖來(lái)描述當(dāng)節(jié)點(diǎn)離開(kāi)覆蓋網(wǎng)絡(luò)時(shí)所 執(zhí)行的處理的例子。圖8示出節(jié)點(diǎn)正常離開(kāi)覆蓋網(wǎng)絡(luò)的處理的例子。圖9示 出節(jié)點(diǎn)由于問(wèn)題等等突然離開(kāi)覆蓋網(wǎng)絡(luò)的處理的例子。參考圖8,將要離開(kāi) 覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn)首先確定自身節(jié)點(diǎn)是否是服務(wù)提供者(步驟S51)。如果自身 節(jié)點(diǎn)不是服務(wù)提供者,則節(jié)點(diǎn)立即離開(kāi)覆蓋網(wǎng)絡(luò)(步驟S60)。如果離開(kāi)的節(jié)點(diǎn)是服務(wù)提供者,則離開(kāi)的節(jié)點(diǎn)參考自身節(jié)點(diǎn)中的路由表 Tl來(lái)選擇與服務(wù)密鑰的距離在自身節(jié)點(diǎn)之后第二小的節(jié)點(diǎn)作為服務(wù)傳送目標(biāo) 節(jié)點(diǎn)(步驟S52)。然后,離開(kāi)的節(jié)點(diǎn)向服務(wù)傳送目標(biāo)節(jié)點(diǎn)發(fā)送服務(wù)移交請(qǐng)求 (步驟S5 3)。當(dāng)從離開(kāi)的節(jié)點(diǎn)接收到服務(wù)移交請(qǐng)求時(shí)(步驟S54),服務(wù)傳送目標(biāo)節(jié)點(diǎn) 無(wú)條件地接受服務(wù)移交請(qǐng)求(步驟S55 ),并執(zhí)行服務(wù)接管流程(步驟S56 )。 當(dāng)完成服務(wù)接管流程時(shí),服務(wù)傳送目標(biāo)節(jié)點(diǎn)向離開(kāi)的節(jié)點(diǎn)發(fā)送服務(wù)接管完成 通知(步驟S57 )。當(dāng)從服務(wù)傳送目標(biāo)節(jié)點(diǎn)接收到服務(wù)接管通知時(shí)(步驟S58 ), 離開(kāi)的節(jié)點(diǎn)停止正執(zhí)行的服務(wù)(步驟S59),并離開(kāi)覆蓋網(wǎng)絡(luò)(步驟S60)。接下來(lái),將參考圖9所示的流程圖來(lái)描述當(dāng)節(jié)點(diǎn)由于問(wèn)題等等突然離開(kāi) 覆蓋網(wǎng)絡(luò)時(shí)所執(zhí)行的處理的例子。構(gòu)成覆蓋網(wǎng)絡(luò)的每個(gè)節(jié)點(diǎn)定期向相鄰節(jié)點(diǎn) 發(fā)送ping或保持存活信號(hào),以便如果某節(jié)點(diǎn)突然離開(kāi)覆蓋網(wǎng)絡(luò)時(shí),相鄰節(jié)點(diǎn) 能夠檢測(cè)到該狀況。因此,如果在某節(jié)點(diǎn)出現(xiàn)問(wèn)題,則首先采取行動(dòng)的節(jié)點(diǎn) 是已經(jīng)檢測(cè)到問(wèn)題的相鄰節(jié)點(diǎn)。已經(jīng)檢測(cè)到在相鄰節(jié)點(diǎn)的問(wèn)題的節(jié)點(diǎn)使用自身節(jié)點(diǎn)的全局服務(wù)表T2中 的所有服務(wù)密鑰來(lái)搜索被映射到服務(wù)密鑰的節(jié)點(diǎn)(步驟S71 )。然后,節(jié)點(diǎn)向 被映射到服務(wù)密鑰的所有節(jié)點(diǎn)發(fā)送關(guān)于服務(wù)的可用性(服務(wù)是否正被執(zhí)行) 的詢問(wèn)(步驟S72)。當(dāng)接收到詢問(wèn)時(shí)(步驟S73 ),已經(jīng)接收到詢問(wèn)的每個(gè)節(jié)點(diǎn)確定在自身節(jié) 點(diǎn)是否正執(zhí)行服務(wù)(步驟S74)。如果正執(zhí)行服務(wù),則該節(jié)點(diǎn)向已經(jīng)檢測(cè)到問(wèn) 題的節(jié)點(diǎn)發(fā)送指示正執(zhí)行服務(wù)的響應(yīng)(步驟S75),并然后退出處理。如果沒(méi) 在服務(wù),則該節(jié)點(diǎn)向已經(jīng)檢測(cè)到問(wèn)題的節(jié)點(diǎn)發(fā)送指示沒(méi)在執(zhí)行服務(wù)的響應(yīng)(步驟S76),并執(zhí)行服務(wù)接管流程(步驟S77)。當(dāng)從已經(jīng)接收到詢問(wèn)的節(jié)點(diǎn)接收 到響應(yīng)時(shí)(步驟S78),已經(jīng)檢測(cè)到問(wèn)題的節(jié)點(diǎn)立即退出處理。接下來(lái),將參考圖IOA到IOF來(lái)描述如上所述的當(dāng)節(jié)點(diǎn)加入或離開(kāi)覆蓋 網(wǎng)絡(luò)時(shí)執(zhí)行的動(dòng)態(tài)服務(wù)分配的具體例子。圖IOA到IOF示出在哈??臻g中排 列節(jié)點(diǎn)的狀態(tài)。由于在使用Chord算法的例子的上下文中描述本實(shí)施例,因 此將哈??臻g表示為圓圈,并且節(jié)點(diǎn)被排列以便節(jié)點(diǎn)ID在順時(shí)針?lè)较蛏献?大。在Chord算法中,使用函數(shù)next (k)來(lái)在哈??臻g中映射節(jié)點(diǎn)。關(guān)于密 鑰k,該函數(shù)定義以順時(shí)針?lè)较蚴紫扔龅降墓?jié)點(diǎn)與密鑰k的距離最小。在圖 10A到10F中,假設(shè)在覆蓋網(wǎng)絡(luò)上正提供服務(wù)Sl,并且服務(wù)Sl具有服務(wù)密 鑰4。圖IOA示出第一個(gè)節(jié)點(diǎn)已經(jīng)加入覆蓋網(wǎng)絡(luò)的狀態(tài)。參考圖IOA,已經(jīng)首 先加入覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn)是節(jié)點(diǎn)Nl,且節(jié)點(diǎn)Nl用作服務(wù)Sl的服務(wù)提供者。 此時(shí),實(shí)際上,執(zhí)行參考圖6描述的流程。在圖10A中,由虛線指示節(jié)點(diǎn)N4。 這指示了如果節(jié)點(diǎn)N4存在于該位置,則next(4)^節(jié)點(diǎn)N4,指示了節(jié)點(diǎn)N4 的ID最接近于服務(wù)S1的服務(wù)密鑰4。即,如果節(jié)點(diǎn)N4存在,則由節(jié)點(diǎn)N4 提供服務(wù)S1。圖10B示出除了節(jié)點(diǎn)N1以外、節(jié)點(diǎn)N2和N3已經(jīng)新加入覆蓋網(wǎng)絡(luò)的狀 態(tài)。即使當(dāng)節(jié)點(diǎn)N2和N3已經(jīng)新加入覆蓋網(wǎng)絡(luò)時(shí),next(4)仍然是節(jié)點(diǎn)Nl, 并且節(jié)點(diǎn)N1仍然最接近于服務(wù)密鑰,因此不發(fā)生服務(wù)S1的接管。如10C示出節(jié)點(diǎn)N6新加入覆蓋網(wǎng)絡(luò)的狀態(tài)。當(dāng)節(jié)點(diǎn)N6已經(jīng)加入覆蓋網(wǎng) 絡(luò)時(shí),節(jié)點(diǎn)N6最接近于服務(wù)密鑰4。因此,發(fā)生從節(jié)點(diǎn)Nl到節(jié)點(diǎn)N6的服 務(wù)S1的接管。在這種情況下,執(zhí)行圖7所示的處理。圖10D示出節(jié)點(diǎn)N5新加入覆蓋網(wǎng)絡(luò)的狀態(tài),使得next(4)二節(jié)點(diǎn)N5。在 這種情況下,發(fā)生從節(jié)點(diǎn)N6到節(jié)點(diǎn)N5的服務(wù)S1的接管。圖10E示出節(jié)點(diǎn) N5已經(jīng)正常離開(kāi)覆蓋網(wǎng)絡(luò)的狀態(tài)。即,執(zhí)行圖8所示的處理。因此,已經(jīng)由 節(jié)點(diǎn)N5提供的服務(wù)Sl被排在節(jié)點(diǎn)N5之后第二最接近于服務(wù)密鑰4的節(jié)點(diǎn) N6接管。如圖IOF所示,如果節(jié)點(diǎn)N6由于問(wèn)題等等突然離開(kāi)覆蓋網(wǎng)絡(luò),則節(jié)點(diǎn) Nl和節(jié)點(diǎn)N3檢測(cè)到狀況,并成為問(wèn)題檢測(cè)節(jié)點(diǎn),并執(zhí)行參考圖9描述的處 理。在圖9所示的步驟S72中被映射到服務(wù)密鑰的節(jié)點(diǎn)是圖IOF所示的情況下的節(jié)點(diǎn)Nl,因此,節(jié)點(diǎn)N1執(zhí)行服務(wù)接管流程(圖9所示的步驟S77),從 而將服務(wù)S1移交給節(jié)點(diǎn)N1。如上所述,給在覆蓋網(wǎng)絡(luò)上提供的每個(gè)服務(wù)分配用于標(biāo)識(shí)的名稱(服務(wù) 名),并且將被映射到通過(guò)對(duì)服務(wù)名進(jìn)行哈希操作而獲得的哈希值的節(jié)點(diǎn)用作 服務(wù)提供者,以便將服務(wù)動(dòng)態(tài)分配給節(jié)點(diǎn)。此外,分配不同的名稱作為服務(wù)名和服務(wù)記錄數(shù)據(jù)文件名,并且使用通 過(guò)對(duì)服務(wù)名進(jìn)行哈希操作而獲得的服務(wù)密鑰和通過(guò)對(duì)服務(wù)記錄數(shù)據(jù)文件名進(jìn) 行哈希操作而獲得的服務(wù)記錄數(shù)據(jù)文件名,在覆蓋網(wǎng)絡(luò)上分配服務(wù)名和服務(wù) 記錄數(shù)據(jù)文件名。因此,在網(wǎng)絡(luò)上分發(fā)被映射到服務(wù)密鑰的服務(wù)提供者和被 映射到服務(wù)記錄數(shù)據(jù)文件密鑰的節(jié)點(diǎn)。即,在不同于服務(wù)提供者節(jié)點(diǎn)的節(jié)點(diǎn)處記錄服務(wù)記錄數(shù)據(jù)文件。因此, 即使例如由于服務(wù)提供者節(jié)點(diǎn)離開(kāi)覆蓋網(wǎng)絡(luò)而改變了服務(wù)提供者,已經(jīng)接管 了服務(wù)的節(jié)點(diǎn)也可以使用被存儲(chǔ)在覆蓋網(wǎng)絡(luò)上的服務(wù)記錄數(shù)據(jù)文件來(lái)立即繼 續(xù)服務(wù)。即,可以在覆蓋網(wǎng)絡(luò)中穩(wěn)定而不中斷地提供全局服務(wù)。此外,由于構(gòu)成覆蓋網(wǎng)絡(luò)的每個(gè)節(jié)點(diǎn)具有服務(wù)主體,因此即使當(dāng)節(jié)點(diǎn)已 經(jīng)從前任服務(wù)提供者節(jié)點(diǎn)接管了服務(wù)時(shí),節(jié)點(diǎn)也可以立即開(kāi)始服務(wù)而不需要 傳送服務(wù)主體。此外,即使當(dāng)在服務(wù)提供者節(jié)點(diǎn)處發(fā)生問(wèn)題等等以至于服務(wù)提供者節(jié)點(diǎn) 變得不能提供服務(wù)時(shí),已經(jīng)檢測(cè)到問(wèn)題的相鄰節(jié)點(diǎn)使用服務(wù)密鑰搜索被映射 到服務(wù)密鑰的節(jié)點(diǎn),并使得該節(jié)點(diǎn)執(zhí)行服務(wù)接管處理。因此,防止了在覆蓋 網(wǎng)絡(luò)上提供的全局服務(wù)的中斷。如上所述,由于如此配置覆蓋網(wǎng)絡(luò)以至于可以^f又由同等節(jié)點(diǎn)無(wú)中斷地提 供全局服務(wù),因此不需要提供服務(wù)器或超級(jí)節(jié)點(diǎn)。這有助于構(gòu)造靈活的系統(tǒng)。此外,由于基于通過(guò)對(duì)服務(wù)的服務(wù)名進(jìn)行哈希操作而獲得的服務(wù)密鑰來(lái) 將服務(wù)分配給節(jié)點(diǎn),因此公平且相等地將服務(wù)分配給構(gòu)成覆蓋網(wǎng)絡(luò)的所有節(jié) 點(diǎn)。因此,防止了特定節(jié)點(diǎn)的負(fù)載的集中。已經(jīng)在使用Chord作為DHT算法的例子的上下文中描述了實(shí)施例,不局 限于例子,本發(fā)明可以被應(yīng)用于使用諸如CAN或Pastry的其他算法的系統(tǒng)。此外,雖然已經(jīng)在應(yīng)用于視頻會(huì)議系統(tǒng)的例子的上下文中描述了實(shí)施例, 但本發(fā)明還可以被應(yīng)用于構(gòu)成網(wǎng)絡(luò)的終端具有實(shí)質(zhì)上相同的容量的系統(tǒng),例 如由網(wǎng)絡(luò)攝像機(jī)構(gòu)成的監(jiān)視系統(tǒng)。當(dāng)將本發(fā)明應(yīng)用于監(jiān)視系統(tǒng)時(shí),可以提供例如終端驗(yàn)證服務(wù)、終端列表獲取服務(wù)或事件信息獲取服務(wù)。本領(lǐng)域技術(shù)人員應(yīng)該理解,在所附權(quán)利要求或其等同物的范圍內(nèi),可以 依賴于設(shè)計(jì)需求和其他因素進(jìn)行各種修改、合并、子合并和替換。相關(guān)申請(qǐng)的交叉引用本發(fā)明包含涉及2007年2月21日在日本專利局提交的日本專利申請(qǐng) JP2007-04]499的主題,其全部?jī)?nèi)容被引用合并于此。
權(quán)利要求
1.一種覆蓋網(wǎng)絡(luò)系統(tǒng),其中通過(guò)分布式哈希表技術(shù)將至少一個(gè)節(jié)點(diǎn)映射在哈??臻g中,所述至少一個(gè)節(jié)點(diǎn)的每個(gè)都具有通過(guò)對(duì)自身節(jié)點(diǎn)的標(biāo)識(shí)信息進(jìn)行哈希操作而獲得的節(jié)點(diǎn)標(biāo)識(shí)符,并且其中提供了關(guān)于構(gòu)成所述覆蓋網(wǎng)絡(luò)系統(tǒng)的所有節(jié)點(diǎn)的至少一個(gè)服務(wù),所述至少一個(gè)節(jié)點(diǎn)的每個(gè)包括存儲(chǔ)單元,被配置以存儲(chǔ)表示所述服務(wù)的名稱的服務(wù)名和表示所述服務(wù)的主體的服務(wù)主體;以及控制器,被配置以便使用存在于所述哈??臻g中的服務(wù)密鑰來(lái)搜索當(dāng)前服務(wù)提供者節(jié)點(diǎn)、以便在所述自身節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符和所述哈??臻g中的所述服務(wù)密鑰之間的距離小于所述當(dāng)前服務(wù)提供者節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符和所述哈希空間中的所述服務(wù)密鑰之間的距離時(shí)檢查是否允許所述自身節(jié)點(diǎn)來(lái)接管所述服務(wù)、以及以便在所述接管時(shí)被許可時(shí)調(diào)用在所述自身節(jié)點(diǎn)中的所述服務(wù)主體以提供所述服務(wù),其中通過(guò)對(duì)所述服務(wù)名進(jìn)行哈希操作而獲得所述服務(wù)密鑰。
2. 根據(jù)權(quán)利要求1所述的覆蓋網(wǎng)絡(luò)系統(tǒng),其中,所述節(jié)點(diǎn)的存儲(chǔ)單元存儲(chǔ)服務(wù)記錄數(shù)據(jù)文件和服務(wù)記錄數(shù)據(jù)文件 名,所述服務(wù)記錄數(shù)據(jù)文件是用于執(zhí)行所述服務(wù)的數(shù)據(jù),并且所述服務(wù)記錄 數(shù)據(jù)文件名是所述服務(wù)記錄數(shù)據(jù)文件的名稱,以及其中,當(dāng)所述自身節(jié)點(diǎn)開(kāi)始提供所述服務(wù)時(shí),所述節(jié)點(diǎn)的控制器使用服 務(wù)記錄數(shù)據(jù)文件密鑰來(lái)搜索被映射到該服務(wù)記錄數(shù)據(jù)文件密鑰的節(jié)點(diǎn),并將 所述服務(wù)記錄數(shù)據(jù)文件的副本傳送到通過(guò)所述搜索而找到的節(jié)點(diǎn),所述服務(wù) 記錄數(shù)據(jù)文件密鑰是通過(guò)對(duì)所述服務(wù)記錄數(shù)據(jù)文件名進(jìn)行哈希操作而獲得 的。
3. 根據(jù)權(quán)利要求1所述的覆蓋網(wǎng)絡(luò)系統(tǒng),其中,所述節(jié)點(diǎn)的存儲(chǔ)單元存儲(chǔ)服務(wù)簡(jiǎn)檔和服務(wù)簡(jiǎn)檔名,所述服務(wù)簡(jiǎn)檔 描述了訪問(wèn)所述服務(wù)主體的方法,并且所述服務(wù)簡(jiǎn)檔名是所述服務(wù)簡(jiǎn)檔的名 稱,以及其中,當(dāng)所述控制器開(kāi)始所述服務(wù)時(shí),所述節(jié)點(diǎn)的控制器提供所述服務(wù) 簡(jiǎn)檔。
4. 根據(jù)權(quán)利要求3所述的覆蓋網(wǎng)絡(luò)系統(tǒng),其中,當(dāng)所述節(jié)點(diǎn)的控制器使用所述服務(wù)時(shí),所述控制器使用所述服務(wù) 密鑰來(lái)搜索被映射到所述服務(wù)密鑰的節(jié)點(diǎn),并從通過(guò)所述搜索找到的節(jié)點(diǎn)獲 得所述服務(wù)簡(jiǎn)檔,并訪問(wèn)所述服務(wù)主體。
5. 根據(jù)權(quán)利要求1所述的覆蓋網(wǎng)絡(luò)系統(tǒng),其中當(dāng)所述自身節(jié)點(diǎn)正提供服務(wù)并且所述自身節(jié)點(diǎn)離開(kāi)所述覆蓋網(wǎng)絡(luò) 時(shí),所述節(jié)點(diǎn)的控制器搜索在所述節(jié)點(diǎn)標(biāo)識(shí)符與在所述哈??臻g中的所述服 務(wù)密鑰之間的距離在與所述自身節(jié)點(diǎn)相鄰的節(jié)點(diǎn)中排在所述自身節(jié)點(diǎn)之后第 二小的節(jié)點(diǎn),并向通過(guò)所述搜索找到的節(jié)點(diǎn)發(fā)送服務(wù)移交請(qǐng)求。
6. 根據(jù)權(quán)利要求5所述的覆蓋網(wǎng)絡(luò),其中當(dāng)接收到從另一節(jié)點(diǎn)發(fā)送的所述服務(wù)移交請(qǐng)求時(shí),所述節(jié)點(diǎn)的控制 器使用所述服務(wù)記錄數(shù)據(jù)文件密鑰來(lái)搜索在其中存儲(chǔ)了所述服務(wù)記錄數(shù)據(jù)文 件的節(jié)點(diǎn),從通過(guò)所述搜索找到的節(jié)點(diǎn)獲得所述服務(wù)記錄數(shù)據(jù)文件,并調(diào)用 所述服務(wù)主體以開(kāi)始提供所述服務(wù)。
7. 根據(jù)權(quán)利要求2所述的覆蓋網(wǎng)絡(luò)系統(tǒng),其中,當(dāng)檢測(cè)到在相鄰節(jié)點(diǎn)的問(wèn)題時(shí),所述節(jié)點(diǎn)的控制器使用通過(guò)對(duì)所 有服務(wù)的服務(wù)名進(jìn)行哈希操作而獲得的所有服務(wù)密鑰來(lái)搜索被映射到這些服 務(wù)密鑰的節(jié)點(diǎn),并向通過(guò)所述搜索找到的節(jié)點(diǎn)發(fā)送關(guān)于所述節(jié)點(diǎn)是否正在提 供所述服務(wù)的確認(rèn)請(qǐng)求。
8. 根據(jù)權(quán)利要求7所述的覆蓋網(wǎng)絡(luò)系統(tǒng),其中當(dāng)接收到從另一節(jié)點(diǎn)發(fā)送的關(guān)于所述節(jié)點(diǎn)是否正在提供所述服務(wù)的 確認(rèn)請(qǐng)求時(shí),所述節(jié)點(diǎn)的控制器檢查是否已經(jīng)在所述自身節(jié)點(diǎn)處調(diào)用了所述 服務(wù)主體,并且如果還沒(méi)有調(diào)用所述服務(wù)主體,則所述控制器使用所述服務(wù) 記錄數(shù)據(jù)文件密鑰來(lái)搜索存儲(chǔ)了所述服務(wù)記錄數(shù)據(jù)文件的節(jié)點(diǎn),從通過(guò)所述 搜索找到的節(jié)點(diǎn)獲得所述服務(wù)記錄數(shù)據(jù)文件,并調(diào)用所述服務(wù)主體以開(kāi)始提 供所述服務(wù)。
9. 一種在覆蓋網(wǎng)絡(luò)系統(tǒng)中使用的服務(wù)提供程序,在所述覆蓋網(wǎng)絡(luò)系統(tǒng)中, 通過(guò)分布式哈希表技術(shù)將至少一個(gè)節(jié)點(diǎn)映射在哈??臻g中,所述至少一個(gè)節(jié) 點(diǎn)的每個(gè)都具有通過(guò)對(duì)所述自身節(jié)點(diǎn)的標(biāo)識(shí)信息進(jìn)行哈希操作而獲得的節(jié)點(diǎn)標(biāo)識(shí)符,并且在所述覆蓋網(wǎng)絡(luò)系統(tǒng)中提供了關(guān)于構(gòu)成所述覆蓋網(wǎng)絡(luò)系統(tǒng)的所 有節(jié)點(diǎn)的至少 一個(gè)服務(wù),所述服務(wù)提供程序包括步驟使得所述節(jié)點(diǎn)存儲(chǔ)表示所述服務(wù)的名稱的服務(wù)名和表示所述服務(wù)的主體的服務(wù)主體;以及使得所述節(jié)點(diǎn)使用存在于所述哈??臻g中的服務(wù)密鑰來(lái)搜索當(dāng)前服務(wù)提 供者節(jié)點(diǎn),以便在所述自身節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符和在哈??臻g中的所述服務(wù)密 鑰之間的距離小于所述當(dāng)前服務(wù)提供者節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符和在所述哈??臻g 中的所述服務(wù)密鑰之間的距離時(shí)檢查是否允許所述自身節(jié)點(diǎn)來(lái)接管所述服 務(wù),以及以便在所述接管被許可時(shí)調(diào)用在所述自身節(jié)點(diǎn)中的所述服務(wù)主體以
10. 根據(jù)權(quán)利要求9所述的服務(wù)提供程序,其中所述節(jié)點(diǎn)存儲(chǔ)服務(wù)記錄數(shù)據(jù)文件和服務(wù)記錄數(shù)據(jù)文件名,所述服務(wù) 記錄數(shù)據(jù)文件是用于執(zhí)行所述服務(wù)的數(shù)據(jù),并且所述服務(wù)記錄數(shù)據(jù)文件名是 所述服務(wù)記錄數(shù)據(jù)文件的名稱,以及其中當(dāng)所述自身節(jié)點(diǎn)開(kāi)始提供所述服務(wù)時(shí),所述節(jié)點(diǎn)使用服務(wù)記錄數(shù)據(jù) 文件密鑰來(lái)搜索被映射到所述服務(wù)記錄數(shù)據(jù)文件密鑰的節(jié)點(diǎn),并將所述服務(wù) 記錄數(shù)據(jù)文件的副本傳送到通過(guò)所述搜索找到的節(jié)點(diǎn),所述服務(wù)記錄數(shù)據(jù)文 件密鑰是通過(guò)對(duì)所述服務(wù)記錄數(shù)據(jù)文件名進(jìn)行哈希操作而獲得的。
11. 根據(jù)權(quán)利要求9所述的服務(wù)提供程序,其中所述節(jié)點(diǎn)存儲(chǔ)服務(wù)簡(jiǎn)檔和服務(wù)簡(jiǎn)檔名,所述服務(wù)簡(jiǎn)檔描述了訪問(wèn)所 述服務(wù)主體的方法,并且所述服務(wù)簡(jiǎn)檔名是所述服務(wù)簡(jiǎn)檔的名稱,以及 其中當(dāng)所述節(jié)點(diǎn)開(kāi)始所述服務(wù)時(shí),所述節(jié)點(diǎn)提供所述服務(wù)簡(jiǎn)檔。
12. 根據(jù)權(quán)利要求11所述的服務(wù)提供程序,其中當(dāng)所述節(jié)點(diǎn)使用所述服務(wù)時(shí),所述節(jié)點(diǎn)使用所述服務(wù)密鑰來(lái)搜索被 映射到所述服務(wù)密鑰的節(jié)點(diǎn),并從通過(guò)所述搜索找到的節(jié)點(diǎn)獲得所述服務(wù)簡(jiǎn) 檔,并訪問(wèn)所述服務(wù)主體。
13. 根據(jù)權(quán)利要求9所述的服務(wù)提供程序,其中當(dāng)所述自身節(jié)點(diǎn)正在提供所述服務(wù)并且所述自身節(jié)點(diǎn)離開(kāi)所述覆蓋 網(wǎng)絡(luò)時(shí),所述節(jié)點(diǎn)搜索在所述節(jié)點(diǎn)標(biāo)識(shí)符與在所述哈??臻g中的所述服務(wù)密 鑰之間的距離在與所述自身節(jié)點(diǎn)相鄰的節(jié)點(diǎn)中排在所述自身節(jié)點(diǎn)之后第二小 的節(jié)點(diǎn),并向通過(guò)所述搜索找到的節(jié)點(diǎn)發(fā)送服務(wù)移交請(qǐng)求。
14. 根據(jù)權(quán)利要求13所述的服務(wù)提供程序,其中當(dāng)接收到從另一節(jié)點(diǎn)發(fā)送的所述服務(wù)移交請(qǐng)求時(shí),所述節(jié)點(diǎn)使用所 述服務(wù)記錄數(shù)據(jù)文件密鑰來(lái)搜索存儲(chǔ)了所述服務(wù)記錄數(shù)據(jù)文件的節(jié)點(diǎn),從通過(guò)所述搜索找到的節(jié)點(diǎn)獲得所述服務(wù)記錄數(shù)據(jù)文件,并調(diào)用所述服務(wù)主體以 開(kāi)始提供所述服務(wù)。
15. 根據(jù)權(quán)利要求IO所述的服務(wù)提供程序,其中,當(dāng)檢測(cè)到在相鄰節(jié)點(diǎn)的問(wèn)題時(shí),所述節(jié)點(diǎn)使用通過(guò)對(duì)所有服務(wù)的 服務(wù)名進(jìn)行哈希操作而獲得的所有服務(wù)密鑰來(lái)搜索被映射到服務(wù)密鑰的節(jié) 點(diǎn),并向通過(guò)所述搜索找到的節(jié)點(diǎn)發(fā)送關(guān)于所述節(jié)點(diǎn)是否正在提供所述服務(wù)的確認(rèn)請(qǐng)求。
16. 根據(jù)權(quán)利要求15所述的服務(wù)提供程序,其中當(dāng)接收到從另一節(jié)點(diǎn)發(fā)送的關(guān)于所述節(jié)點(diǎn)是否正在提供所述服務(wù)的 確認(rèn)請(qǐng)求時(shí),所述節(jié)點(diǎn)檢查是否已經(jīng)在所述自身節(jié)點(diǎn)處調(diào)用了所述服務(wù)主體, 并且如果還沒(méi)有調(diào)用所述服務(wù)主體,則所述節(jié)點(diǎn)使用所述服務(wù)記錄數(shù)據(jù)文件 密鑰來(lái)搜索存儲(chǔ)了所述服務(wù)記錄數(shù)據(jù)文件的節(jié)點(diǎn),從通過(guò)所述搜索找到的節(jié) 點(diǎn)獲得所述服務(wù)記錄數(shù)據(jù)文件,并調(diào)用所述服務(wù)主體以開(kāi)始提供所述服務(wù)。
全文摘要
在如下覆蓋網(wǎng)絡(luò)系統(tǒng)中,提供了關(guān)于所有節(jié)點(diǎn)的至少一個(gè)服務(wù)其中通過(guò)分布式哈希表技術(shù)將至少一個(gè)節(jié)點(diǎn)映射在哈希空間中,每個(gè)節(jié)點(diǎn)具有通過(guò)對(duì)自身節(jié)點(diǎn)的標(biāo)識(shí)信息進(jìn)行哈希操作而獲得的節(jié)點(diǎn)標(biāo)識(shí)符。每個(gè)節(jié)點(diǎn)包括存儲(chǔ)單元和控制器。存儲(chǔ)單元存儲(chǔ)服務(wù)的服務(wù)名和服務(wù)主體。控制器使用通過(guò)對(duì)服務(wù)名進(jìn)行哈希操作而獲得的服務(wù)密鑰來(lái)搜索當(dāng)前服務(wù)提供者節(jié)點(diǎn),如果自身節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符與服務(wù)密鑰之間的距離小于當(dāng)前服務(wù)提供者節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符與服務(wù)密鑰之間的距離、則檢查是否允許自身節(jié)點(diǎn)來(lái)接管服務(wù),以及如果接管被許可、則調(diào)用服務(wù)主體以提供服務(wù)。
文檔編號(hào)H04L29/08GK101252601SQ20081007408
公開(kāi)日2008年8月27日 申請(qǐng)日期2008年2月21日 優(yōu)先權(quán)日2007年2月21日
發(fā)明者王宏剛 申請(qǐng)人:索尼株式會(huì)社