專利名稱:動(dòng)態(tài)對(duì)等網(wǎng)絡(luò)環(huán)境中的互斥技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及一種對(duì)等網(wǎng)絡(luò),更特別地涉及一種動(dòng)態(tài)對(duì)等網(wǎng)絡(luò)環(huán)境中的互斥技術(shù)。
背景技術(shù):
對(duì)等網(wǎng)絡(luò)最近越來(lái)越引起學(xué)術(shù)界和商業(yè)界的關(guān)注。對(duì)等網(wǎng)絡(luò)提供一些理想的特征,例如,適應(yīng),自我組織,負(fù)載平衡,容錯(cuò),低成本,高應(yīng)用性,可量測(cè)性,以及可以配置成用于提供大量共享資源。對(duì)等網(wǎng)絡(luò)已經(jīng)以共享大量數(shù)據(jù)的流行方式顯現(xiàn)出來(lái),例如通過(guò)一個(gè)對(duì)等環(huán)球網(wǎng)站點(diǎn)實(shí)現(xiàn)可用于下載地相關(guān)歌曲的對(duì)等下載。
當(dāng)提供由多客戶端使用的資源時(shí),會(huì)遭遇到兩個(gè)或多個(gè)客戶端需要訪問(wèn)一個(gè)特定資源的情形,即所述的“沖突”。互斥技術(shù)涉及可用于共享資源的技術(shù),以至于需要訪問(wèn)該特定資源的不同客戶端不會(huì)沖突,也不會(huì)引起不必要的交互作用。利用互斥技術(shù),客戶端可以獲得訪問(wèn)由所用的特殊互斥技術(shù)所指定的資源的“權(quán)限”。
互斥技術(shù)的一個(gè)例子包括信號(hào)量的應(yīng)用。信號(hào)量是每一個(gè)客戶端都可以檢測(cè)然后更改的值?;谡业降闹?,客戶端可以利用該資源或發(fā)現(xiàn)它已經(jīng)在使用并重試。代表性地,一個(gè)客戶端利用信號(hào)量檢測(cè)值,然后,如果沒(méi)有其他的客戶端利用資源,則改變?cè)撝狄苑从吵鲑Y源正在被客戶端使用,從而相繼的客戶端將“知道”該指定的資源正在使用。因而,當(dāng)多個(gè)客戶端競(jìng)爭(zhēng)相同的資源,例如共享訪問(wèn)一個(gè)特別的文件時(shí),該信號(hào)量提供一種用于調(diào)整和使行為同步的技術(shù)。
在上述的互斥技術(shù)中,在渴望使用該指定資源的客戶端之間引起的沖突問(wèn)題由于客戶端的貪婪行為而被擴(kuò)大化了。例如,多個(gè)客戶端希望訪問(wèn)一個(gè)資源,同時(shí)只有其中的一個(gè)客戶端將通過(guò)利用互斥技術(shù)“贏得”訪問(wèn)該資源的權(quán)利?!笆 钡目蛻舳瞬荒塬@取訪問(wèn)資源的權(quán)利,但是,可以通過(guò)持續(xù)地再次發(fā)送請(qǐng)求嘗試獲得權(quán)利。重復(fù)地再次發(fā)送請(qǐng)求消耗了等同于提供資源的硬件和軟件資源,同時(shí)客戶端試圖達(dá)到資源的訪問(wèn)。重復(fù)地再發(fā)也消耗客戶端和同位體之間的網(wǎng)絡(luò)帶寬。這個(gè)問(wèn)題也會(huì)隨著期望訪問(wèn)資源的客戶端的數(shù)目的增加而被擴(kuò)大化,因而導(dǎo)致更大的低效率。
此外,在對(duì)等網(wǎng)絡(luò)的多個(gè)客戶端和多個(gè)同位體之間的通訊可能遭遇不同的通訊等待時(shí)間,一個(gè)接一個(gè)。例如,用于訪問(wèn)一個(gè)特定資源的從多個(gè)客戶端接收到的請(qǐng)求可能根據(jù)在客戶端和同位體之間的通訊等待時(shí)間的變化,而在不同的時(shí)間到達(dá)不同的同位體。
因此,存在一個(gè)在一個(gè)動(dòng)態(tài)對(duì)等網(wǎng)絡(luò)環(huán)境使用互斥技術(shù)的持續(xù)地需求。
發(fā)明概述
用于一個(gè)動(dòng)態(tài)網(wǎng)絡(luò)對(duì)等環(huán)境中的互斥技術(shù)被描述。例如,互斥技術(shù)利用隊(duì)列來(lái)定位在客戶端和同位體之間的通訊等待時(shí)間的變化。當(dāng)請(qǐng)求被收到時(shí),隊(duì)列可以被同位體利用來(lái)存儲(chǔ)請(qǐng)求,從而同位體可以獲得一個(gè)連貫的視圖,因此基于該隊(duì)列提供對(duì)資源的訪問(wèn)。在另一個(gè)例子中,隊(duì)列的應(yīng)用利用存儲(chǔ)在隊(duì)列中的請(qǐng)求減少了客戶端的“貪婪”行為,從而客戶端不必持續(xù)地嘗試再發(fā)請(qǐng)求來(lái)訪問(wèn)資源。
在一個(gè)實(shí)施方式中,一種方法,包括在多個(gè)邏輯復(fù)制品中的每一個(gè)中,從客戶端接收一個(gè)請(qǐng)求。每一個(gè)邏輯復(fù)制品包括一個(gè)隊(duì)列,被用來(lái)專用連接客戶端中的一個(gè)。該隊(duì)列被用來(lái)訪問(wèn)多個(gè)資源中的一個(gè)。當(dāng)指定的邏輯復(fù)制品中的一個(gè)被專用連接到客戶端中的另一個(gè)時(shí),請(qǐng)求被儲(chǔ)存在該指定的邏輯復(fù)制品的隊(duì)列中。
在一個(gè)另外的實(shí)施方式中,一種方法,包括由一個(gè)客戶端形成一個(gè)請(qǐng)求,用來(lái)與多個(gè)邏輯復(fù)制品通訊。該請(qǐng)求被用于多個(gè)資源中的其中一個(gè)??蛻舳藦亩鄠€(gè)邏輯復(fù)制品中接收多個(gè)響應(yīng),決定是否客戶端被允許利用這一個(gè)資源。當(dāng)另一個(gè)客戶端被允許利用某個(gè)資源時(shí),客戶端等待著另一種多個(gè)響應(yīng)而不必發(fā)送另一個(gè)請(qǐng)求。
在另一個(gè)實(shí)施方式中,一種方法,包括在多個(gè)客戶端中的至少一個(gè),形成一個(gè)用于進(jìn)行通訊的多個(gè)資源的一個(gè)請(qǐng)求給多個(gè)邏輯復(fù)制品。在多個(gè)邏輯復(fù)制品的多個(gè)客戶端,多個(gè)響應(yīng)被接收。每一個(gè)客戶端依據(jù)多個(gè)響應(yīng),決定是否多個(gè)客戶端中的一個(gè)被允許使用一個(gè)資源。當(dāng)沒(méi)有客戶端被允許利用資源時(shí),由至少一個(gè)客戶端形成一個(gè)輸出消息,用于與一個(gè)或更多個(gè)邏輯復(fù)制品的通訊。該輸出消息用于引起一個(gè)或多個(gè)邏輯復(fù)制品中的每一個(gè)從一個(gè)相應(yīng)的隊(duì)列形成另一個(gè)響應(yīng)。該隊(duì)列存儲(chǔ)來(lái)自一個(gè)或更多客戶端的在前的請(qǐng)求。
在另一個(gè)實(shí)施方式中,該對(duì)等網(wǎng)絡(luò)更包括利用一個(gè)法定的統(tǒng)一協(xié)議的而允許資源訪問(wèn)的邏輯復(fù)制品。
更進(jìn)一步,在另一個(gè)實(shí)施方式中,一個(gè)系統(tǒng),包括一個(gè)網(wǎng)絡(luò),多個(gè)客戶端,和多個(gè)通訊式地連接于網(wǎng)絡(luò)的計(jì)算裝置。多個(gè)計(jì)算裝置包括多個(gè)邏輯復(fù)制品。每一個(gè)邏輯復(fù)制品被配置成可以在任何一個(gè)特定時(shí)間專用地連接于多個(gè)客戶端中的一個(gè)。每一個(gè)邏輯復(fù)制品還包括一個(gè)隊(duì)列,該隊(duì)列用于存儲(chǔ)一個(gè),當(dāng)邏輯復(fù)制品被專用連接于另一個(gè)客戶端時(shí),來(lái)源于一個(gè)客戶端的用以訪問(wèn)資源的請(qǐng)求。
附圖的簡(jiǎn)要說(shuō)明
圖1用以說(shuō)明一個(gè)用以顯示配置成用來(lái)提供對(duì)等網(wǎng)絡(luò)的環(huán)境的典型實(shí)施例。
圖2用以說(shuō)明一個(gè)顯示客戶端的一個(gè)結(jié)構(gòu)和更詳細(xì)的如圖1的復(fù)制品的系統(tǒng)的典型實(shí)施例。
圖3是用以描述在一個(gè)典型實(shí)施例中的一個(gè)過(guò)程的流程圖。在該實(shí)施例中,如圖1所示的客戶端請(qǐng)求訪問(wèn)一個(gè)由在對(duì)等網(wǎng)絡(luò)中的一個(gè)或多個(gè)同位體所提供的資源。
圖4是用以描述在一個(gè)典型實(shí)施例中的一個(gè)過(guò)程的流程圖。在該實(shí)施例中,客戶端決定是否多個(gè)資源中的一個(gè)特定資源的利用被允許。
圖5是用以描述在一個(gè)顯示如圖4的一個(gè)輸出操作的執(zhí)行的典型實(shí)施例中的一個(gè)過(guò)程的流程圖。
圖6是用以說(shuō)明一個(gè)由客戶端執(zhí)行且如圖2所描述的與圖4和5相關(guān)的復(fù)制品的互斥協(xié)議的執(zhí)行結(jié)構(gòu)的方塊圖。
圖7是一個(gè)典型計(jì)算裝置的說(shuō)明。
在整個(gè)說(shuō)明書(shū)和附圖中使用相同的標(biāo)號(hào)表示相同的部件和特征。
詳細(xì)描述
概述
用于動(dòng)態(tài)對(duì)等網(wǎng)絡(luò)環(huán)境的互斥技術(shù)被描述。在一個(gè)例子中,互斥技術(shù)利用隊(duì)列來(lái)定位在客戶端和同位體之間的通訊等待時(shí)間的變化。如上所述,用以訪問(wèn)一個(gè)指定資源的從多個(gè)客戶端接收的請(qǐng)求可以根據(jù)在客戶端和同位體之間的通訊等待時(shí)間的變化而在不同的各自的時(shí)間到達(dá)不同的同位體。因此,同位體可能不具備請(qǐng)求訪問(wèn)資源的客戶端的連貫的視圖,例如當(dāng)每一個(gè)客戶端都請(qǐng)求了這樣的訪問(wèn)。同位體可以利用隊(duì)列來(lái)存儲(chǔ)請(qǐng)求,從而統(tǒng)計(jì)可以在請(qǐng)求被接收時(shí)獲得一個(gè)連貫的視圖,并基于提供對(duì)資源的訪問(wèn)。
此外,隊(duì)列減少了客戶端的“貪婪”行為。例如,隊(duì)列可以被利用來(lái)存儲(chǔ)來(lái)自于客戶端的請(qǐng)求,從而客戶端不用連續(xù)地嘗試再發(fā)請(qǐng)求來(lái)訪問(wèn)資源。因而,客戶端可以被認(rèn)為處于“有效等待”狀態(tài),用于來(lái)自與同位體的請(qǐng)求的一個(gè)響應(yīng)??梢允褂靡粋€(gè)未成形補(bǔ)償裝置,從而如果在一個(gè)指定的一段時(shí)間后,請(qǐng)求的響應(yīng)還沒(méi)有接收到,則客戶端再次發(fā)送請(qǐng)求。
典型環(huán)境
圖1是一個(gè)用以顯示配置成用來(lái)提供對(duì)等網(wǎng)絡(luò)的環(huán)境100的典型實(shí)施例的說(shuō)明。該環(huán)境100包括多個(gè)客戶端102(a),其中“a”可以是從1到“A”的任意整數(shù),它在網(wǎng)絡(luò)106上通訊耦合連接于多個(gè)計(jì)算裝置104(1)-104(B)。在這個(gè)實(shí)施方式中,多個(gè)客戶端102(a)和多個(gè)計(jì)算裝置104(1)-104(B)中的每一個(gè)都代表網(wǎng)絡(luò)106中的一個(gè)結(jié)點(diǎn)。一個(gè)結(jié)點(diǎn)可以被理解為一個(gè)用于傳輸數(shù)據(jù)的連接點(diǎn),例如一個(gè)提供數(shù)據(jù)給其他結(jié)點(diǎn)的再分配點(diǎn)和/或一個(gè)目標(biāo)文件的終點(diǎn)和/或數(shù)據(jù)源。
多個(gè)客戶端102(a)和多個(gè)計(jì)算裝置104(1)-104(B)可以以多種方式配置。例如,客戶端102(a)和多個(gè)計(jì)算裝置104(1)-104(B)可以配置成可以在網(wǎng)絡(luò)106上具備通訊功能的計(jì)算機(jī)組,例如一個(gè)無(wú)線電話(例如,計(jì)算裝置104(1)),一臺(tái)臺(tái)式機(jī)(例如,計(jì)算裝置104(2)),一臺(tái)筆記本電腦(例如,計(jì)算裝置104(3)),一臺(tái)桌上型電腦(例如,計(jì)算裝置104(4)),服務(wù)器組(例如,計(jì)算裝置104(5)-104(6)),一臺(tái)主機(jī)計(jì)算機(jī)(例如,計(jì)算裝置104(B)),和其他計(jì)算裝置,例如一個(gè)電話站,一種娛樂(lè)用具,一置頂盒,等等。一個(gè)典型計(jì)算裝置的進(jìn)一步的描述可以在相關(guān)的圖7中找到。因而,多個(gè)客戶端102(a)和多個(gè)計(jì)算裝置104(1)-104(B)可以延伸到全部的具備實(shí)質(zhì)存儲(chǔ)器的資源裝置和處理資源(例如,個(gè)人計(jì)算機(jī),配備有硬盤的電視記錄器)給具備局限性存儲(chǔ)器的低能源裝置和/或執(zhí)行資源(例如,傳統(tǒng)的置頂盒組)??蛻舳?02(a)可以涉及個(gè)人和/或操作客戶端的整體。換句話說(shuō),客戶端102(a)可以被描述為一個(gè)包含一個(gè)用戶和/或一臺(tái)機(jī)器的邏輯客戶端。
網(wǎng)絡(luò)106可以配置成一個(gè)對(duì)等網(wǎng)絡(luò)。一個(gè)對(duì)等網(wǎng)絡(luò)允許網(wǎng)絡(luò)106中的結(jié)點(diǎn)訪問(wèn)定位于每一個(gè)結(jié)點(diǎn)上的共享資源,也就是說(shuō),多個(gè)客戶端102(a)和多個(gè)計(jì)算裝置104(1)-104(B)。對(duì)等網(wǎng)絡(luò)的例子,在過(guò)去已經(jīng)被知曉和應(yīng)用,包括以下
·免費(fèi)網(wǎng)絡(luò),由I.Clark,B.Wiley,O.Sanberg,和T.Hong在國(guó)際會(huì)報(bào)工作室設(shè)計(jì)文摘上無(wú)名的和不可預(yù)測(cè)的,Springer Verlag,LNCS2009,2001中的“免費(fèi)網(wǎng)絡(luò)一種分布式無(wú)名信息存儲(chǔ)和檢索系統(tǒng)”。
·弦(chord),由I.Stoica,R.Morris,D.Karger,M.F.Kaashoek,H.Balakrishnan在2001年美國(guó)加利福尼亞圣地亞哥的ACM SIGCOMM’01會(huì)報(bào)上所描述的“弦,一種可測(cè)量的用于網(wǎng)絡(luò)移用的對(duì)等查找裝置”。
·CAN,由S.Ratnasamy,P.Francis,M.Handley,R.Karp,和S.Shenker在2001年美國(guó)加利福尼亞圣地亞哥的ACM SIGCOMM’01會(huì)報(bào)上所描述的“一種可測(cè)量可設(shè)定地址內(nèi)容網(wǎng)絡(luò)”。
·糕點(diǎn)(pastry),由A.Rowstron和P.Druschel在2001分布式系統(tǒng)平臺(tái)IFIP/ACM國(guó)際會(huì)談中所描述的“糕點(diǎn)可測(cè)量的,由于大型測(cè)量對(duì)等系統(tǒng)的分散型物理定位和布線”和
·花毯(tapestry),由B.Y.Zhao,J.Kubiatowicz和A.D.Joseph在美國(guó)加利福尼亞的伯克利,號(hào)碼為UCB/CSD-01-1141的技術(shù)報(bào)告中所描述的“花毯一種用于容錯(cuò)廣域定位和布線的下部構(gòu)造”。
對(duì)等網(wǎng)絡(luò)可以提供多種類型的特征,例如冗余和容錯(cuò)。例如,存儲(chǔ)在對(duì)等網(wǎng)絡(luò)中的數(shù)據(jù)可以隨著數(shù)據(jù)被對(duì)等網(wǎng)絡(luò)的結(jié)點(diǎn)復(fù)制而逐漸地傳播。因而,在對(duì)等網(wǎng)路中數(shù)據(jù)可以高冗余,那將導(dǎo)致數(shù)據(jù)的可靠性和可應(yīng)用性的增加。
多樣性的資源可以利用對(duì)等網(wǎng)絡(luò)而改變。例如數(shù)據(jù),處理周期,數(shù)據(jù)存儲(chǔ)等等。因而,對(duì)等網(wǎng)絡(luò)可以被用來(lái)對(duì)多個(gè)客戶端102(a)和多個(gè)計(jì)算裝置104(1)-104(B)的聚合力起杠桿作用。對(duì)等網(wǎng)絡(luò)是一個(gè)交流模型,在其中每一個(gè)同位體,也就是說(shuō)“成員”,可以直接和另一個(gè)成員通信和/或通過(guò)一個(gè)媒介服務(wù)器。
網(wǎng)絡(luò)106包括一個(gè)分布式散列平臺(tái)(DHT)108,它擔(dān)當(dāng)一個(gè)在多個(gè)客戶端102(a)和多個(gè)計(jì)算裝置104(1)-104(B)間發(fā)送信息的接口的角色。該DHT108可以理解為一個(gè)用于存儲(chǔ)(關(guān)鍵字、值)成對(duì)的分布式散列平臺(tái)結(jié)構(gòu)的分布式模型。例如,該關(guān)鍵字可以相應(yīng)于一個(gè)文件名和該值可以相應(yīng)于該文件的內(nèi)容。在該網(wǎng)絡(luò)106中的每一個(gè)同位體,例如計(jì)算裝置104(1)-104(B),存儲(chǔ)成對(duì)的子集。該DHT108因此被利用來(lái)找到相應(yīng)于該關(guān)鍵字的可靠的結(jié)點(diǎn)。換句話說(shuō),該DHT108映射該關(guān)鍵字給該結(jié)點(diǎn)用于在多個(gè)客戶端102(a)和多個(gè)計(jì)算裝置104(1)-104(B)間發(fā)送信息。多樣性的裝置可以在現(xiàn)成的DHT108上構(gòu)造出,例如文件共享裝置,檔案存儲(chǔ)裝置(例如,網(wǎng)絡(luò)檔案),數(shù)據(jù)庫(kù),命名系統(tǒng),顯像設(shè)備,應(yīng)用層多點(diǎn)傳送,事件通知,聊天設(shè)備,集合建立通訊,查詢和索引,數(shù)據(jù)發(fā)表/訂閱,等等。
該DHT108劃分由多個(gè)計(jì)算裝置104(1)-104(B)提供給多個(gè)存儲(chǔ)桶110(1)-110(8)的資源。多個(gè)存儲(chǔ)桶110(1)-110(8)中的每一個(gè)可以被考慮作為一個(gè)資源地帶。例如,前述的具備關(guān)鍵字的DHT108連接資源。該關(guān)鍵字被散列,用來(lái)查找利用DHT108的多個(gè)存儲(chǔ)桶110(1)-110(8)中的特定的一個(gè)。多個(gè)存儲(chǔ)桶110(1)-110(8)可以以多種形式被提供。例如,存儲(chǔ)桶110(1)被描繪成如圖1中插圖所示的由計(jì)算裝置104(1)提供。同樣的,存儲(chǔ)桶110(2)、110(3)、110(4)、110(5)、110(6)分別由計(jì)算裝置104(2)、104(3)、104(4)、104(5)、104(6)提供。此外,計(jì)算裝置可以提供給多于一個(gè)的存儲(chǔ)桶。,如圖1的插圖所示的存儲(chǔ)桶110(7)、110(8)由計(jì)算裝置104(B)提供。
該環(huán)境110,當(dāng)被配置成使用DHT108的對(duì)等網(wǎng)絡(luò)時(shí),提供一個(gè)由參加冗余分配的同位體組所組裝的虛擬空間。該虛擬空間可以被提供,以至于它沒(méi)有“孔”,除了在會(huì)員資格改變的一段瞬時(shí)時(shí)間內(nèi)。例如,如果計(jì)算裝置104(6)變得不可用,例如由于硬件、軟件和/或網(wǎng)絡(luò)的錯(cuò)誤,該由計(jì)算裝置104(6)所提供的存儲(chǔ)桶110(6)將可能由另一個(gè)計(jì)算裝置所提供,例如,計(jì)算裝置104(B)。因而,網(wǎng)絡(luò)106是動(dòng)態(tài)的,從而在沒(méi)有網(wǎng)絡(luò)中斷的情況下,結(jié)點(diǎn)可以進(jìn)入或離開(kāi)網(wǎng)絡(luò)。
因?yàn)镈HT108可以被用來(lái)從多個(gè)沒(méi)有中斷的計(jì)算裝置104(1)-104(B)中形成一個(gè)共同的邏輯空間,一組邏輯復(fù)制品112(1)-112(4)(復(fù)制品)可以被實(shí)現(xiàn)。例如,對(duì)于給定的資源R,它的聯(lián)合的計(jì)算裝置CS(R)可以是邏輯的。例如,這里可能有n個(gè)復(fù)制品,他們的名字是“/foo/bar:i”其中I∈{1..n}。這些名字可以被散列而派生出該關(guān)鍵字,每一個(gè)關(guān)鍵字的主結(jié)點(diǎn)可以作為一個(gè)復(fù)制品。名字的去耦和實(shí)際的計(jì)算裝置導(dǎo)致了一個(gè)可以被認(rèn)為是“一直”可用的“虛擬計(jì)算裝置”的規(guī)定,但是可能在隨機(jī)點(diǎn)及時(shí)導(dǎo)致存儲(chǔ)器的遺失。此外,與圖3和6相關(guān)的進(jìn)一步詳細(xì)的描述,對(duì)多個(gè)復(fù)制品的介紹意味著在客戶端和這些復(fù)制品之間的等待時(shí)間是變化的,因此在執(zhí)行時(shí)產(chǎn)生影響。
因此,復(fù)制品112(1)-112(4)一直是可用的,例如,“在線”,從客戶端102(a)的透視圖。如上所述,然而,復(fù)制品112(1)-112(4)中的任何一個(gè)都有可能一次又一次地遭受一個(gè)徹底的存儲(chǔ)器的遺失。例如,一個(gè)隨機(jī)的復(fù)位可能導(dǎo)致當(dāng)用來(lái)提供復(fù)制品112(1)-112(4)中的特定的一個(gè)的計(jì)算裝置104(1)-104(B)中的一個(gè)變得可用時(shí),它被計(jì)算裝置104(1)-104(B)中的另一個(gè)所取代。
復(fù)制品112(1)-112(4)將在客戶端試圖訪問(wèn)相同的資源時(shí),提供一個(gè)機(jī)構(gòu)用于控制多個(gè)客戶端102(a)中的兩個(gè)或多個(gè)之間的沖突。例如,復(fù)制品112(1)-112(4)可以利用一個(gè)使用一個(gè)法定的統(tǒng)一協(xié)議的互斥技術(shù)。該協(xié)議被用來(lái)準(zhǔn)許訪問(wèn)多個(gè)期望訪問(wèn)相同的資源的客戶端中的一個(gè),在下面的討論的部分中將涉及到作為“關(guān)鍵部分”,在方程式和附圖中表示為“CS”。復(fù)制品112(1)-112(4)被認(rèn)為作為幫助客戶端102(a)串行化訪問(wèn)關(guān)鍵資源的過(guò)程。復(fù)制品可能被定義為虛擬的名字,可以被整個(gè)環(huán)境100所知曉。如果一個(gè)復(fù)制品脫離了環(huán)境100(例如,事故),一個(gè)“新的”復(fù)制品將取代老的,同時(shí)假定為相同的虛擬名字。實(shí)際上,這樣的虛擬名字可以被一個(gè)域名服務(wù)器所執(zhí)行,依靠在對(duì)等系統(tǒng)中的DHT108,等等。由于這樣的虛擬名字的裝置,系統(tǒng)中的復(fù)制品的數(shù)目將通過(guò)系統(tǒng)的壽命而被固定。與附圖3-5相關(guān)的互斥技術(shù)的執(zhí)行的進(jìn)一步討論可以被發(fā)現(xiàn)。
因此,環(huán)境100將提供由客戶端102(a)所觀察的復(fù)制品112(1)-112(4)是“一直”可用的。然而該邏輯復(fù)制品112(1)-112(4)的內(nèi)在形態(tài),可以被隨機(jī)重設(shè)。此外,在環(huán)境100中的客戶端102(a)的數(shù)目也可能是不能預(yù)料的,或者可能很大。
客戶端102(a)和復(fù)制品112(1)-112(4)可以利用信息在網(wǎng)絡(luò)106中通信,例如請(qǐng)求和響應(yīng),可以在相關(guān)的圖6中找到進(jìn)一步的描述。在一個(gè)實(shí)施例中,通訊連接于客戶端102(a)和復(fù)制品112(1)-112(4)的網(wǎng)絡(luò)106可能是不可靠的,也就是說(shuō),信息可能被復(fù)制和/或丟失。在一下的討論內(nèi)容中,客戶端102(a)和復(fù)制品112(1)-112(4)都是在DHT108中的同位體。但是,在另一個(gè)實(shí)施例中,只有復(fù)制品112(1)-112(4)被認(rèn)為是存在于DHT108中的同位體。
復(fù)制品112(1)-112(4)可以被利用來(lái)以多種方式實(shí)現(xiàn)允許對(duì)由計(jì)算裝置114(1)-114(M)所提供的資源的訪問(wèn)。例如,復(fù)制品112(1)-112(4)中的每一個(gè)都可能被授權(quán)訪問(wèn)一個(gè)位于“假冒的先來(lái)/先服務(wù)”基底上的特定資源。復(fù)制品112(1)-112(4)中的每一個(gè),例如,可以基于一個(gè)其中請(qǐng)求由復(fù)制品112(1)-112(4)從客戶端102(a)接收的命令而被允許訪問(wèn)特定資源。當(dāng)一個(gè)復(fù)制品準(zhǔn)許(或表決)客戶端時(shí),后者被稱為前者的所有者。換句話說(shuō),復(fù)制品被專用連接于客戶端,從而它不能被自身?yè)碛?,?dāng)被擁有時(shí),是被另一個(gè)客戶端。已經(jīng)聚集了多個(gè)復(fù)制品的所有權(quán)的客戶端被稱為執(zhí)行法定的統(tǒng)一協(xié)議的成功者,并被允許訪問(wèn)該資源。通過(guò)響應(yīng)的使用的所有權(quán)和復(fù)制品的投票的進(jìn)一步的討論可以在圖3和6中被發(fā)現(xiàn)。
盡管七個(gè)計(jì)算裝置104(1)-104(B)被說(shuō)明,一個(gè)更廣類型的計(jì)算裝置可以在該環(huán)境中被實(shí)現(xiàn)。此外,多個(gè)客戶端102(a)也可以在對(duì)等網(wǎng)絡(luò)中被配置成“同位體”。
互斥
互斥是在配置成使用一個(gè)對(duì)等DHT的網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)普通系統(tǒng)和應(yīng)用的基本原語(yǔ)中的一種。如此的原語(yǔ)利用在該對(duì)等DHT上執(zhí)行的應(yīng)用來(lái)提供一種用以利用的初步服務(wù),以在必要的時(shí)候保護(hù)一個(gè)或多個(gè)隨機(jī)的資源。例如,互斥提供一個(gè)并發(fā)控制裝置用于一個(gè)公共分布式文檔系統(tǒng)。為了支持在圖1中的環(huán)境100的改變,以達(dá)到增加和/或移動(dòng)結(jié)點(diǎn)的程度,這樣的原語(yǔ)被在該對(duì)等DHT中執(zhí)行。因此,該互斥協(xié)議的執(zhí)行被分配。
該對(duì)等網(wǎng)絡(luò)環(huán)境的開(kāi)放式和動(dòng)態(tài)特性,例如,圖1的環(huán)境100,帶來(lái)各種類型的難題。例如,以前的互斥協(xié)議一直假設(shè)一個(gè)具有固定的和相對(duì)適度數(shù)目的結(jié)點(diǎn)的關(guān)閉式系統(tǒng)。這些結(jié)點(diǎn)在前述的系統(tǒng)中通訊,一個(gè)到另一個(gè),以實(shí)現(xiàn)統(tǒng)一。但是這樣的解決方式,在有不可預(yù)料的數(shù)目的客戶端和/或大量客戶端的情況下是不能使用的。在下面的討論中,一個(gè)互斥技術(shù)被描述,它通過(guò)對(duì)阻遏等待時(shí)間的差異和爭(zhēng)論使用一個(gè)公有策略,來(lái)定位一個(gè)在客戶端和復(fù)制品之間的網(wǎng)絡(luò)等待時(shí)間的巨變。因此實(shí)現(xiàn)了可測(cè)量性和穩(wěn)定性。此外,一個(gè)信息補(bǔ)償裝置被描述,它智能地重建復(fù)制品的狀態(tài),來(lái)控制復(fù)制品的隨機(jī)復(fù)位。
典型協(xié)議
一個(gè)互斥協(xié)議被描述為可以被用來(lái)解決對(duì)一個(gè)特定資源的請(qǐng)求的沖突。例如,多個(gè)客戶端102(a)中的兩個(gè)或多個(gè)想要利用一個(gè)關(guān)鍵部分(CS),例如,一個(gè)特定資源,發(fā)送請(qǐng)求給每一個(gè)復(fù)制品112(1)-112(4),并等著響應(yīng)。復(fù)制品112(1)-112(4)中的每一個(gè)都批準(zhǔn)一個(gè)租用,只要它不被其他的客戶端所擁有。另外,復(fù)制品112(1)-112(4)中的每一個(gè)拒絕請(qǐng)求但是通知正在請(qǐng)求的客戶端(已經(jīng)被拒絕的)客戶端102(a)中的哪一個(gè)是當(dāng)前客戶端。一個(gè)法定統(tǒng)一技術(shù)被使用,從而一個(gè)從n個(gè)復(fù)制品中擁有m個(gè)的客戶端102(a),其中m是一個(gè)法定數(shù)字而n是復(fù)制品的數(shù)目,是這一回合的勝利者,并被允許訪問(wèn)該關(guān)鍵部分(CS)。該法定的數(shù)目可以以多種方式確定,例如,m>n/2,等等。先前的,沒(méi)有被允許訪關(guān)鍵部分的客戶端,也就是說(shuō),那一回合的“失敗者”,釋放已獲得的投票權(quán)(若有的話),補(bǔ)償并釋放該請(qǐng)求。
該復(fù)制品112(1)-112(4),但是,將在它忘記相關(guān)的它以前的決定并對(duì)新的請(qǐng)求開(kāi)放后遭遇隨機(jī)的復(fù)位。該“改變看法”可以引起互斥的破壞。例如,假設(shè)一個(gè)結(jié)點(diǎn)的平均壽命是T,該結(jié)點(diǎn)在一個(gè)周期t中崩潰的概率是t/T。任意從m個(gè)投票復(fù)制品的k個(gè)復(fù)位的概率如下所示
如上述方程式所示,當(dāng)在時(shí)間t內(nèi)有大于等于2m-n個(gè)復(fù)位發(fā)生的話,安全將被破壞,該情形發(fā)生的概率如下
因此,為了忍受高達(dá)k的復(fù)制品復(fù)位,n=3k+1和m=2k+1是要滿足的。因此,作為設(shè)計(jì)的選擇,m的值必須升高。
圖2用以更詳細(xì)地說(shuō)明一個(gè)顯示如圖1的客戶端102(a)的一個(gè)結(jié)構(gòu)和復(fù)制品112(i)的系統(tǒng)200的典型實(shí)施例,其中,“i”可以是任意的從1到“I”的整數(shù)??蛻舳?02(a)被說(shuō)明為包含一個(gè)客戶端ID202和一個(gè)響應(yīng)陣列204。該客戶端ID用于利用復(fù)制品112(1)來(lái)識(shí)別客戶端102(a)。響應(yīng)陣列204被配置成從圖1的多個(gè)復(fù)制品112(1)-112(4)中存儲(chǔ)多個(gè)響應(yīng)206(i)。例如,響應(yīng)206(i)可以被用來(lái)存儲(chǔ)一個(gè)從一個(gè)“i位”復(fù)制品中獲取的一個(gè)響應(yīng),也就是說(shuō),復(fù)制品112(i),并包括用以指示相應(yīng)的的擁有者208(i)的數(shù)據(jù)和用以指示何時(shí)該復(fù)制品接收一個(gè)用于形成的響應(yīng)206(i)的請(qǐng)求的一個(gè)關(guān)聯(lián)時(shí)標(biāo)210(i)。
復(fù)制品112(i)保持一個(gè)所有權(quán)域212(i),用以指示多個(gè)客戶端102(a)中的哪一個(gè),若有的話,擁有該復(fù)制品112(i)。該所有權(quán)域212(i)可以表示為圖2中所示的“Cowner”。由于所有權(quán)域212(i)的“nil”的值用以指示該復(fù)制品112(i)并沒(méi)有被表決為用于客戶端102(a)中的一個(gè)。換句話說(shuō),復(fù)制品112(i)并不是專用連接的,通常地,連接于客戶端A,其時(shí)標(biāo)域218(a)“Towner”在被復(fù)制品112(i)接收到后,存儲(chǔ)一個(gè)請(qǐng)求的時(shí)標(biāo)。
該復(fù)制品112(i)包括一個(gè)隊(duì)列214(i),用以存儲(chǔ)從多個(gè)客戶端102(a)中接收的請(qǐng)求216(a)。每一個(gè)存儲(chǔ)在隊(duì)列中的請(qǐng)求216(a)都相應(yīng)于多個(gè)客戶端102(a)中的一個(gè)。該隊(duì)列214(a)可以被配置成以一個(gè)每一個(gè)請(qǐng)求216(a)都能夠被接收到的次序而存儲(chǔ)該請(qǐng)求216(a)。例如,隊(duì)列214(i)可以利用一個(gè)時(shí)鐘,例如Lamport的邏輯時(shí)鐘,來(lái)為每一個(gè)請(qǐng)求216(a)產(chǎn)生一個(gè)時(shí)標(biāo)218(a)。該隊(duì)列214(a)然后基于各自的時(shí)標(biāo)218(a)將請(qǐng)求216(a)組織起來(lái)。在另一個(gè)例子中,每一個(gè)請(qǐng)求由客戶端102(a)自己用時(shí)間標(biāo)記起來(lái)。一個(gè)客戶端的操作的例子和圖1的多個(gè)復(fù)制品112(1)-112(4)可以在下列實(shí)施方式中找到。
典型程序
下列的討論描述了可以利用上述描述的結(jié)構(gòu)執(zhí)行的互斥技術(shù)。每個(gè)程序的各個(gè)方面可以以硬件、固件,或軟件或他們的組合的方式來(lái)實(shí)現(xiàn)。該程序被顯示為可以有一個(gè)或多個(gè)裝置執(zhí)行的特定操作的一組模塊。
圖3是用以描述在一個(gè)典型實(shí)施例中的一個(gè)過(guò)程300的流程圖。在該實(shí)施例中,如圖1所示的客戶端102(a)請(qǐng)求訪問(wèn)一個(gè)由在對(duì)等網(wǎng)絡(luò)中的一個(gè)或多個(gè)同位體所提供的資源。在塊302,客戶端102(a)形成并傳輸一個(gè)請(qǐng)求304給多個(gè)復(fù)制品112(1)-112(4)中的每一個(gè)。該請(qǐng)求304識(shí)別由對(duì)等網(wǎng)絡(luò)環(huán)境提供的多個(gè)資源中的特定的一個(gè),并包括圖2的用戶ID,因而,多個(gè)復(fù)制品112(1)-112(4)中的每一個(gè)可以區(qū)分客戶端102(a)與另一個(gè)客戶端。
在塊306,復(fù)制品112(1)-112(4)決定所有權(quán)。例如,復(fù)制品112(1)-112(4)的每一個(gè)詢問(wèn)各自的所有權(quán)域212(1)-212(4)。在所有權(quán)域212(1)-212(4)中的值指示哪一個(gè),若有的話,客戶端擁有分別的復(fù)制品112(1)-112(4)。例如,復(fù)制品112(1)的所有權(quán)域212(1)被假想說(shuō)明具有一個(gè)“nil”值,它用以指示該復(fù)制品112(1)目前不被一個(gè)客戶端所擁有。同樣地,各自的復(fù)制品112(2),112(3)的所有權(quán)域212(2),212(3)也被說(shuō)明具有各自的“nil”值。因此,復(fù)制品112(1)-112(3)沒(méi)有被特定的客戶端“投票”用于所有權(quán)。
復(fù)制品112(4)的所有權(quán)域212(4),但是,被說(shuō)明為包含用以指示該復(fù)制品112(4)被客戶端102(1)所擁有的值?;谠撍袡?quán)的確定,復(fù)制品112(4)在隊(duì)列214(4)中存儲(chǔ)請(qǐng)求304,從而客戶端無(wú)須重新發(fā)送請(qǐng)求,在圖5中將有相關(guān)的更詳細(xì)的描述。
在塊308,復(fù)制品112(1)-112(4)形成和傳達(dá)一個(gè)相應(yīng)的請(qǐng)求310-316給客戶端102(a)。請(qǐng)求310-316中的每一個(gè)包括各自的復(fù)制品112(1)-112(4)的一個(gè)所有權(quán)的指示。例如,請(qǐng)求310-316中的每一個(gè)可能包括從相應(yīng)的復(fù)制品112(1)-112(4)中的所有權(quán)域(Cowner)中得到的值。
在塊310,客戶端102(a)基于響應(yīng)310-316而決定對(duì)資源的訪問(wèn)是否被允許。例如,在塊306,來(lái)自復(fù)制品112(1)的響應(yīng)310包括決定的結(jié)果,用以指示復(fù)制品112(1)沒(méi)有被另一個(gè)客戶端所擁有。因此,復(fù)制品112(1)現(xiàn)在被客戶端102(a)所擁有,在塊310中通過(guò)在響應(yīng)312中用來(lái)描述客戶端102(a)的家鄉(xiāng)盒和文字而被說(shuō)明。同樣地,在塊306,來(lái)自于相應(yīng)的復(fù)制品112(2),112(3)的響應(yīng)312,314也包括相應(yīng)的決定的結(jié)果。例如,響應(yīng)312,314都指示相應(yīng)的復(fù)制品112(2),112(3)沒(méi)有被另一個(gè)客戶端所擁有,因此,復(fù)制品112(2),112(3)都被客戶端102(a)所擁有。但是,響應(yīng)316,在塊306中包括用以指示相應(yīng)的復(fù)制品112(4)被另一個(gè)客戶端,如客戶端102(1),所擁有的決定的結(jié)果。
客戶端102(a)利用多種互斥技術(shù)基于響應(yīng)310-316來(lái)決定是否資源的利用被允許。例如,當(dāng)客戶端102(a)獲得“n”個(gè)復(fù)制品112(1)-112(4)中的“m”個(gè)時(shí),客戶端102(a)可以使用一個(gè)在其中客戶端102(a)被允許使用資源的法定統(tǒng)一協(xié)議,其中m是法定的數(shù)目,n是復(fù)制品的數(shù)目。換句話說(shuō),復(fù)制品112(1)-112(4)被配置成在一個(gè)時(shí)期,專用連接特定客戶端中的任意一個(gè)。這種專用連接可以被利用,從而,就如特定客戶端的所有權(quán)域(Cowner)所指示的那樣,用于客戶端的每一個(gè)復(fù)制品的“投票”具有當(dāng)前的專用連接。
該法定數(shù)可以以多種方式確定,例如,m>n/2,等等。因此,客戶端102(a)如請(qǐng)求304的相應(yīng)的響應(yīng)310-316所指示的那樣,基于復(fù)制品112(1)-112(4)的所有權(quán)來(lái)確定是否對(duì)特定資源的訪問(wèn)被允許。在塊308所圖示的例子中,如果m被設(shè)定為小于等于3,則客戶端102(a)具有復(fù)制品112(1)-112(4)的所有權(quán)的法定數(shù),因此對(duì)資源的利用被允許。在另一個(gè)例子中,如果m被設(shè)定為4,客戶端102(a)則不被允許訪問(wèn)資源。代替快速地重發(fā)請(qǐng)求304,然而,在塊306,客戶端102(a)將等待接收另一個(gè)響應(yīng),因?yàn)樵撜?qǐng)求存儲(chǔ)在隊(duì)列212(4)中。因此,如果客戶端102(a)沒(méi)有勝利,該客戶端就被加入一種由于從復(fù)制品112(1)-112(4)的附加響應(yīng)的“有效等待”狀態(tài)。在相關(guān)的圖4和5中,對(duì)隊(duì)列的使用和有效等待的進(jìn)一步的討論將被找到。
因此,如在典型程序600中所示,互斥技術(shù)將配置成復(fù)制品112(1)-112(4)彼此之間不通過(guò)通訊來(lái)調(diào)節(jié)響應(yīng)。例如,每一個(gè)復(fù)制品將基于它的自己的局部狀態(tài)而完全地發(fā)送它的響應(yīng)給客戶端。這樣在復(fù)制品間的調(diào)節(jié)上節(jié)省時(shí)間并因此為客戶端能被批準(zhǔn)更快地訪問(wèn)他們的關(guān)鍵部分提供機(jī)會(huì)??蛻舳?,因而可以被有效地包含在客戶端選擇過(guò)程中,而不是等待著來(lái)自于復(fù)制品的決定。
圖4是用以描述在一個(gè)典型實(shí)施例中的一個(gè)過(guò)程400的流程圖。在該實(shí)施例中,客戶端決定是否多個(gè)資源中的一個(gè)特定資源的利用被允許。在塊402,客戶端形成一個(gè)請(qǐng)求來(lái)利用多個(gè)資源中的指定的一個(gè)。該請(qǐng)求包括一個(gè)從時(shí)鐘(例如,Lamport的邏輯時(shí)鐘)獲取的時(shí)標(biāo)和客戶端的ID(例如,圖2的客戶端ID202)。在塊404,客戶端發(fā)送請(qǐng)求給于特定資源相關(guān)聯(lián)的多個(gè)復(fù)制品中的每一個(gè),從而復(fù)制品的每一個(gè)接收一個(gè)請(qǐng)求(塊406)。
在決定塊408,每一個(gè)復(fù)制品決定是否相應(yīng)的所有權(quán)域的值有“nil”值,也就是說(shuō),復(fù)制品沒(méi)有被專用連接于前面的客戶端。如果所有權(quán)域的值是nil,則然后在塊410,來(lái)自于請(qǐng)求的客戶端ID作為該值被存儲(chǔ)在復(fù)制品的所有權(quán)域(例如,Cowner)中。此外,在請(qǐng)求中的時(shí)標(biāo)的值被存儲(chǔ)在復(fù)制品的時(shí)標(biāo)域(例如,Towner)中。如果在塊408,所有權(quán)域的值不是“nil”,則然后該包還客戶端ID和時(shí)標(biāo)的請(qǐng)求,被插入到相應(yīng)的隊(duì)列中。在執(zhí)行完塊410或塊412的所述的行為后,過(guò)程400進(jìn)行到塊414。
在塊414,請(qǐng)求由每一個(gè)包含所有權(quán)的相應(yīng)值和時(shí)標(biāo)域的復(fù)制品形成。在塊416,復(fù)制品發(fā)送響應(yīng)給客戶端。例如,每一個(gè)復(fù)制品在圖1所示的網(wǎng)絡(luò)106中發(fā)送請(qǐng)求。在塊418,客戶端在一個(gè)響應(yīng)陣列中存儲(chǔ)響應(yīng),例如圖2的響應(yīng)陣列204。在決定塊420,關(guān)于是否有足夠的響應(yīng)已經(jīng)接收到以用來(lái)計(jì)算勝利者的決定被做出。該決定可以以多樣的方式來(lái)執(zhí)行。例如,客戶端可以決定是否已經(jīng)有足夠的響應(yīng)被接收以用來(lái)形成一個(gè)法定數(shù),是否從每一個(gè)接收請(qǐng)求的復(fù)制品中都接收到一個(gè)請(qǐng)求,等等。
如果足夠的響應(yīng)已經(jīng)被接收(塊420),則然后,客戶端計(jì)算一個(gè)勝利者(塊422)。勝利者可以以多樣的方式來(lái)計(jì)算。例如,如上所述,客戶端可以決定是否客戶端已經(jīng)獲得復(fù)制品的法定數(shù)的所有權(quán),例如,從n個(gè)復(fù)制品中的m個(gè)。
在決定塊424,一個(gè)關(guān)于是否勝利者是該客戶端的決定由客戶端做出。如果勝利者是該客戶端(塊424),一個(gè)成功信息被發(fā)送到該客戶端(塊426),從而客戶端“知曉”對(duì)指定資源的訪問(wèn)被允許。如果勝利者不是客戶端(塊424),則然后過(guò)程400繼續(xù)進(jìn)行到?jīng)Q定塊428。
在決定塊428,一個(gè)關(guān)于勝利者是否是另一個(gè)客戶端的決定被做出。如果勝利者是另一個(gè)客戶端,過(guò)程繼續(xù)到塊430。在塊430,客戶端等待另一個(gè)響應(yīng),而且過(guò)程400返回塊418。以這種方式,客戶端被定位在“有效等待”狀態(tài),從而客戶端不必象前面所要求的那樣重發(fā)請(qǐng)求,因而保存客戶端的硬件和軟件資源以及提供邏輯復(fù)制品和用于在客戶端和計(jì)算裝置間通訊的網(wǎng)絡(luò)資源的計(jì)算裝置。
如果勝利者不是另一個(gè)客戶端(塊428),然后在這個(gè)“回合”勝利者不能被找到。例如,如果jsame+n-j<m,其中,j是返回的請(qǐng)求的數(shù)目,j中的same項(xiàng)的最大值是jsame,而后沒(méi)有請(qǐng)求訪問(wèn)指定資源的客戶端“贏得”訪問(wèn)資源的許可。因而,在塊432,客戶端啟動(dòng)一個(gè)輸出操作來(lái)發(fā)送一個(gè)輸出消息給每一個(gè)有客戶端所擁有的復(fù)制品,從而一個(gè)勝利者可以被找到。上述的更詳細(xì)的描述的例子將在下面的實(shí)施方式中找到。
圖5是用以描述在一個(gè)顯示如圖4所示的一個(gè)輸出操作的執(zhí)行的典型實(shí)施例500中的一個(gè)過(guò)程的流程圖。在塊502,對(duì)于每一個(gè)具有指定客戶端的所有權(quán)域值的響應(yīng),一個(gè)輸出消息被發(fā)送給相應(yīng)的形成和傳達(dá)響應(yīng)的復(fù)制品。例如,在圖3中的塊318的客戶端102(a)可以發(fā)送一個(gè)輸出消息給發(fā)送相應(yīng)的請(qǐng)求310-314的復(fù)制品112(1)-112(3)。該請(qǐng)求指示擁有(也就是說(shuō),專用連接于)相應(yīng)的復(fù)制品112(1)-112(3)的客戶端102(a)。
在塊504,由客戶端所擁有的復(fù)制品接收輸出消息。該輸出消息包括用以識(shí)別發(fā)送輸出消息的客戶端的客戶端ID。在決定塊506,每一個(gè)復(fù)制品決定是否客戶端的ID與相應(yīng)的復(fù)制品的所有權(quán)域(Cowner)的值是否相等。在一個(gè)實(shí)施方式中,輸出消息僅被發(fā)送到由客戶端所擁有的復(fù)制品,決定塊506可以提供用來(lái)檢測(cè)錯(cuò)誤。例如,如果客戶端ID與所有權(quán)域的值不匹配,一個(gè)錯(cuò)誤信息就送到客戶端(塊508)。在另一個(gè)實(shí)施例中,輸出消息可以被送到所有的復(fù)制品,因而快505的決定的執(zhí)行可以被每一個(gè)復(fù)制品所利用,來(lái)決定是否輸出消息與那個(gè)復(fù)制品“相應(yīng)”。
如果客戶端的ID與所有權(quán)域的值相等(塊506),則然后在塊510,所有權(quán)域的值和時(shí)標(biāo)域的值被插入到隊(duì)列中。例如,所有權(quán)域和時(shí)標(biāo)域的值可以被復(fù)制到隊(duì)列中。在塊512,所有權(quán)域和時(shí)標(biāo)域的值而后從隊(duì)列的“前端”被重設(shè),同時(shí)用來(lái)設(shè)定值的相應(yīng)入口被從隊(duì)列中移走。該隊(duì)列,例如,可以根據(jù)時(shí)標(biāo)組織在隊(duì)列中的入口,因而,最老的入口被定位在隊(duì)列的“前端”(例如,是最先的入口讀取),以致于提供一個(gè)標(biāo)準(zhǔn)的“先來(lái)/先服務(wù)”裝置。因此,在塊510,512,用于所有權(quán)域和時(shí)標(biāo)域的值利用不是最近來(lái)的,也就是說(shuō),最老的,而被重設(shè)。隊(duì)列中的入口和所有權(quán)域和時(shí)標(biāo)域的先前值被插入到隊(duì)列中。
在塊514,每一個(gè)復(fù)制品都形成一個(gè)包括相應(yīng)的所有權(quán)域值和時(shí)標(biāo)域的響應(yīng)。在塊516,該響應(yīng)由復(fù)制品發(fā)送到客戶端。因此,實(shí)際上輸出操作的執(zhí)行是合作的。該輸出操作的語(yǔ)義性可以被認(rèn)為是“釋放+請(qǐng)求”,在其中復(fù)制品的所有權(quán)由另一個(gè)客戶端釋放出來(lái),而請(qǐng)求被插入到隊(duì)列中。有關(guān)釋放和請(qǐng)求操作的進(jìn)一步的討論可以在相關(guān)的圖6中找到。因此,當(dāng)復(fù)制品接收一個(gè)輸出消息時(shí),它將客戶端從勝利的坐位上移走,也就是說(shuō),存在于所有權(quán)域中的值(Cowner),并插入到隊(duì)列中。該固執(zhí)品而后從隊(duì)列中選擇最早的客戶端,然后標(biāo)示為勝利者。
該輸出功能導(dǎo)致了隊(duì)列的重配置。例如,因?yàn)樵趫D4中沒(méi)有客戶端“獲勝”而指示客戶端見(jiàn)的爭(zhēng)用的發(fā)生。這樣,輪流地,也意味著隊(duì)列正在被建立而勝利者不適當(dāng),例如由于網(wǎng)絡(luò)等待時(shí)間。依靠發(fā)布輸出消息,客戶端給復(fù)制品提供一個(gè)建立連貫的視圖的機(jī)會(huì),從一個(gè)到另一個(gè),而后選擇一個(gè)勝利者。該過(guò)程500可能被重復(fù)許多次知道一個(gè)勝利者被計(jì)算出。
典型互斥協(xié)議結(jié)構(gòu)
圖6是用以說(shuō)明一個(gè)由客戶端102(a)執(zhí)行且如圖2所描述的與圖4和5相關(guān)的復(fù)制品112(i)的互斥協(xié)議的一個(gè)執(zhí)行結(jié)構(gòu)600的方塊圖。該結(jié)構(gòu)600描述了通過(guò)箭頭的使用而在圖1的客戶端102(a)和復(fù)制品112(i)之間的信息交換。該結(jié)構(gòu)600被描述為根據(jù)一個(gè)信息處理器而分別用于客戶端102(a)和復(fù)制品112(i)。每一個(gè)典型的操作將結(jié)合由相應(yīng)的裝置執(zhí)行的典型偽碼而被論述。盡管多個(gè)操作中的一個(gè)或多個(gè)被分別顯示和/或在其他的操作之內(nèi),這些操作可以以多樣或的方式結(jié)合或重新整理。
客戶端102(a)和復(fù)制品112(i)可以單獨(dú)支持多樣用來(lái)提供前述的互斥的操作。下面的論述描述了一個(gè)典型的用于操作的執(zhí)行和信息的轉(zhuǎn)換的次序,因而客戶端102(a)和復(fù)制品112(i)之間的通訊被用信息處理器來(lái)說(shuō)明,它可以有客戶端和復(fù)制品112(i)執(zhí)行。
客戶端102(a)支持下述的狀態(tài)變量,“id”是客戶端102(a)的標(biāo)識(shí)符(例如,圖2的客戶端ID202),“resp
”是被用來(lái)存儲(chǔ)來(lái)自復(fù)制品的響應(yīng)的,例如圖2的響應(yīng)陣列204??蛻舳?02(a)初始化一個(gè)請(qǐng)求602的操作,來(lái)形成一個(gè)用于每一個(gè)被用來(lái)控制資源訪問(wèn)的復(fù)制品的請(qǐng)求,它將通過(guò)下面的偽代碼來(lái)執(zhí)行。
Request(CS){
timestamp=GetLogicalClock();//lanmport’s clock
for each R[i]ofCS
SendRequest(R[i],id,timestanmp);
}
客戶端102(a)期望訪問(wèn)多個(gè)資源中特定的一個(gè),在偽代碼中以“CS”表示,也就是說(shuō),關(guān)鍵部分。R[i]被用來(lái)代表多個(gè)復(fù)制品中的每一個(gè),例如,復(fù)制品112(i),它被用來(lái)允許對(duì)關(guān)鍵部分的訪問(wèn)。該被說(shuō)明作為請(qǐng)求602操作的“分操作”的“SendRequest”604操作,被用來(lái)執(zhí)行對(duì)每一個(gè)復(fù)制品“R[i]”的請(qǐng)求的發(fā)送,包括客戶端“id”和來(lái)自于時(shí)鐘的時(shí)際。
復(fù)制品112(i)支持前述的下述狀態(tài)變量Cowner,客戶端的擁有者;和Towner,是Cowner的值。一個(gè)隊(duì)列被用來(lái)存儲(chǔ)請(qǐng)求?;趶目蛻舳?02(a)接收的請(qǐng)求,復(fù)制品112(i)執(zhí)行該OnRequest606操作,它的偽代碼如下表示
OnRequest(C,timestamp){
If(Cowner=nil){
Cowner=C;
Towner=timestamp;
}
else
Queue.Insert(C,timestamp);
SendResponse(C,Cowner,Towner);
}
如在偽代碼中所示,復(fù)制品112(i)接收包括客戶端ID,用“C”表示的請(qǐng)求,和包括來(lái)自客戶端102(a)的請(qǐng)求的時(shí)標(biāo)。該OnRequest606操作然后決定是否復(fù)制品的所有權(quán)域Cowner是空的,如果是,將客戶端ID存儲(chǔ)在所有權(quán)域中,并將時(shí)標(biāo)存儲(chǔ)在時(shí)標(biāo)域Towner中。如果復(fù)制品的所有權(quán)域不是nil,客戶端ID“C”和時(shí)標(biāo)被通過(guò)執(zhí)行隊(duì)列操作610的插入操作608而被插入到隊(duì)列中。在該OnRequest和/或插入操作606,608的執(zhí)行過(guò)后,復(fù)制品112(i)執(zhí)行SendResponse操作612到客戶端102(a),“C”所有權(quán)域和時(shí)標(biāo)域的值(Cowner,和Towner)。
基于從復(fù)制品112(i)接收的一個(gè)或多個(gè)響應(yīng),客戶端02(a)初始化OnResponse614操作,它可以表示如下
OnResponse(R[i],owner,timestamp){
resp[i].owner=owner,
resp[i].timestamp=timestamp;
如在偽代碼中所示,該OnResponse614操作可以在相應(yīng)于相應(yīng)復(fù)制品112(i)的相應(yīng)陣列的位置存儲(chǔ)響應(yīng)和該響應(yīng)的時(shí)標(biāo)。
OnResponse614操作然后繼續(xù)計(jì)算一個(gè)勝利者,如下面的偽代碼所示
if(enough response received){
winner=ComputeWinner();
if(winner=self)//casel
return success;
如圖4中相關(guān)的前面描述和在偽代碼中所示,客戶端102(a)首先計(jì)算是否客戶端102(a)“贏得”訪問(wèn)資源的允許。如果有,客戶端102(a)因此被告知。如果沒(méi)有,OnResponse614操作的執(zhí)行繼續(xù)如下所示
else if(winner=nil){ //case3
for each resp[i].owner is self{
SendYield(R[i],id);
Clear(resp[i]);//reset the state
}
}
//case2some one else wins,then wait
}
}
如圖4和5中的相關(guān)的前面描述,如果沒(méi)有客戶端贏得對(duì)特定的資源的訪問(wèn),也就是說(shuō),特定部分(CS),客戶端102(a)初始化該SendYield616操作來(lái)發(fā)送輸出消息給由客戶端102(a)所擁有的復(fù)制品112(i)。如果另一個(gè)客戶端獲勝則該客戶端102(a)等待??蛻舳?02(a)而后重設(shè)它的狀態(tài)來(lái)接收額外的響應(yīng)。
該復(fù)制品112(i)相應(yīng)于輸出消息執(zhí)行一個(gè)OnYield618操作,該操作可以表示如下
OnYield(C){If(C=Cowner){Queue.Insert(C,Towner);RespQueue();}}RespQueue(){ //helper routine<Cowner,Towner>=Queue.Front();<!-- SIPO <DP n="17"> --><dp n="d17"/>SendResponse(Cowner,Cowner,Towner);Queue.Remove(Cowner);}
如在偽代碼中所示,如果復(fù)制品112(i)由客戶端102(a)所擁有,來(lái)自所有權(quán)和時(shí)標(biāo)文件的值被插入到隊(duì)列中,一個(gè)新的勝利者被計(jì)算出。該OnYield618操作可以初始化一個(gè)利用隊(duì)列操作610的一個(gè)集合的RespQueue操作。例如,一個(gè)QueueFront620操作首次執(zhí)行來(lái)決定隊(duì)列中做老的入口,例如,依靠檢測(cè)每一個(gè)入口的時(shí)標(biāo)。該SendResponse612操作然后被執(zhí)行用來(lái)發(fā)送另一個(gè)響應(yīng),以從QueueFront620操作的隊(duì)列中選擇指定的客戶端。移動(dòng)622操作然后被執(zhí)行以用來(lái)轉(zhuǎn)移該從隊(duì)列中已選擇的客戶端,以用于包含在復(fù)制品112(i)中的Cowner和Towner域。
客戶端還包括一個(gè)釋放624操作,可以利用以下的偽代碼來(lái)表示
Release(CS){
For all R[i]ofCS
SendRelease(R[i],id);
}
該釋放624操作被執(zhí)行以用來(lái)釋放復(fù)制品的所有權(quán)或者轉(zhuǎn)移形成的相應(yīng)的請(qǐng)求并由隊(duì)列的客戶端發(fā)送。例如,復(fù)制品,基于釋放信息的接收,,可能執(zhí)行一個(gè)OnRelease626操作,可以表示如下
OnRelease(C){
if(C=Cowner){
Cowner=nil;
if(not Queue.Empty())
RespQueue();
}
else if(Queue.Contains(C))
Queue.Remove(C);
}
如以上的偽代碼所示,如果復(fù)制品112(i)由客戶端102(a)所擁有,該客戶端102(i)被從Cowner和Towner域中移走。此外,該QueueEmpty630操作被執(zhí)行以用來(lái)決定是否隊(duì)列是空的。如果客戶端102(a)不是復(fù)制品112(i)的當(dāng)前擁有者,則該QueueContains632操作被執(zhí)行以確定是否隊(duì)列包含來(lái)自客戶端102(a)的請(qǐng)求,如果是,則QueueRemove622操作被執(zhí)行來(lái)移動(dòng)該請(qǐng)求,例如來(lái)自隊(duì)列的客戶端的ID和時(shí)際。
復(fù)制品也可以被配置成用來(lái)投票贊成相應(yīng)的可用資源的共享。例如,如果所有的來(lái)自DHT的法定成員,每一個(gè)成員可以改為對(duì)他們的共享空間投票。因此,如果該客戶端聚集了總分?jǐn)?shù)為f=m/n的全體空間的話,則一個(gè)統(tǒng)一就達(dá)到了。因此,當(dāng)保留相同的權(quán)利來(lái)調(diào)整會(huì)員資格的變化時(shí),不需要指定數(shù)目的復(fù)制品。
在環(huán)境中的失敗
前面所描述的互斥協(xié)議可以被用來(lái)在圖1的環(huán)境100中尋址失敗。例如,在沖突后,一個(gè)復(fù)制品可能準(zhǔn)許投票(也就是說(shuō),發(fā)出一個(gè)新響應(yīng))給一個(gè)新用戶,不管對(duì)于前述的客戶端,事實(shí)是如何實(shí)現(xiàn)的。因此,該比率m/n可以被升高以減少安全性破壞的可能性。在另一個(gè)例子中,在隊(duì)列中的每一個(gè)入口可能丟失,那將可能造成一個(gè)客戶端等待一個(gè)將不會(huì)到來(lái)的響應(yīng)。為了尋址這樣的例子,復(fù)制品存儲(chǔ)器將被利用一個(gè)在下述的部分中討論的信息補(bǔ)償裝置而重新建立。在進(jìn)一步的例子中,利用特定資源的當(dāng)前客戶端,也就是說(shuō),CS,在退出前崩潰,這將造成復(fù)制品的“阻塞”。因此,復(fù)制品將批準(zhǔn)對(duì)具有可更新的租用的客戶端的權(quán)限。當(dāng)租用期滿時(shí),復(fù)制品將批準(zhǔn)隊(duì)列中的下一個(gè)客戶端(如果有)的權(quán)限。而在另一個(gè)例子中,在客戶端和復(fù)制品中間的一個(gè)不可靠的通訊也將引起相同的問(wèn)題。
信息補(bǔ)償
信息補(bǔ)償是一個(gè)可以被用來(lái)在沒(méi)有超載另一個(gè)沒(méi)有被重啟的復(fù)制品時(shí),重建一個(gè)復(fù)制品重啟狀態(tài)的裝置?;谝粋€(gè)請(qǐng)求,復(fù)制品預(yù)測(cè)一個(gè)期望等待時(shí)間Tw并將它傳達(dá)給客戶端。該期望等待時(shí)間通知客戶端在另一個(gè)入口的很久以前等待,也就是說(shuō),再發(fā)請(qǐng)求。例如,Tw的一個(gè)試驗(yàn)計(jì)算是Tw=TCS*(P+1/2),其中,P是客戶端在隊(duì)列中的位置,TCS是CS的平均持續(xù)時(shí)間,根據(jù)復(fù)制品的觀測(cè),是在任意兩個(gè)連續(xù)釋放操作之間的內(nèi)部時(shí)間。在方程式中的1/2被用來(lái)補(bǔ)償復(fù)制品的當(dāng)前擁有者。在一個(gè)實(shí)施例中,Tw根據(jù)每一個(gè)入口的接收而更新。
該信啟、補(bǔ)償裝置的使用可以被配置成它不干涉客戶端和復(fù)制品的“正常”操作。例如,假設(shè)該復(fù)制品沒(méi)有崩潰。如果客戶端在預(yù)定的入口之前接收到一個(gè)響應(yīng),最少的附加資源被客戶端利用。此外,如果客戶端重試,也就是說(shuō),重發(fā)請(qǐng)求,該建議的Tw可能就不準(zhǔn)確。在這樣的情況下,客戶端將重試更新Tw。因此,如果復(fù)制品通過(guò)重設(shè)做到的話,然后該隊(duì)列就被重建成和先前的順序類似的順序。
典型計(jì)算設(shè)備
在這里所描述的多樣的部件和功能都由多個(gè)單獨(dú)的計(jì)算機(jī)所執(zhí)行。圖7示出了一個(gè)計(jì)算環(huán)境700的典型例子的部件,包括一臺(tái)計(jì)算機(jī),涉及相關(guān)標(biāo)號(hào)702。圖1的來(lái)自多個(gè)客戶端102(a)和多個(gè)計(jì)算裝置104(1)-104(B)的該計(jì)算機(jī)702可能相同或不同。在圖7中所示的該部件僅僅是例子,不能被理解為對(duì)本發(fā)明的功能的限定;本發(fā)明不必須基于圖7所示的特征。
通常,多種通用或特殊用計(jì)算系統(tǒng)配置可以被應(yīng)用。例如適合于用于被發(fā)明的公知的計(jì)算系統(tǒng),環(huán)境和/或配置,但不局限于,個(gè)人計(jì)算機(jī),服務(wù)器計(jì)算機(jī),手提式或膝上型裝置,多處理系統(tǒng),微處理系統(tǒng),置頂盒,可變成電器設(shè)備,網(wǎng)絡(luò)PC機(jī),就緒網(wǎng)絡(luò)設(shè)備,小型計(jì)算機(jī),大型計(jì)算機(jī),包括所有上述系統(tǒng)和裝置的分布式計(jì)算環(huán)境,等等。
計(jì)算機(jī)的功能可以根據(jù)計(jì)算機(jī)指令在很多情況中體現(xiàn),例如軟件部分,由計(jì)算機(jī)執(zhí)行。通常,軟件部分包括時(shí)序,程序,對(duì)象,元件,數(shù)據(jù)結(jié)構(gòu),等等,可以執(zhí)行特定的任務(wù)和執(zhí)行特定的抽象數(shù)據(jù)類型。任務(wù)一可以通過(guò)通過(guò)通訊網(wǎng)絡(luò)連接的遠(yuǎn)程處理裝置而執(zhí)行。在分布式計(jì)算環(huán)境中,如相關(guān)的圖1和6的前述,軟件部分可以被定位在本地或遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)上。
該指令和/或軟件部分可以在不同的時(shí)間存儲(chǔ)在可以是計(jì)算機(jī)的任何一部分且能夠被計(jì)算機(jī)所讀取的多樣化的計(jì)算機(jī)可讀介質(zhì)上。程序被典型地分布,例如,在軟磁盤,CD-ROM,DVD,或者多種形式的通訊介質(zhì),例如一個(gè)調(diào)制信號(hào)。從這里,他們被安裝或載入到計(jì)算機(jī)的第二存儲(chǔ)器中。在執(zhí)行時(shí),他們被部分地載入到計(jì)算機(jī)的原始電存儲(chǔ)器中。
為了便于說(shuō)明,程序和其他可執(zhí)行程序部分,例如操作系統(tǒng)在這里被說(shuō)明為離散塊,盡管它被認(rèn)為這樣的程序和部件在不同的時(shí)間存在于計(jì)算機(jī)的不同存儲(chǔ)部件中,且被計(jì)算機(jī)的數(shù)據(jù)處理器所執(zhí)行。
計(jì)算機(jī)702典型包括多種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是任何可以被計(jì)算機(jī)702所訪問(wèn)的可用介質(zhì),并包括易失性和非易失性介質(zhì),可移動(dòng)和不可移動(dòng)介質(zhì)。通過(guò)例子,但不局限于,計(jì)算機(jī)可讀介質(zhì)可能包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通訊介質(zhì)?!坝?jì)算機(jī)存儲(chǔ)介質(zhì)”包括易失性和非易失性,可移動(dòng)和不可移動(dòng)介質(zhì),可以由任何用于存儲(chǔ)信息,例如計(jì)算機(jī)可讀指令,數(shù)據(jù)結(jié)構(gòu),程序模塊或其他數(shù)據(jù),的方法或技術(shù)來(lái)執(zhí)行。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但是不局限于,RAM,ROM,EEPROM,閃存或其他存儲(chǔ)器技術(shù),CD-ROM,數(shù)字化視頻光盤(DVD)或其他光盤存儲(chǔ),磁盒,磁帶,磁盤存儲(chǔ)器或其他磁存儲(chǔ)裝置,或任何其他可以被用來(lái)存儲(chǔ)期望信息和可以被計(jì)算機(jī)702訪問(wèn)的介質(zhì)。計(jì)算機(jī)介質(zhì)體現(xiàn)在計(jì)算機(jī)可讀指令,數(shù)據(jù)結(jié)構(gòu),程序塊或其他在調(diào)制數(shù)據(jù)信號(hào)中的數(shù)據(jù),如一個(gè)載波或其他傳輸裝置和包括任何信息發(fā)送介質(zhì)。該術(shù)語(yǔ)“調(diào)制數(shù)據(jù)信號(hào)”意味著一個(gè)具有一個(gè)或多個(gè)它自己的特征設(shè)置并可以以根據(jù)信號(hào)中的代碼信息的形式而改變的信號(hào)。通過(guò)例子,但不局限于,通訊介質(zhì)包括有線介質(zhì),例如有線網(wǎng)絡(luò)或直線連接器和無(wú)線介質(zhì),例如聲的,RF,紅外線的或其他的無(wú)線介質(zhì)。上述的任意的組合也包含在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。
系統(tǒng)存儲(chǔ)器706包括以易失性和/或非易失性存儲(chǔ)器,例如只讀存儲(chǔ)器(ROM)710和隨機(jī)存儲(chǔ)器(RAM)712的形式而存在的計(jì)算機(jī)存儲(chǔ)介質(zhì)。一個(gè)基本輸入/輸出系統(tǒng)714(BIOS),包括一個(gè)在存在于計(jì)算機(jī)702中的各部件間幫助傳輸信息的基礎(chǔ)程序,例如,在啟動(dòng)時(shí),典型地存儲(chǔ)在ROM710中。RAM712典型地包含數(shù)據(jù)和/或軟件部分,可以被立即訪問(wèn)和/或不久由處理單元704處理。通過(guò)例子,但不局限于,圖7說(shuō)明了操作系統(tǒng)716,應(yīng)用程序718,軟件部分720,和程序數(shù)據(jù)722。
該計(jì)算機(jī)702還可能包括其他可移動(dòng)的/不可移動(dòng)的,易失性/非易失性的計(jì)算機(jī)存儲(chǔ)介質(zhì)。僅僅通過(guò)例子,圖7說(shuō)明了一個(gè)硬盤驅(qū)動(dòng)器724,讀出或?qū)懭氩豢梢苿?dòng)的,非易失性的磁介質(zhì),一個(gè)磁盤驅(qū)動(dòng)器726,讀取或?qū)懭胍粋€(gè)可移動(dòng)的,非易失性的磁盤728,和一個(gè)光盤驅(qū)動(dòng)器730,讀取或?qū)懭胍粋€(gè)可移動(dòng)的,非易失性的光盤732,例如CD-ROM或其他光學(xué)介質(zhì)。其他的可以在典型的操作環(huán)境中使用的可移動(dòng)的/不可移動(dòng)的,易失性的/非易失性的計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不局限于,磁帶盒,閃存卡,通用數(shù)字盤,數(shù)字化錄象磁帶,固態(tài)RAM,固態(tài)ROM,等等。該硬盤驅(qū)動(dòng)器724典型地通過(guò)一個(gè)非易失性存儲(chǔ)器接口,例如數(shù)據(jù)介質(zhì)接口734而連接于系統(tǒng)總線708,同時(shí),磁盤驅(qū)動(dòng)器726和光盤驅(qū)動(dòng)器730通過(guò)一個(gè)可移動(dòng)式存儲(chǔ)器接口而典型地與系統(tǒng)總線708連接。
以上所述的和圖7所說(shuō)明的該驅(qū)動(dòng)器和他們連帶的計(jì)算機(jī)存儲(chǔ)介質(zhì)提供用于計(jì)算機(jī)702的計(jì)算機(jī)可讀指令,數(shù)據(jù)結(jié)構(gòu),軟件部分,和其他數(shù)據(jù)的存儲(chǔ)。在圖7,例如,硬盤驅(qū)動(dòng)器724被說(shuō)明為存儲(chǔ)操作系統(tǒng)716’,應(yīng)用程序718’,軟件部分720’,和程序數(shù)據(jù)722’。注意,這些部件可以與操作系統(tǒng)716,應(yīng)用程序718,軟件部分720,和程序數(shù)據(jù)722相同或不同。操作系統(tǒng)716’,應(yīng)用程序718’,軟件部分720’,和程序數(shù)據(jù)722’在這里給出了不同的數(shù)字符號(hào)來(lái)說(shuō)明,至少他們是不同的拷貝。用戶可以通過(guò)輸入裝置給計(jì)算機(jī)702輸入命令和信息。輸入裝置例如鍵盤736,和指示裝置(未示出),通常涉及鼠標(biāo),跟蹤球,或觸摸板。其他的輸入裝置可能包括能源裝置(例如,提供數(shù)據(jù)流的擴(kuò)音器738或照相機(jī)740),操縱桿,游戲墊,圓盤式衛(wèi)星電視天線,掃描儀,等等。這些和其他的輸入設(shè)備通常通過(guò)一個(gè)耦合于數(shù)據(jù)總線的輸入/輸出接口(I/O)而被連接于處理單元702,但是,也可以連接于其他接口和總線結(jié)構(gòu),例如并行端口,游戲端口,或通用串行總線架構(gòu)(USB)。顯示器744或其他類型的顯示裝置也通過(guò)一個(gè)接口而被連接于總線708,例如視頻適配器746。除了顯示器744之外,計(jì)算機(jī)還可以包括其他的翻譯裝置(例如,揚(yáng)聲器)和一個(gè)或多個(gè)可以通過(guò)I/O接口742而連接的打印機(jī)。
該計(jì)算機(jī)可以通過(guò)利用與一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)的邏輯連接而在一個(gè)網(wǎng)絡(luò)環(huán)境中運(yùn)行,例如,一個(gè)遠(yuǎn)程設(shè)備750。該遠(yuǎn)程設(shè)備750可以是個(gè)人計(jì)算機(jī),網(wǎng)絡(luò)就緒設(shè)備,服務(wù)器,路由器,網(wǎng)絡(luò)PC,同位體設(shè)備或其他普通的網(wǎng)絡(luò)結(jié)點(diǎn),和典型地包括多個(gè)或所有的與上述的計(jì)算機(jī)702相關(guān)的元件。在圖7中所描述的邏輯連接包括一個(gè)本地網(wǎng)絡(luò)(LAN)752和一個(gè)廣域網(wǎng)(WAN)754。盡管在圖7中所示的該WAN是國(guó)際互連網(wǎng),該WAN754還可以包括其他網(wǎng)絡(luò)。這樣的網(wǎng)絡(luò)環(huán)境在辦公室,企業(yè)計(jì)算機(jī)網(wǎng)絡(luò),企業(yè)內(nèi)部互聯(lián)網(wǎng)中是很普遍的。
當(dāng)用在LAN網(wǎng)絡(luò)環(huán)境中時(shí),計(jì)算機(jī)702通過(guò)一個(gè)網(wǎng)絡(luò)接口或適配器756而連接于LAN網(wǎng)絡(luò)752。當(dāng)用在WAN網(wǎng)絡(luò)環(huán)境中時(shí),計(jì)算機(jī)702典型地包括一個(gè)調(diào)制解調(diào)器758或其他的用于在國(guó)際互連網(wǎng)754上建立通訊的設(shè)備。調(diào)制解調(diào)器758,可以是內(nèi)部的或外部的,通過(guò)一個(gè)I/O接口或其他合適的裝置而連接于數(shù)據(jù)總線708。在一個(gè)網(wǎng)絡(luò)環(huán)境中,所述的與計(jì)算機(jī)702相關(guān)的程序塊,或者其中的部分,可以存儲(chǔ)在遠(yuǎn)程設(shè)備750中。通過(guò)例子,但不局限于,圖7說(shuō)明了歸屬于遠(yuǎn)程色后輩50的遠(yuǎn)程軟件部件760。可以理解所示的網(wǎng)絡(luò)連接是典型的,其他用來(lái)在計(jì)算機(jī)間建立通訊連接的手段也可以被用到。
結(jié)論
已經(jīng)被描述的互斥技術(shù)可以利用邏輯復(fù)制品和法定統(tǒng)一來(lái)處理對(duì)等網(wǎng)絡(luò)中的系統(tǒng)動(dòng)態(tài)。由在這里所描述的技術(shù)所提供的在客戶端和復(fù)制品之間的準(zhǔn)一致性和協(xié)作性可以被利用來(lái)阻止在網(wǎng)絡(luò)等待時(shí)間和爭(zhēng)用中的變化。該互斥技術(shù)還尋址失敗,例如依靠利用信息補(bǔ)償。
盡管本發(fā)明被用語(yǔ)言描述為特定的結(jié)構(gòu)特征和/或方法行為,可以理解在附加權(quán)利要求中所定義的本發(fā)明并不必須作為所描述的特定特征或行為的限定。反而,該特定的特征和行為被揭露為本發(fā)明權(quán)利要求的典型實(shí)現(xiàn)形式。
權(quán)利要求
1、一種方法,包括
在多個(gè)邏輯復(fù)制品中的每一個(gè)中,從客戶端接收一個(gè)請(qǐng)求,其中
每一個(gè)所述邏輯復(fù)制品被配置成專用連接于一個(gè)所述的客戶端;
每一個(gè)所述邏輯復(fù)制品包括一個(gè)隊(duì)列;和
用來(lái)訪問(wèn)多個(gè)資源中的一個(gè)的請(qǐng)求;和
當(dāng)指定的所述邏輯復(fù)制品中的一個(gè)被專用連接到另一個(gè)所述客戶端時(shí),將請(qǐng)求儲(chǔ)存在該指定的所述邏輯復(fù)制品的隊(duì)列中。
2、如權(quán)利要求1所述的方法,進(jìn)一步包括在每一個(gè)所述的邏輯復(fù)制品,形成一個(gè)識(shí)別邏輯復(fù)制品的專用連接的響應(yīng),用以傳達(dá)給客戶端。
3、如權(quán)利要求2所述的方法,其中每一個(gè)所述的響應(yīng)被客戶端用來(lái)決定是否對(duì)一個(gè)所述資源的訪問(wèn)被允許。
4、如權(quán)利要求2所述的方法,其中每一個(gè)所述的響應(yīng)被客戶端用來(lái)決定是否對(duì)一個(gè)所述資源的訪問(wèn)被允許;和
當(dāng)客戶端與多個(gè)邏輯復(fù)制品中的法定數(shù)目專用連接時(shí),客戶端被允許訪問(wèn)。
5、如權(quán)利要求2所述的方法,其中
每一個(gè)所述的響應(yīng)被客戶端用來(lái)決定是否對(duì)一個(gè)所述資源的訪問(wèn)被允許;和
當(dāng)另一個(gè)客戶端被允許時(shí),客戶端等待另一個(gè)來(lái)自于所述的邏輯復(fù)制品的響應(yīng)。
6、如權(quán)利要求2所述的方法,其中
該客戶端是多個(gè)客戶端中的一個(gè);
每一個(gè)所述的響應(yīng)被用來(lái)決定是否多個(gè)客戶端中的一個(gè)被允許訪問(wèn)一個(gè)所述的資源;和
如果多個(gè)客戶端中沒(méi)有一個(gè)被允許,則至少由一個(gè)所述的客戶端形成一個(gè)輸出消息,用于
與多個(gè)邏輯復(fù)制品通訊;和
使得多個(gè)邏輯復(fù)制品形成另一個(gè)所述的響應(yīng)。
7、如權(quán)利要求6所述的方法,其中另一個(gè)所述的響應(yīng)是從前述的存儲(chǔ)在相應(yīng)的所述隊(duì)列中的所述請(qǐng)求中形成的。
8、如權(quán)利要求1所述的方法,其中
多個(gè)資源利用一個(gè)分布式散列平臺(tái)(DHT)而被分割;
該DHT將多個(gè)資源中的每一個(gè)分割成相應(yīng)的多個(gè)存儲(chǔ)桶;和
多個(gè)存儲(chǔ)桶由對(duì)等網(wǎng)絡(luò)中的多個(gè)計(jì)算裝置提供。
9、如權(quán)利要求8所述的方法,其中多個(gè)計(jì)算裝置提供失敗過(guò)濾功能,從而當(dāng)一個(gè)提供相應(yīng)的所述存儲(chǔ)桶的所述計(jì)算裝置對(duì)客戶端來(lái)說(shuō)是不可利用時(shí),該相應(yīng)的所述存儲(chǔ)桶由另一個(gè)所述的計(jì)算裝置制作成可用的。
10、一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),包括計(jì)算機(jī)可執(zhí)行指令,當(dāng)在計(jì)算機(jī)上執(zhí)行時(shí),指示計(jì)算機(jī)實(shí)現(xiàn)如權(quán)利要求1所描述的方法。
11、一種方法,包括
由一個(gè)客戶端形成一個(gè)請(qǐng)求,用來(lái)與多個(gè)邏輯復(fù)制品通訊,其中,該請(qǐng)求被用于多個(gè)資源中的其中一個(gè);
客戶端從多個(gè)邏輯復(fù)制品中接收多個(gè)響應(yīng);
從多個(gè)響應(yīng)中判定是否客戶端被允許利用這一個(gè)所述的資源;和
當(dāng)另一個(gè)客戶端被允許時(shí),所述客戶端等待著另一個(gè)所述的多個(gè)響應(yīng)而不必發(fā)送另一個(gè)所述請(qǐng)求。
12、如權(quán)利要求11所述的方法,其中
該客戶端是多個(gè)客戶端中的一個(gè);和
每一個(gè)所述的復(fù)制品包括一個(gè)隊(duì)列;和
當(dāng)多個(gè)客戶端中沒(méi)有一個(gè)被允許時(shí),則至少由一個(gè)所述的客戶端形成一個(gè)輸出消息,用于
與多個(gè)邏輯復(fù)制品通訊;和
使得多個(gè)邏輯復(fù)制品從一個(gè)相應(yīng)的所述隊(duì)列中形成另一種多個(gè)所述的響應(yīng)。
13、如權(quán)利要求11所述的方法,其中每一個(gè)所述的響應(yīng)被配置成用以識(shí)別是否一個(gè)相應(yīng)的所述邏輯復(fù)制品被客戶端所擁有。
14、如權(quán)利要求11所述的方法,其中
每一個(gè)所述的響應(yīng)被配置成用以識(shí)別是否一個(gè)相應(yīng)的所述邏輯復(fù)制品被客戶端所擁有,和
當(dāng)客戶端與多個(gè)邏輯復(fù)制品中的法定數(shù)目專用連接時(shí),客戶端被允許使用一個(gè)所述的資源。
15、如權(quán)利要求11所述的方法,其中
該DHT將多個(gè)資源分割成多個(gè)存儲(chǔ)桶;
多個(gè)存儲(chǔ)桶由對(duì)等網(wǎng)絡(luò)中的多個(gè)計(jì)算裝置提供;和
多個(gè)計(jì)算裝置提供失敗過(guò)濾功能,從而當(dāng)一個(gè)提供相應(yīng)的所述存儲(chǔ)桶的所述計(jì)算裝置對(duì)多個(gè)客戶端來(lái)說(shuō)是不可利用時(shí),該相應(yīng)的所述存儲(chǔ)桶由另一個(gè)所述的計(jì)算裝置制作成可用的。
16、如權(quán)利要求11所述的方法,其中
每一個(gè)所述的邏輯復(fù)制品包括一個(gè)存儲(chǔ)一個(gè)或多個(gè)所述請(qǐng)求的隊(duì)列;和
每一個(gè)在該隊(duì)列中的所述請(qǐng)求相應(yīng)于當(dāng)該請(qǐng)求由一個(gè)相應(yīng)的所述邏輯復(fù)制品接收時(shí)而被組織。
17、一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),包括計(jì)算機(jī)可執(zhí)行指令,當(dāng)在計(jì)算機(jī)上執(zhí)行時(shí),指示計(jì)算機(jī)實(shí)現(xiàn)如權(quán)利要求11所描述的方法。
18、一種方法,包括
在多個(gè)客戶端中的每一個(gè)客戶端形成一個(gè)被用于多個(gè)資源中的其中一個(gè)的請(qǐng)求,用來(lái)與多個(gè)邏輯復(fù)制品通訊;
在所述多個(gè)客戶端從所述多個(gè)邏輯復(fù)制品中接收多個(gè)響應(yīng);和
在每一個(gè)利用所述多個(gè)響應(yīng)的所述客戶端處判定是否所述多個(gè)客戶端中的一個(gè)被允許利用這一個(gè)所述的資源;和
當(dāng)所述多個(gè)客戶端中沒(méi)有一個(gè)被允許利用這一個(gè)所述的資源時(shí),由至少一個(gè)所述客戶端形成一個(gè)輸出消息,用于
與所述多個(gè)邏輯復(fù)制品中的一個(gè)或多個(gè)通訊;和
使得一個(gè)或多個(gè)所述邏輯復(fù)制品中的每一個(gè)從存儲(chǔ)前述的從一個(gè)或多個(gè)客戶端接收的請(qǐng)求的相應(yīng)隊(duì)列中形成另一個(gè)所述響應(yīng)。
19、如權(quán)利要求18所述的方法,其中
每一個(gè)所述的響應(yīng)被配置成用以識(shí)別是否一個(gè)相應(yīng)的所述邏輯復(fù)制品被專用連接于多個(gè)客戶端中的一個(gè);
每一個(gè)隊(duì)列中的前述請(qǐng)求,根據(jù)當(dāng)前述的請(qǐng)求被一個(gè)相應(yīng)的所述邏輯復(fù)制品接收時(shí)而被組織;和
該輸出消息基于一個(gè)最早的前述存在于一個(gè)相應(yīng)的所述隊(duì)列中的請(qǐng)求,使得一個(gè)或多個(gè)所述邏輯復(fù)制品在另一個(gè)所述響應(yīng)中識(shí)別所有權(quán)。
20、如權(quán)利要求19所述的方法,其中該輸出消息使得每一個(gè)至少由一個(gè)所述的客戶端所擁有的所述邏輯復(fù)制品,基于相應(yīng)的所述隊(duì)列來(lái)選擇一個(gè)不同的所述客戶端。
21.如權(quán)利要求18所述的方法,其中當(dāng)多個(gè)客戶端中的一個(gè)與多個(gè)邏輯復(fù)制品中的法定數(shù)目專用連接時(shí),該客戶端對(duì)一個(gè)所述的資源的利用被允許。
22.如權(quán)利要求18所述的方法,進(jìn)一步包括當(dāng)一個(gè)所述的客戶端被允許訪問(wèn)資源時(shí),一個(gè)或多個(gè)其他的不被允許的客戶端等待著額外的多個(gè)所述響應(yīng)。
23.如權(quán)利要求18所述的方法,其中
多個(gè)資源利用一個(gè)分布式散列平臺(tái)(DHT)而被分割;
該DHT將多個(gè)資源分割成多個(gè)存儲(chǔ)桶;
多個(gè)存儲(chǔ)桶由對(duì)等網(wǎng)絡(luò)中的多個(gè)計(jì)算裝置提供;和
多個(gè)計(jì)算裝置提供失敗過(guò)濾功能,從而當(dāng)一個(gè)提供相應(yīng)的所述存儲(chǔ)桶的所述計(jì)算裝置對(duì)多個(gè)客戶端來(lái)說(shuō)是不可利用時(shí),該相應(yīng)的所述存儲(chǔ)桶由另一個(gè)所述的計(jì)算裝置制作成可用的。
24.一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),包括計(jì)算機(jī)可執(zhí)行指令,當(dāng)在計(jì)算機(jī)上執(zhí)行時(shí),指示計(jì)算機(jī)實(shí)現(xiàn)如權(quán)利要求18所描述的方法。
25.一個(gè)對(duì)等網(wǎng)絡(luò)包括利用一個(gè)法定統(tǒng)一協(xié)議而允許資源訪問(wèn)的邏輯復(fù)制品。
26.如權(quán)利要求25所述的對(duì)等網(wǎng)絡(luò),其中每一個(gè)所述的邏輯復(fù)制品是一個(gè)可以由一個(gè)或多個(gè)計(jì)算裝置所執(zhí)行的同位體。
27.如權(quán)利要求25所述的對(duì)等網(wǎng)絡(luò),其中該法定統(tǒng)一協(xié)議被用來(lái)允許一個(gè)與邏輯復(fù)制品中的法定數(shù)目專用連接的客戶端對(duì)資源的訪問(wèn)。
28.如權(quán)利要求25所述的對(duì)等網(wǎng)絡(luò),其中每一個(gè)所述的邏輯復(fù)制品包括一個(gè)用來(lái)存儲(chǔ)從一個(gè)或多個(gè)用來(lái)訪問(wèn)資源的客戶端接收到的請(qǐng)求的隊(duì)列。
29.如權(quán)利要求28所述的對(duì)等網(wǎng)絡(luò),其中當(dāng)一個(gè)相應(yīng)的所述邏輯復(fù)制品被專用連接于另一個(gè)所述客戶端時(shí),每一個(gè)所述的隊(duì)列被用來(lái)存儲(chǔ)從一個(gè)所述客戶端接收到的請(qǐng)求。
30.如權(quán)利要求25所述的對(duì)等網(wǎng)絡(luò),其中資源訪問(wèn)被用于利用一個(gè)分布式散列表分割的多個(gè)資源中的一個(gè)或多個(gè)。
31.如權(quán)利要求25所述的對(duì)等網(wǎng)絡(luò),其中
每一個(gè)所述的邏輯復(fù)制品使用一個(gè)信息補(bǔ)償裝置來(lái)為客戶端提供一個(gè)期望等待時(shí)間以用來(lái)接收用于訪問(wèn)資源的請(qǐng)求的一個(gè)響應(yīng);和
該期望等待時(shí)間被定義為客戶端將要在重發(fā)請(qǐng)求之前所等待的一段時(shí)間。
32.一種系統(tǒng),包括
一個(gè)網(wǎng)絡(luò);
多個(gè)通訊式地連接于網(wǎng)絡(luò)客戶端;
多個(gè)通訊式地連接于網(wǎng)絡(luò)的計(jì)算裝置和包括多個(gè)邏輯復(fù)制品;其中每一個(gè)邏輯復(fù)制品
被配置成可以在任何一個(gè)特定時(shí)間專用地連接于多個(gè)客戶端中的一個(gè);和
包括一個(gè)用于存儲(chǔ)一個(gè),當(dāng)邏輯復(fù)制品被專用連接于另一個(gè)客戶端時(shí),來(lái)源于一個(gè)客戶端的用以訪問(wèn)資源的請(qǐng)求的隊(duì)列
33,如權(quán)利要求32所述的系統(tǒng),其中每一個(gè)邏輯復(fù)制品被進(jìn)一步配置成形成一個(gè)響應(yīng)給一個(gè)指定另一個(gè)所述客戶端的請(qǐng)求。
34.如權(quán)利要求33所述的系統(tǒng),其中每一個(gè)所述的客戶端被配置成根據(jù)每一個(gè)所述的響應(yīng)決定是否多個(gè)客戶端中的一個(gè)被允許訪問(wèn)一個(gè)所述的資源。
35.如權(quán)利要求32所述的系統(tǒng),其中
每一個(gè)所述的邏輯復(fù)制品進(jìn)一步被配置成形成一個(gè)響應(yīng)給一個(gè)指定何時(shí)所述的客戶端擁有該邏輯復(fù)制品的請(qǐng)求;
每一個(gè)所述的客戶端被配置成根據(jù)每一個(gè)所述的響應(yīng)決定是否多個(gè)客戶端中的一個(gè)被允許利用一個(gè)所述的分割資源;和
當(dāng)一個(gè)所述的客戶端與多個(gè)邏輯復(fù)制品中的法定數(shù)目專用連接時(shí),許可被獲得。
36.如權(quán)利要求32所述的系統(tǒng),其中
每一個(gè)所述的邏輯復(fù)制品進(jìn)一步被配置成形成一個(gè)響應(yīng)給一個(gè)指定是否一個(gè)所述的客戶端與邏輯復(fù)制品專用連接的請(qǐng)求;和
每一個(gè)所述的響應(yīng)被用來(lái)由每一個(gè)所述的客戶端決定是否該客戶端被允許訪問(wèn)一個(gè)所述的分割資源,和如果不,該客戶端等待另一個(gè)所述的響應(yīng)。
37.如權(quán)利要求32所述的系統(tǒng),其中
每一個(gè)所述的邏輯復(fù)制品進(jìn)一步被配置成形成一個(gè)響應(yīng)給一個(gè)指定是否一個(gè)所述的客戶端與邏輯復(fù)制品專用連接的請(qǐng)求;
每一個(gè)所述的響應(yīng)被用來(lái)由多個(gè)客戶端決定是否一個(gè)所述的客戶端被允許利用一個(gè)所述的資源;和
如果多個(gè)客戶端中沒(méi)有一個(gè)被允許,則至少由一個(gè)所述的客戶端形成一個(gè)輸出消息,用于
與多個(gè)邏輯復(fù)制品中的一個(gè)或多個(gè)通訊;和
使得一個(gè)或多個(gè)所述邏輯復(fù)制品中的每一個(gè)從存儲(chǔ)在前述的從一個(gè)或多個(gè)客戶端接受的請(qǐng)求中的相應(yīng)隊(duì)列中形成另一個(gè)所述響應(yīng)。
38.如權(quán)利要求32所述的系統(tǒng),其中
一個(gè)分布式散列表將多個(gè)資源分割成多個(gè)存儲(chǔ)桶;
多個(gè)存儲(chǔ)桶由對(duì)等網(wǎng)絡(luò)中的多個(gè)計(jì)算裝置提供;和
多個(gè)計(jì)算裝置提供失敗過(guò)濾功能,從而當(dāng)一個(gè)提供相應(yīng)的所述存儲(chǔ)桶的所述計(jì)算裝置對(duì)多個(gè)客戶端來(lái)說(shuō)是不可利用時(shí),該相應(yīng)的所述存儲(chǔ)桶由另一個(gè)所述的計(jì)算裝置制作成可用的。
39.如權(quán)利要求32所述的系統(tǒng),其中
每一個(gè)所述的邏輯復(fù)制品使用一個(gè)信息補(bǔ)償裝置來(lái)提供一個(gè)期望等待時(shí)間以用來(lái)接收一個(gè)響應(yīng);和
該期望等待時(shí)間被定義為一個(gè)相應(yīng)的所述的客戶端將要在重發(fā)一個(gè)相應(yīng)的所述請(qǐng)求之前所等待的一段時(shí)間。
40.一個(gè)系統(tǒng),包括
形成用于一個(gè)資源的多個(gè)請(qǐng)求的裝置;
用以在一個(gè)通訊連接中聯(lián)網(wǎng)形成裝置的網(wǎng)絡(luò)裝置;
用來(lái)提供資源的裝置,其中該提供裝置被通訊連接于網(wǎng)絡(luò)裝置并包括多個(gè)邏輯復(fù)制品裝置,用于
對(duì)多個(gè)用來(lái)指定哪一個(gè)形成裝置擁有一個(gè)相應(yīng)的所述邏輯復(fù)制品裝置的請(qǐng)求中的每一個(gè)請(qǐng)求形成一個(gè)響應(yīng);和
存儲(chǔ)一個(gè)或多個(gè)所述的請(qǐng)求。
41.如權(quán)利要求4所述的系統(tǒng),其中
該提供裝置包括
多個(gè)通訊連接的計(jì)算裝置以形成一個(gè)對(duì)等網(wǎng)絡(luò);和
一個(gè)分布式散列表;和
包括多個(gè)客戶端的形成裝置。
全文摘要
一種用于動(dòng)態(tài)對(duì)等網(wǎng)絡(luò)環(huán)境的互斥技術(shù)被描述。在一個(gè)實(shí)施例中,一種方法,包括在多個(gè)邏輯復(fù)制品中的每一個(gè)中,從客戶端接收一個(gè)請(qǐng)求。每一個(gè)邏輯復(fù)制品包括一個(gè)隊(duì)列,被用來(lái)專用連接客戶端中的一個(gè)。該隊(duì)列被用來(lái)訪問(wèn)多個(gè)資源中的一個(gè)。當(dāng)指定的邏輯復(fù)制品中的一個(gè)被專用連接到客戶端中的另一個(gè)時(shí),請(qǐng)求被儲(chǔ)存在該指定的邏輯復(fù)制品的隊(duì)列中。
文檔編號(hào)H04L12/00GK1719771SQ200510064089
公開(kāi)日2006年1月11日 申請(qǐng)日期2005年2月25日 優(yōu)先權(quán)日2004年7月8日
發(fā)明者Q·廉, S·林, Z·章 申請(qǐng)人:微軟公司