本申請(qǐng)要求遞交于2015年4月20日、名為“SYSTEMS AND METHODS TO DISTRIBUTE COMPUTING TASK AMONG MULTIPLE COMPUTERS(用于在多個(gè)計(jì)算機(jī)之中分配計(jì)算任務(wù)的系統(tǒng)和方法)”的美國(guó)專利申請(qǐng)序列號(hào)為14/691,301,遞交于2015年4月20日、名為“SYSTEMS AND METHODS TO ORGANIZE A COMPUTING SYSTEM HAVING MULTIPLE COMPUTERS(用于組織具有多個(gè)計(jì)算機(jī)的計(jì)算系統(tǒng)的系統(tǒng)和方法)”的美國(guó)申請(qǐng)序列號(hào)為14/691,316,遞交于2015年4月20日、名為“SYSTEMS AND METHOD TO MAINTAIN DATA INTEGRITY AND REDUNDANCY IN A COMPUTING SYSTEM HAVING MULTIPLE COMPUTERS(在具有多個(gè)計(jì)算機(jī)的計(jì)算機(jī)系統(tǒng)中維護(hù)數(shù)據(jù)完整性與冗余的系統(tǒng)和方法)”的美國(guó)專利申請(qǐng)序列號(hào)為14/691,324的優(yōu)先權(quán);以及遞交于2014年8月29日、名為“SYSTEMS AND METHODS TO CONFIGURE DATA STORAGE AND PROCESSING WITH REDUNDANCY AND EFFICIENCY(用于配置數(shù)據(jù)存儲(chǔ)和處理冗余和效率的系統(tǒng)和方法)”的美國(guó)臨時(shí)專利申請(qǐng)序列號(hào)為62/044,140的優(yōu)先權(quán),上述申請(qǐng)通過(guò)引用全部結(jié)合于此。
技術(shù)領(lǐng)域
在本公開(kāi)中所表示的至少一些的實(shí)施例總體上涉及分布式計(jì)算,具體但不局限于用冗余進(jìn)行的數(shù)據(jù)存儲(chǔ)。
背景技術(shù):
目前的存儲(chǔ)網(wǎng)絡(luò)方案(例如,企業(yè)級(jí)的方案)主要基于使用由少數(shù)CPU/核來(lái)控制一些盤(pán)的陣列的服務(wù)器?;谠诒P(pán)陣列中分配數(shù)據(jù)/信息的片段或塊,實(shí)現(xiàn)冗余和錯(cuò)誤更正的策略(例如,廉價(jià)硬盤(pán)的冗余陣列或獨(dú)立硬盤(pán)的冗余陣列(RAID))。CPU服務(wù)在各種通信協(xié)議中所做出的輸入/輸出(I/O)請(qǐng)求,諸如http、ftp、samba等等。
在這種方案中,因?yàn)橥ǔT谟脖P(pán)方面具有的瓶頸,所以通過(guò)添加CPU來(lái)加速服務(wù)器的執(zhí)行并不普遍。在陣列中添加硬盤(pán),要求陣列的重新形成。添加CPU和添加硬盤(pán)的兩種操作都可能要求該服務(wù)的臨時(shí)暫停。維護(hù)操作(諸如在陣列中放置硬盤(pán))也可能引起服務(wù)的暫?;蛸|(zhì)量下降。
美國(guó)專利申請(qǐng)公布序列號(hào)2013/0346794公開(kāi)了一種系統(tǒng),用于當(dāng)在存儲(chǔ)設(shè)備組中的存儲(chǔ)設(shè)備發(fā)生故障時(shí)恢復(fù)冗余。這種系統(tǒng)用專用備件來(lái)增加冗余和/或更正問(wèn)題,并且任何存儲(chǔ)位置都是使用專用備件的存儲(chǔ)設(shè)備組的一部分。
KR20130133264公開(kāi)了一種實(shí)現(xiàn)冗余的系統(tǒng),其中每一個(gè)存儲(chǔ)單元被配置以具有相應(yīng)的單元以反映正在存儲(chǔ)的數(shù)據(jù)。
CN103297547公開(kāi)了一種構(gòu)建云存儲(chǔ)輔助系統(tǒng)的方法,其中在P2P存儲(chǔ)中的數(shù)據(jù)有效性由用馬爾科夫模型執(zhí)行的數(shù)據(jù)動(dòng)態(tài)建模所預(yù)測(cè),并且因此,由于數(shù)據(jù)被云讀取的事實(shí),帶寬成本被有效地降低。
美國(guó)專利申請(qǐng)公布序列號(hào)2012/0054280公開(kāi)了相關(guān)聯(lián)的用戶之間共享云數(shù)據(jù)資源。
CN102984280公開(kāi)了社交云存儲(chǔ)網(wǎng)絡(luò)應(yīng)用,該應(yīng)用使用主邏輯節(jié)點(diǎn)、多個(gè)連續(xù)節(jié)點(diǎn)、以及多個(gè)數(shù)據(jù)節(jié)點(diǎn)。
TW201234809公開(kāi)了一種方法,基于由云存儲(chǔ)訪問(wèn)系統(tǒng)所執(zhí)行的社交網(wǎng)絡(luò)的用于顯示數(shù)據(jù)對(duì)象。
附圖說(shuō)明
圖1根據(jù)一個(gè)實(shí)施例,示出連接多個(gè)單元計(jì)算機(jī)計(jì)算機(jī)網(wǎng)絡(luò)以形成計(jì)算系統(tǒng)的計(jì)算機(jī)網(wǎng)絡(luò);
圖2根據(jù)一個(gè)實(shí)施例,示出在計(jì)算機(jī)網(wǎng)絡(luò)上由多個(gè)單元計(jì)算機(jī)所形成的計(jì)算實(shí)體;
圖3根據(jù)一個(gè)實(shí)施例,示出配置用于計(jì)算實(shí)體的單元計(jì)算機(jī)的自動(dòng)操作;
圖4根據(jù)一個(gè)實(shí)施例,示出到計(jì)算機(jī)實(shí)體中的一組單元計(jì)算機(jī)的計(jì)算任務(wù)的分配;
圖5根據(jù)一個(gè)實(shí)施例,示出配置計(jì)算系統(tǒng)的方法;
圖6根據(jù)一個(gè)實(shí)施例,示出配置被添加到計(jì)算系統(tǒng)的計(jì)算機(jī)的方法;
圖7根據(jù)一個(gè)實(shí)施例,示出操作計(jì)算系統(tǒng)中的計(jì)算機(jī)的方法;
圖8根據(jù)一個(gè)實(shí)施例,示出分配與文件有關(guān)的計(jì)算任務(wù)到計(jì)算系統(tǒng)中的計(jì)算機(jī)的子集的方法;
圖9根據(jù)一個(gè)實(shí)施例,示出分配與文件有關(guān)的計(jì)算任務(wù)到計(jì)算機(jī)系統(tǒng)中的計(jì)算機(jī)的子集的示例;
圖10根據(jù)一個(gè)實(shí)施例,示出維護(hù)數(shù)據(jù)冗余和完成性的方法;
圖11根據(jù)一個(gè)實(shí)施例,示出從具有用冗余所儲(chǔ)存的文件的計(jì)算系統(tǒng)中移除計(jì)算機(jī)的方法;
圖12根據(jù)一個(gè)實(shí)施例,示出在具有用冗余所儲(chǔ)存的文件的計(jì)算系統(tǒng)中添加計(jì)算機(jī)的方法;
圖13根據(jù)一個(gè)實(shí)施例,示出提出訪問(wèn)儲(chǔ)存在計(jì)算系統(tǒng)中的多個(gè)計(jì)算機(jī)中的文件的請(qǐng)求的方法;
圖14根據(jù)一個(gè)實(shí)施例,示出改變?cè)谟?jì)算系統(tǒng)中的計(jì)算機(jī)的可用性方法,該計(jì)算機(jī)系統(tǒng)被配置以用冗余儲(chǔ)存文件;
圖15根據(jù)一個(gè)實(shí)施例,示出配置數(shù)據(jù)存儲(chǔ)的系統(tǒng);
圖16根據(jù)一個(gè)實(shí)施例,示出標(biāo)識(shí)用于儲(chǔ)存或處理一部分文件的計(jì)算設(shè)備的方法;
圖17根據(jù)一個(gè)實(shí)施例,示出可以在計(jì)算系統(tǒng)中使用的計(jì)算機(jī);
圖18-圖20根據(jù)一個(gè)實(shí)施例,示出在計(jì)算系統(tǒng)中的計(jì)算機(jī)的生命期。
具體實(shí)施方式
說(shuō)明概述
本部分中總結(jié)了一些實(shí)施例,用于組織具有多個(gè)計(jì)算機(jī)的計(jì)算系統(tǒng)、在計(jì)算機(jī)之間分配計(jì)算任務(wù)、以及在計(jì)算系統(tǒng)中維護(hù)數(shù)據(jù)的完整性和冗余。
一方面,實(shí)施例包括計(jì)算設(shè)備,該計(jì)算設(shè)備被配置來(lái)標(biāo)識(shí)所分配給計(jì)算設(shè)備的那部分計(jì)算工作(如果存在的話),基于該計(jì)算工作的標(biāo)識(shí)信息以及計(jì)算網(wǎng)絡(luò)中存在的一系列計(jì)算設(shè)備的標(biāo)識(shí)符,來(lái)處理該計(jì)算工作。部分由獨(dú)立于在計(jì)算網(wǎng)絡(luò)中的其他計(jì)算設(shè)備的計(jì)算機(jī)設(shè)備所標(biāo)識(shí)。例如,基于預(yù)先確定的計(jì)算功能,計(jì)算設(shè)備可以將計(jì)算工作的標(biāo)識(shí)信息映射到計(jì)算設(shè)備的一組標(biāo)識(shí)符。標(biāo)識(shí)符中的每一個(gè)對(duì)應(yīng)于計(jì)算工作的預(yù)先確定的部分。如果標(biāo)識(shí)符中的一個(gè)對(duì)應(yīng)于計(jì)算設(shè)備的標(biāo)識(shí)符,那么計(jì)算設(shè)備執(zhí)行與所映射的標(biāo)識(shí)符相關(guān)聯(lián)的計(jì)算任務(wù)的預(yù)先確定的部分。
另一方面,實(shí)施例包括具有經(jīng)由用于形成計(jì)算實(shí)體的計(jì)算機(jī)網(wǎng)絡(luò)所連接的多個(gè)計(jì)算機(jī)的計(jì)算系統(tǒng)。計(jì)算機(jī)中的每一個(gè)充分獨(dú)立于其他計(jì)算機(jī)操作。計(jì)算機(jī)中的每一個(gè)被配置來(lái)當(dāng)計(jì)算機(jī)被連接到計(jì)算機(jī)網(wǎng)絡(luò)的時(shí)候,詢問(wèn)計(jì)算機(jī)網(wǎng)絡(luò)中的網(wǎng)絡(luò)基礎(chǔ)設(shè)施以確定計(jì)算實(shí)體的標(biāo)識(shí),并且因此通過(guò)在該計(jì)算實(shí)體中宣告它的存在而加入計(jì)算實(shí)體。計(jì)算機(jī)中的每一個(gè)被配置以基于在網(wǎng)絡(luò)基礎(chǔ)設(shè)施中的連接性配置,來(lái)確定在計(jì)算實(shí)體中的計(jì)算機(jī)的標(biāo)識(shí)符,并且基于在實(shí)體中的計(jì)算機(jī)的現(xiàn)有數(shù)據(jù),來(lái)假設(shè)用來(lái)執(zhí)行經(jīng)由計(jì)算機(jī)網(wǎng)絡(luò)朝向計(jì)算實(shí)體的計(jì)算請(qǐng)求的一部分操作的角色。
另一方面,實(shí)施例包括被配置以規(guī)則引擎的計(jì)算設(shè)備,以將一組預(yù)先確定的規(guī)則應(yīng)用于與形成計(jì)算實(shí)體的計(jì)算網(wǎng)絡(luò)中的計(jì)算機(jī)的現(xiàn)有數(shù)據(jù)的變化相關(guān)的情況,在這種情況中,在計(jì)算實(shí)體中所儲(chǔ)存的數(shù)據(jù)在計(jì)算機(jī)之間被分配用于冗余和數(shù)據(jù)恢復(fù)。響應(yīng)于先前在計(jì)算實(shí)體中存在的計(jì)算機(jī)的缺少,規(guī)則使得計(jì)算設(shè)備與計(jì)算機(jī)的一個(gè)或多個(gè)進(jìn)行通信以執(zhí)行數(shù)據(jù)恢復(fù)和用冗余儲(chǔ)存該缺少的計(jì)算機(jī)的數(shù)據(jù)。響應(yīng)于添加新的計(jì)算機(jī)到計(jì)算實(shí)體中,規(guī)則使得計(jì)算設(shè)備與計(jì)算機(jī)的一個(gè)或多個(gè)進(jìn)行通信以橫跨計(jì)算實(shí)體重新分配數(shù)據(jù),以使用由新的計(jì)算機(jī)所提供的存儲(chǔ)容量。
本公開(kāi)包括方法和執(zhí)行這些方法的裝置,包括執(zhí)行這些方法的數(shù)據(jù)處理系統(tǒng)、以及包含指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)該指令在數(shù)據(jù)處理系統(tǒng)上被執(zhí)行的時(shí)候處理系統(tǒng)使得該系統(tǒng)執(zhí)行這些方法,
通過(guò)下文的附圖和詳細(xì)描述,其他特征將是顯而易見(jiàn)的。
具體實(shí)施例
本公開(kāi)包括允許用于電子數(shù)據(jù)的存儲(chǔ)系統(tǒng)的實(shí)現(xiàn)方式的技術(shù),其中根據(jù)表現(xiàn)和空間,系統(tǒng)可以被虛擬地和無(wú)限地?cái)U(kuò)展。
在一個(gè)實(shí)施例中,本文所呈現(xiàn)的技術(shù)使用一組專用的軟件指令,該指令被配置以間接得知硬件故障,并且因此能夠自動(dòng)地圍繞故障工作,并且作為整體維護(hù)所儲(chǔ)存的數(shù)據(jù)以及系統(tǒng)的完整性與可靠性。
在一個(gè)實(shí)施例中,數(shù)據(jù)存儲(chǔ)系統(tǒng)被配置為社交云,作為計(jì)算實(shí)體來(lái)操作,該計(jì)算實(shí)體包括作為計(jì)算單元來(lái)操作的多個(gè)單元計(jì)算機(jī)(cell computer),該計(jì)算單元被配置來(lái)提供校驗(yàn)和可用性。
例如,相對(duì)于校驗(yàn),一個(gè)實(shí)施例中的實(shí)體中的任何單元可以由該角色的任何其他設(shè)備而容易地替代(例如,基于點(diǎn)對(duì)點(diǎn)策略),并且相對(duì)于可用性,在系統(tǒng)中的數(shù)據(jù)和硬件具有冗余。
圖1根據(jù)一個(gè)實(shí)施例,示出連接用于形成計(jì)算系統(tǒng)的多個(gè)單元計(jì)算機(jī)的計(jì)算機(jī)網(wǎng)絡(luò)。
在圖1中,一組單元計(jì)算機(jī)(101)可以經(jīng)由一組網(wǎng)絡(luò)設(shè)備(103)(諸如網(wǎng)絡(luò)交換器、路由器、網(wǎng)關(guān)等等)連接到計(jì)算機(jī)網(wǎng)絡(luò)上。在單元計(jì)算機(jī)(101)連接到計(jì)算機(jī)網(wǎng)絡(luò)之前,最初單元計(jì)算機(jī)(101)可以在軟件和/或硬件中被完全相同地配置。一旦連接到網(wǎng)絡(luò)設(shè)備(103),在一個(gè)實(shí)施例中,該單元計(jì)算機(jī)(101)被配置來(lái)針對(duì)在計(jì)算實(shí)體中的計(jì)算角色為它們自己自動(dòng)地分配獨(dú)特的標(biāo)識(shí)符。
例如,在網(wǎng)絡(luò)設(shè)備(103)的網(wǎng)絡(luò)連接性層級(jí)中,被連接到相應(yīng)的網(wǎng)絡(luò)設(shè)備(103)的單元計(jì)算機(jī)(101)中的每一個(gè)具有獨(dú)特的位置。在網(wǎng)絡(luò)連接性層級(jí)中存在的獨(dú)特的位置可以被映射到獨(dú)特的標(biāo)識(shí)符。因此,如果不同的單元計(jì)算機(jī)(101)在相同的獨(dú)特的位置代替相應(yīng)的單元計(jì)算機(jī)(101),那么不同的單元計(jì)算機(jī)(101)被分配相同的獨(dú)特的標(biāo)識(shí)符。
在一個(gè)實(shí)施例中,單元計(jì)算機(jī)(101)中的每一個(gè)都被配置來(lái)與網(wǎng)絡(luò)基礎(chǔ)設(shè)施進(jìn)行通信以在網(wǎng)絡(luò)連接性層級(jí)中標(biāo)識(shí)它的獨(dú)特的位置并且用預(yù)先確定的方案或功能使得位置信息對(duì)于獨(dú)特的標(biāo)識(shí)符可用。因此,一旦被連接到計(jì)算機(jī)網(wǎng)絡(luò)中,基于與該網(wǎng)絡(luò)基礎(chǔ)設(shè)施的通信,單元計(jì)算機(jī)(101)中的每一個(gè)能夠計(jì)算/確定在計(jì)算實(shí)體/系統(tǒng)中它的獨(dú)特的標(biāo)識(shí)符。
在一個(gè)實(shí)施例中,基于相應(yīng)的單元計(jì)算機(jī)(101)將要連接到的計(jì)算機(jī)網(wǎng)絡(luò)的特征,單元計(jì)算機(jī)(101)中的每一個(gè)還可以被配置來(lái)自動(dòng)地確定相應(yīng)的單元計(jì)算機(jī)(101)將要加入的計(jì)算機(jī)實(shí)體的標(biāo)識(shí)。
例如,一旦被連接到計(jì)算機(jī)網(wǎng)絡(luò)上,單元計(jì)算機(jī)(101)被配置以與網(wǎng)絡(luò)基礎(chǔ)設(shè)施進(jìn)行通信以確定計(jì)算機(jī)網(wǎng)絡(luò)的域名,并且用域名作為計(jì)算機(jī)實(shí)體的標(biāo)識(shí)符,或用域名來(lái)計(jì)算計(jì)算機(jī)實(shí)體的標(biāo)識(shí)符。單元計(jì)算機(jī)(101)之后被配置以加入由計(jì)算機(jī)實(shí)體標(biāo)識(shí)符所標(biāo)識(shí)的計(jì)算機(jī)實(shí)體/系統(tǒng)。因此,相同地被配置的單元計(jì)算機(jī)(101)可以僅僅連接到具有不同域名的計(jì)算機(jī)網(wǎng)絡(luò)中,以加入對(duì)應(yīng)該域名的相應(yīng)的計(jì)算實(shí)體。
圖2根據(jù)一個(gè)實(shí)施例,示出經(jīng)由計(jì)算機(jī)網(wǎng)絡(luò)由多個(gè)單元計(jì)算機(jī)(101)所形成的計(jì)算實(shí)體。
在圖2中,計(jì)算機(jī)網(wǎng)絡(luò)(105)包括如圖1所示出的網(wǎng)絡(luò)設(shè)備(103)。當(dāng)相應(yīng)的單元計(jì)算機(jī)(101)被連接到計(jì)算機(jī)網(wǎng)絡(luò)(105)的時(shí)候,單元計(jì)算機(jī)(101)中的每一個(gè)計(jì)算計(jì)算機(jī)實(shí)體標(biāo)識(shí)符。因?yàn)榛谂c計(jì)算機(jī)網(wǎng)絡(luò)(105)相同的域名來(lái)計(jì)算機(jī)實(shí)體標(biāo)識(shí)符,所以單元計(jì)算機(jī)(101)加入相同的計(jì)算實(shí)體(107)中。
在一個(gè)實(shí)施例中,單元計(jì)算機(jī)(101)中的每一個(gè)被配置以在計(jì)算實(shí)體(107)中傳播單元計(jì)算機(jī)(101)的現(xiàn)有信息。例如,當(dāng)單元計(jì)算機(jī)(101)被連接到計(jì)算機(jī)網(wǎng)絡(luò)(105)上的時(shí)候,該單元計(jì)算機(jī)(101)被配置來(lái)與網(wǎng)絡(luò)基礎(chǔ)設(shè)施進(jìn)行通信以計(jì)算它的獨(dú)特的標(biāo)識(shí)符,并且在計(jì)算機(jī)網(wǎng)絡(luò)(105)中宣告它的存在和獨(dú)特的標(biāo)識(shí)符,使得在網(wǎng)絡(luò)中的與該單元計(jì)算機(jī)(101)相鄰的其他單元計(jì)算機(jī)(101)得知該單元計(jì)算機(jī)(101)存在于計(jì)算實(shí)體(107)中。
在一個(gè)實(shí)施例中,每一個(gè)相應(yīng)的單元計(jì)算機(jī)(101)被配置來(lái)在相應(yīng)的單元計(jì)算機(jī)(101)中儲(chǔ)存單元計(jì)算機(jī)(101)的現(xiàn)有數(shù)據(jù),包括相應(yīng)的單元計(jì)算機(jī)(101)得知的單元計(jì)算機(jī)(101)的一系列獨(dú)特的標(biāo)識(shí)符。例如,如果相應(yīng)的單元計(jì)算機(jī)(101)在計(jì)算機(jī)網(wǎng)絡(luò)(105)中觀察到宣告新的單元計(jì)算機(jī)(101)的存在的信息,該相應(yīng)的單元計(jì)算機(jī)(101)被配置來(lái)添加新的單元計(jì)算機(jī)(101)到它的現(xiàn)有列表中。
此外,當(dāng)現(xiàn)有數(shù)據(jù)發(fā)生變化的時(shí)候,每一個(gè)相應(yīng)的單元計(jì)算機(jī)(101)可以向它的現(xiàn)有列表上中的每一個(gè)單元計(jì)算機(jī)(101)提供通知消息以傳播該變化。在一些實(shí)施例中,單元計(jì)算機(jī)(101)中的每一個(gè)等待某個(gè)隨機(jī)時(shí)間段以推送出它的關(guān)于該變化的通知。
因此,在計(jì)算實(shí)體(107)中,單元計(jì)算機(jī)(101)中的每一個(gè)得知該計(jì)算實(shí)體(107)中的其他單元計(jì)算機(jī)(101)的可用性?;诂F(xiàn)有數(shù)據(jù)以及預(yù)先確定的算法,計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)中的每一個(gè)可以將它自己與計(jì)算實(shí)體(107)所共享的計(jì)算任務(wù)從其他單元計(jì)算機(jī)(101)的操作中獨(dú)立地標(biāo)識(shí)/分配。
圖3根據(jù)一個(gè)實(shí)施例,示出配置用于計(jì)算實(shí)體(107)的單元計(jì)算機(jī)的自動(dòng)操作。在圖3中,一旦被連接到計(jì)算機(jī)網(wǎng)絡(luò)(105)中,每一個(gè)單元計(jì)算機(jī)(101)被配置來(lái)與網(wǎng)絡(luò)基礎(chǔ)設(shè)施(諸如,網(wǎng)絡(luò)設(shè)備(103))進(jìn)行通信以自動(dòng)地確定它的網(wǎng)絡(luò)配置數(shù)據(jù),諸如因特網(wǎng)(IP)地址(117)、計(jì)算機(jī)網(wǎng)絡(luò)(105)的域名(113)、以及在網(wǎng)絡(luò)設(shè)備(103)的連接性層級(jí)中的單元計(jì)算機(jī)(101)的網(wǎng)絡(luò)連接性位置(115)。
例如,網(wǎng)絡(luò)設(shè)備(103)中的每一個(gè)具有多個(gè)端口。網(wǎng)絡(luò)設(shè)備(103)的每個(gè)端口具有獨(dú)特的標(biāo)識(shí)符。到端口的連接由該端口的獨(dú)特的標(biāo)識(shí)符所標(biāo)識(shí);并且從單元計(jì)算機(jī)(101)到頂層網(wǎng)絡(luò)設(shè)備(103)(諸如,頂層網(wǎng)關(guān))的對(duì)具體端口的連接的層級(jí)表示單元計(jì)算機(jī)(101)的獨(dú)特的網(wǎng)絡(luò)連接性位置(115)。
在圖3中,在獨(dú)特的網(wǎng)絡(luò)連接性位置(115)處所連接的單元計(jì)算機(jī)(101)的獨(dú)特的單元標(biāo)識(shí)符(123)是從獨(dú)特的網(wǎng)絡(luò)連接性位置(115)中所計(jì)算,并且單元計(jì)算機(jī)(101)所加入的計(jì)算實(shí)體(107)的實(shí)體標(biāo)識(shí)符(121)是從域名(113)中所計(jì)算。因此,基于網(wǎng)絡(luò)配置數(shù)據(jù)(111),單元計(jì)算機(jī)(101)配置它自己在計(jì)算實(shí)體(107)中的角色。
在一個(gè)實(shí)施例中,計(jì)算實(shí)體(107)被配置來(lái)針對(duì)接收的請(qǐng)求分配計(jì)算機(jī)任務(wù)給計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)的子集。在一個(gè)實(shí)施例中,單元計(jì)算機(jī)(101)中的每一個(gè)包含在計(jì)算實(shí)體(107)中的其他單元計(jì)算機(jī)(101)的現(xiàn)有信息,并且在相同的數(shù)據(jù)上采用相同的算法(包括現(xiàn)有信息)來(lái)對(duì)任務(wù)的分配進(jìn)行計(jì)算。因此,針對(duì)在計(jì)算實(shí)體(107)中所接收的給定的計(jì)算請(qǐng)求,每一個(gè)相應(yīng)的單元計(jì)算機(jī)(101)能夠確定單元計(jì)算機(jī)(101)的標(biāo)識(shí),該標(biāo)識(shí)被分配來(lái)執(zhí)行用于計(jì)算請(qǐng)求的任務(wù)的預(yù)先確定的部分,并且每一個(gè)相應(yīng)的單元計(jì)算機(jī)(101)標(biāo)識(shí)與執(zhí)行被分配給相應(yīng)的單元計(jì)算機(jī)(101)的部分。因此,每一個(gè)相應(yīng)的單元計(jì)算機(jī)(101)能夠自我分配計(jì)算任務(wù)的正確部分。
圖4根據(jù)一個(gè)實(shí)施例,示出到計(jì)算實(shí)體(107)中的一組單元計(jì)算機(jī)(101)的計(jì)算任務(wù)的分配。在圖4中,現(xiàn)有映射(125)包括在計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)的單元標(biāo)識(shí)符(123)之間的映射,以及用于網(wǎng)絡(luò)通信的單元計(jì)算機(jī)(101)的IP地址(117)(或者其他類型的網(wǎng)絡(luò)地址)。
在一個(gè)實(shí)施例中,針對(duì)給定的全局請(qǐng)求標(biāo)識(shí)符(129)(諸如將被儲(chǔ)存在計(jì)算實(shí)體(107)中的文件的文件名),用于處理請(qǐng)求的操作被分成預(yù)先確定的數(shù)量的任務(wù)(127)。例如,任務(wù)(127)中的每一個(gè)可以對(duì)應(yīng)于用冗余或同等物來(lái)儲(chǔ)存該文件的數(shù)據(jù)的預(yù)先確定的部分。向任務(wù)(127)分配單元計(jì)算機(jī)(101)的子集,預(yù)先確定的算法被用于現(xiàn)有映射(125)和全局請(qǐng)求標(biāo)識(shí)符(129)來(lái)計(jì)算單元標(biāo)識(shí)符(123)(并且因此他們對(duì)應(yīng)于IP地址(117))。
例如,單元標(biāo)識(shí)符(123)可以被配置為在預(yù)先確定的范圍(諸如,虛擬IP地址)內(nèi)的數(shù)字,以及散列函數(shù)可以被用于預(yù)先確定的范圍的全局請(qǐng)求標(biāo)識(shí)符(129)。散列函數(shù)可以遞歸地被用于計(jì)算在現(xiàn)有映射內(nèi)(125)的多個(gè)單元標(biāo)識(shí)符(123)。用于為相應(yīng)的任務(wù)(127)選擇IP地址(117)的其他方法可以被使用。因此,本公開(kāi)不局限于散列函數(shù)的實(shí)現(xiàn)方式。
在一個(gè)實(shí)施例中,針對(duì)相應(yīng)的任務(wù)(127)的IP地址(117)的選擇基于全局請(qǐng)求標(biāo)識(shí)符(129),使得不同的請(qǐng)求被分配給單元計(jì)算機(jī)(101)的不同的子集用于在計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)之間的自動(dòng)負(fù)載平衡。
在一個(gè)實(shí)施例中,由于在計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)中的每一個(gè)維護(hù)相同的現(xiàn)有映射(125)、接收相同的全局請(qǐng)求標(biāo)識(shí)符(129)、并且使用相同的算法/函數(shù)來(lái)計(jì)算所分配用于執(zhí)行任務(wù)的單元計(jì)算機(jī)(101)的IP地址(117)的所選中的單元標(biāo)識(shí)符(123),所以單元計(jì)算機(jī)(101)可以計(jì)算出相同的結(jié)果。因此,單元計(jì)算機(jī)(101)中的每一個(gè)僅僅確定是否有分配給它們自己的任務(wù)(127),并且如果有的話則執(zhí)行相應(yīng)的任務(wù)(127)。
圖5根據(jù)一個(gè)實(shí)施例,示出配置計(jì)算系統(tǒng)的方法。在圖5中,在具有相同的配置的多個(gè)可互換的單元計(jì)算機(jī)(101)以如圖1與圖2所示的方式被連接到(201)計(jì)算機(jī)網(wǎng)絡(luò)(105)之后,該單元計(jì)算機(jī)(101)基于計(jì)算機(jī)網(wǎng)絡(luò)(105)的網(wǎng)絡(luò)標(biāo)識(shí)被組織(203)進(jìn)入計(jì)算實(shí)體(107)。由于單元計(jì)算機(jī)(101)中的每一個(gè)可以獲得獨(dú)立于彼此的計(jì)算機(jī)網(wǎng)絡(luò)(105)的網(wǎng)絡(luò)標(biāo)識(shí),單元計(jì)算機(jī)(101)中的每一個(gè)可以被配置來(lái)計(jì)算它所加入的計(jì)算實(shí)體(107)的獨(dú)立于其他單元計(jì)算機(jī)(101)的實(shí)體標(biāo)識(shí)符(121)。
在圖5中,基于網(wǎng)絡(luò)配置數(shù)據(jù)(111)(例如,網(wǎng)絡(luò)連接性位置(115)),單元標(biāo)識(shí)符(123)被分配(205)給單元計(jì)算機(jī)(101)。由于單元計(jì)算機(jī)(101)中的每一個(gè)可以獨(dú)立于彼此獲得它的網(wǎng)絡(luò)配置數(shù)據(jù)(111),單元計(jì)算機(jī)(101)中的每一個(gè)可以被配置來(lái)計(jì)算它的獨(dú)立于其他單元計(jì)算機(jī)(101)的單元標(biāo)識(shí)符(123)。
在圖5中,基于被分配給單元計(jì)算機(jī)(101)的單元標(biāo)識(shí)符(123),單元計(jì)算機(jī)(101)的角色被分配(207)給計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)。因此,基于由自我分配的標(biāo)識(shí)符(123)以及分配方案預(yù)先確定的作用,單元計(jì)算機(jī)(101)可以自我分配它們?cè)谟?jì)算機(jī)實(shí)體(107)中的作用。
在圖5中,單元計(jì)算機(jī)(101)在計(jì)算實(shí)體(107)內(nèi)傳送(209)具有它們相應(yīng)地被分配的單元標(biāo)識(shí)符(123)的單元計(jì)算機(jī)(101)的存在。因此,當(dāng)計(jì)算機(jī)網(wǎng)絡(luò)(105)中將被傳播的現(xiàn)有數(shù)據(jù)不存在更多的變化的時(shí)候,單元計(jì)算機(jī)(101)中的每一個(gè)具有在計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)的單元標(biāo)識(shí)符(123)的相同的完整列表和用于與彼此通信的它們相應(yīng)的網(wǎng)絡(luò)地址。
在圖5中,基于具有所分配的單元標(biāo)識(shí)符(123)的單元計(jì)算機(jī)(101)的現(xiàn)有數(shù)據(jù),計(jì)算實(shí)體(107)被配置來(lái)分配(211)計(jì)算任務(wù)(127)給單元計(jì)算機(jī)(101)。由于單元計(jì)算機(jī)(101)中的每一個(gè)在它們的現(xiàn)有數(shù)據(jù)中具有單元標(biāo)識(shí)符(123)的相同的完整列表,所以單元計(jì)算機(jī)(101)中的每一個(gè)可以獨(dú)立于其他單元計(jì)算機(jī)(101)標(biāo)識(shí)那些分配給它們自己的任務(wù)(127)。
在圖5中,如果(213)新的單元計(jì)算機(jī)(101)被加入到計(jì)算機(jī)網(wǎng)絡(luò)(105)中,新的單元計(jì)算機(jī)(101)基于計(jì)算機(jī)網(wǎng)絡(luò)(105)的網(wǎng)絡(luò)標(biāo)識(shí)符被組織(203)到計(jì)算實(shí)體(107)中。如果(213)現(xiàn)有的單元計(jì)算機(jī)(101)從計(jì)算機(jī)網(wǎng)絡(luò)(105)中被移除,在計(jì)算實(shí)體(107)中剩余的單元計(jì)算機(jī)(101)與彼此進(jìn)行通信(209)以更新它們的現(xiàn)有數(shù)據(jù)。
如果現(xiàn)有的單元計(jì)算機(jī)(101)在相同的網(wǎng)絡(luò)連接性位置(115)被新的單元計(jì)算機(jī)(101)所代替(例如,被連接到相同的網(wǎng)絡(luò)設(shè)備(103)的相同的端口),那么該新的單元計(jì)算網(wǎng)絡(luò)(101)在該計(jì)算實(shí)體(107)中自動(dòng)地替代現(xiàn)有的單元計(jì)算機(jī)(101)的角色。
因此,通過(guò)自動(dòng)操作,人力在維護(hù)以及配置計(jì)算實(shí)體(107)過(guò)程中的介入被減少和/或最小化。
圖6根據(jù)一個(gè)實(shí)施例,示出配置所添加到計(jì)算系統(tǒng)中的計(jì)算機(jī)的方法。
在圖6中,在單元計(jì)算機(jī)(101)被連接(231)到計(jì)算機(jī)網(wǎng)絡(luò)(105)之后,單元計(jì)算機(jī)(101)與計(jì)算網(wǎng)絡(luò)(105)進(jìn)行通信以自動(dòng)地配置單元計(jì)算機(jī)(101)的網(wǎng)絡(luò)參數(shù),諸如來(lái)自動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP)的服務(wù)器的IP地址(117)。單元計(jì)算機(jī)(101)之后自動(dòng)地與計(jì)算網(wǎng)絡(luò)(105)進(jìn)行通信(235)以標(biāo)識(shí)在連接性層級(jí)中的單元計(jì)算機(jī)(101)的網(wǎng)絡(luò)連接性位置(115)(例如,經(jīng)由鏈路層發(fā)現(xiàn)協(xié)議(LLDP)查詢)?;谥T如計(jì)算機(jī)網(wǎng)絡(luò)(105)的域名(113)的網(wǎng)絡(luò)參數(shù),單元計(jì)算機(jī)(101)確定(237)計(jì)算實(shí)體(107)的實(shí)體標(biāo)識(shí)符(121);基于單元計(jì)算機(jī)(101)的網(wǎng)絡(luò)連接性位置(115),從多個(gè)預(yù)先確定的作用中選擇選單元計(jì)算機(jī)(101)的作用。
在圖6中,單元計(jì)算機(jī)(101)宣告(241)該單元計(jì)算機(jī)(101)在計(jì)算實(shí)體(107)中的存在;標(biāo)識(shí)(243)在計(jì)算實(shí)體(107)中的其他單元計(jì)算機(jī)(101);基于在計(jì)算實(shí)體(107)中的其他單元計(jì)算機(jī)(101)的標(biāo)識(shí),標(biāo)識(shí)(245)與該角色相關(guān)聯(lián)的一組任務(wù)(127);以及在計(jì)算實(shí)體(107)中執(zhí)行(247)該組任務(wù)(127)。
圖7根據(jù)一個(gè)實(shí)施例,示出在計(jì)算機(jī)系統(tǒng)中操作計(jì)算機(jī)的方法。
在圖7中,在啟動(dòng)(251)所連接到計(jì)算機(jī)網(wǎng)絡(luò)(105)的單元計(jì)算機(jī)(101)的之后,該單元計(jì)算機(jī)(101)自動(dòng)地與服務(wù)器進(jìn)行通信(253)以配置連接到計(jì)算機(jī)網(wǎng)絡(luò)(105)的單元計(jì)算機(jī)(101)的網(wǎng)絡(luò)接口。單元計(jì)算機(jī)(101)確定(255)單元計(jì)算機(jī)(101)的域名(113)用于所連接到計(jì)算機(jī)網(wǎng)絡(luò)(105)的網(wǎng)絡(luò)接口;從域名(113)計(jì)算(257)計(jì)算實(shí)體(107)的實(shí)體標(biāo)識(shí)符(121);詢問(wèn)(259)(諸如,經(jīng)由LLDP詢問(wèn))網(wǎng)絡(luò)基礎(chǔ)設(shè)施,來(lái)確定基礎(chǔ)設(shè)施中網(wǎng)絡(luò)接口的獨(dú)特的位置;以及,從表示網(wǎng)絡(luò)基礎(chǔ)設(shè)施中網(wǎng)絡(luò)接口的獨(dú)特的位置的數(shù)據(jù)中,計(jì)算(261)在計(jì)算機(jī)實(shí)體(107)中的單元計(jì)算機(jī)(101)的獨(dú)特的單元標(biāo)識(shí)符(123)。
在獲得(263)計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)的單元標(biāo)識(shí)符(123)的列表之后,針對(duì)對(duì)于計(jì)算實(shí)體(107)的給定請(qǐng)求并且基于在單元計(jì)算機(jī)(101)上的現(xiàn)有映射(125)中所剩余的單元標(biāo)識(shí)符(123)的列表,單元計(jì)算機(jī)(101)確定(265)將在單元計(jì)算機(jī)(101)上被實(shí)現(xiàn)的那部分請(qǐng)求。
在一個(gè)實(shí)施例中,將要在單元計(jì)算機(jī)(101)上所實(shí)現(xiàn)的那部分請(qǐng)求還基于給定請(qǐng)求的全局請(qǐng)求標(biāo)識(shí)符(129)(諸如將要在計(jì)算實(shí)體(107)中儲(chǔ)存的文件的名稱)所確定。
在一個(gè)實(shí)施例中,所使用的分布式散列表(DHT)方法將被用作在單元之間的通信協(xié)議來(lái)傳送存在和斷開(kāi)(例如,如由Lon Stoica等人在“Chord:A scalable Peer-to-peer Lookup Service for Internet Applications(弦:針對(duì)互聯(lián)網(wǎng)應(yīng)用可調(diào)整點(diǎn)對(duì)點(diǎn)查找服務(wù),其于2001年8月27-31日在美國(guó)加州圣地亞哥的SIGCOMM’01所指出、并且發(fā)表于2003年2月IEEE/ACM匯刊,Networking,Vol.11,第一期第17-32頁(yè)))”中所公開(kāi)的。
圖8根據(jù)一個(gè)實(shí)施例,示出將與文件相關(guān)的計(jì)算任務(wù)(127)分配給計(jì)算機(jī)系統(tǒng)中的計(jì)算機(jī)的子集的方法。
在圖8中,在具有多個(gè)單元計(jì)算機(jī)(101)的計(jì)算機(jī)實(shí)體(107)中儲(chǔ)存(271)計(jì)算機(jī)實(shí)體(107)中用來(lái)標(biāo)識(shí)單元計(jì)算機(jī)(101)的存在的現(xiàn)有數(shù)據(jù)(諸如,125)之后,計(jì)算機(jī)實(shí)體(107)接收(273)請(qǐng)求以儲(chǔ)存具有文件名的文件。依據(jù)預(yù)先確定的方案,文件在計(jì)算實(shí)體(107)中的儲(chǔ)存被分成(275)多個(gè)操作。為了將多個(gè)操作/任務(wù)(127)分配給多個(gè)單元計(jì)算機(jī)(101),對(duì)于文件名采用(277)散列方案以獲得用來(lái)標(biāo)識(shí)(279)多個(gè)單元計(jì)算機(jī)(101)的多個(gè)散列值。
在一個(gè)實(shí)施例中,在計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)被配置來(lái)計(jì)算散列值以標(biāo)識(shí)(279)多個(gè)平行的單元計(jì)算機(jī),并且確定它們是否被分配以執(zhí)行任何和/或哪些操作。
因此,由散列值所標(biāo)識(shí)的多個(gè)單元計(jì)算機(jī)(101)中的每一個(gè)相應(yīng)的單元計(jì)算機(jī)(101),自我分配(281)相應(yīng)的操作。
圖9根據(jù)一個(gè)實(shí)施例,示出將與文件相關(guān)的計(jì)算任務(wù)(127)分配給計(jì)算系統(tǒng)中的計(jì)算機(jī)的子集的示例。
在圖9中,在標(biāo)識(shí)多個(gè)單元計(jì)算機(jī)(101)的存在的現(xiàn)有映射(125)被儲(chǔ)存(291)在計(jì)算實(shí)體(107)的單元計(jì)算機(jī)(101)中之后,單元計(jì)算機(jī)(101)在計(jì)算實(shí)體(107)中接收(293)對(duì)于儲(chǔ)存具有文件名的文件的請(qǐng)求,其中該文件在計(jì)算實(shí)體(107)中的儲(chǔ)存被預(yù)先分為多個(gè)任務(wù)(127),諸如保存該文件的元數(shù)據(jù)、保存文件的副本或文件的一部分、計(jì)算用于緩存的校驗(yàn)數(shù)據(jù)、保存校驗(yàn)數(shù)據(jù)等等。
在圖9中,單元計(jì)算機(jī)(101)將散列方案用于文件名以獲得多個(gè)散列值,每一個(gè)散列值對(duì)應(yīng)任務(wù)(127)中的一個(gè),并且每一個(gè)散列值對(duì)應(yīng)計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)中的一個(gè)。
單元計(jì)算機(jī)(101)確定(297)是否有散列值自身對(duì)應(yīng)于單元計(jì)算機(jī)(101)的標(biāo)識(shí),如果有的話,則執(zhí)行(299)與自身對(duì)應(yīng)于單元計(jì)算機(jī)(101)的標(biāo)識(shí)的散列值相關(guān)聯(lián)的任務(wù)(127)。
圖10根據(jù)一個(gè)實(shí)施例,示出維護(hù)數(shù)據(jù)冗余和完整性的方法。在圖10中,具有多個(gè)單元計(jì)算機(jī)(101)的計(jì)算實(shí)體(107)儲(chǔ)存現(xiàn)有映射(125),該現(xiàn)有映射(125)標(biāo)識(shí)計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)的存在。單元計(jì)算機(jī)(101)中的每一個(gè)儲(chǔ)存(303)一組規(guī)則,并且被規(guī)則引擎所配置以執(zhí)行該規(guī)則。
在圖10中,響應(yīng)于在計(jì)算實(shí)體(107)中的數(shù)據(jù)操作和現(xiàn)有映射(125)的改變,單元計(jì)算機(jī)(101)向規(guī)則引擎提供(307)輸入?;谝?guī)則在規(guī)則引擎的控制下,單元計(jì)算機(jī)(101)與彼此進(jìn)行通信以維護(hù)數(shù)據(jù)冗余和完整性。
圖11根據(jù)一個(gè)實(shí)施例,示出將計(jì)算機(jī)從具有用冗余所儲(chǔ)存的文件的計(jì)算系統(tǒng)中移除的方法。
在圖11中,在檢測(cè)到(311)單元計(jì)算機(jī)(101)從計(jì)算實(shí)體(107)的缺少之后,在計(jì)算實(shí)體(107)中剩余的單元計(jì)算機(jī)(101)的規(guī)則引擎使得剩余的單元計(jì)算機(jī)(101)傳播關(guān)于單元計(jì)算機(jī)(101)在計(jì)算實(shí)體(107)中的缺少的信息,以更新(313)在計(jì)算實(shí)體(107)中的剩余單元計(jì)算機(jī)(101)的現(xiàn)有映射(125);標(biāo)識(shí)(315)在計(jì)算實(shí)體(107)中的文件,該文件具有先前所儲(chǔ)存在單元計(jì)算機(jī)(101)上的部分;以及在計(jì)算實(shí)體(107)的剩余的單元計(jì)算機(jī)(101)之間進(jìn)行通信以恢復(fù)用于儲(chǔ)存計(jì)算實(shí)體(107)中的文件的數(shù)據(jù)冗余。
圖12根據(jù)一個(gè)實(shí)施例,示出將計(jì)算機(jī)添加到具有用冗余所儲(chǔ)存的文件的計(jì)算系統(tǒng)的方法。
在圖12中,在檢測(cè)到(321)所添加到計(jì)算實(shí)體(107)的新的單元計(jì)算機(jī)(101)的存在之后,在計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)的規(guī)則引擎?zhèn)鞑?323)關(guān)于單元計(jì)算機(jī)(101)在計(jì)算實(shí)體(107)中存在的信息,標(biāo)識(shí)(325)將被部分地儲(chǔ)存在新的單元計(jì)算機(jī)(101)上的文件,以及在計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)之間進(jìn)行通信(327)以生成用于在新的單元計(jì)算機(jī)(101)上儲(chǔ)存的那部分文件。
圖13根據(jù)一個(gè)實(shí)施例,示出請(qǐng)求訪問(wèn)儲(chǔ)存在計(jì)算系統(tǒng)的多個(gè)計(jì)算機(jī)中的文件的方法。
在圖13中,在單元計(jì)算機(jī)(101)接收(331)訪問(wèn)被儲(chǔ)存在具有多個(gè)單元計(jì)算機(jī)(101)的計(jì)算實(shí)體(107)中的文件的請(qǐng)求之后,單元計(jì)算機(jī)(101)標(biāo)識(shí)(333)計(jì)算實(shí)體(107)中的多個(gè)單元計(jì)算機(jī)(101),該多個(gè)計(jì)算機(jī)(101)儲(chǔ)存部分用于該文件的數(shù)據(jù)。單元計(jì)算機(jī)(101)的規(guī)則引擎指導(dǎo)單元計(jì)算機(jī)(101)與多個(gè)單元計(jì)算機(jī)(101)進(jìn)行通信以核實(shí)針對(duì)該文件的數(shù)據(jù)完整性,并且響應(yīng)于核實(shí)該文件的數(shù)據(jù)完整性的過(guò)程中發(fā)生的故障而執(zhí)行(337)數(shù)據(jù)恢復(fù)。
圖14根據(jù)一個(gè)實(shí)施例,示出改變所配置以用冗余儲(chǔ)存文件的計(jì)算系統(tǒng)中的計(jì)算機(jī)可用性的方法。
在圖14中,在單元計(jì)算機(jī)(101)接收(341)計(jì)算實(shí)體(107)中的單元計(jì)算機(jī)(101)的現(xiàn)有數(shù)據(jù)的改變之后,單元計(jì)算機(jī)(101)的規(guī)則引擎被配置以檢查該改變帶來(lái)的影響。
例如,規(guī)則引擎標(biāo)識(shí)(343)儲(chǔ)存在單元計(jì)算機(jī)(101)中的文件,規(guī)則引擎在該單元計(jì)算機(jī)(101)上運(yùn)行并且標(biāo)識(shí)(345)多個(gè)單元計(jì)算機(jī)(101),多個(gè)單元計(jì)算機(jī)(101)中的每一個(gè)被分配來(lái)儲(chǔ)存文件的一部分?jǐn)?shù)據(jù)。規(guī)則引擎確定(347)在現(xiàn)有數(shù)據(jù)中的改變是否引起在被分配來(lái)儲(chǔ)存文件的數(shù)據(jù)的多個(gè)單元計(jì)算機(jī)的標(biāo)識(shí)中的改變,并且如果存在標(biāo)識(shí)的改變,則規(guī)則引擎開(kāi)始更新(349)計(jì)算實(shí)體(107)中的文件的數(shù)據(jù)。
例如,在現(xiàn)有數(shù)據(jù)改變之前,如在圖4中所示出的現(xiàn)有映射(125)分配第一組單元計(jì)算機(jī)(101)以儲(chǔ)存給定文件的數(shù)據(jù)。在現(xiàn)有數(shù)據(jù)改變之后,用于儲(chǔ)存文件的數(shù)據(jù)的第一組單元計(jì)算機(jī)(101)的分配可能改變也可能不改變。如果存在改變,那么單元計(jì)算機(jī)(101)的規(guī)則引擎可以啟動(dòng)數(shù)據(jù)恢復(fù)處理,將數(shù)據(jù)從單元計(jì)算機(jī)(101)的第一組中移動(dòng)到由所更新的現(xiàn)有映射所計(jì)算的單元計(jì)算機(jī)(101)的第二組中。
例如,在改變之后,單元計(jì)算機(jī)(101)可以不再被分配用于儲(chǔ)存文件的任何數(shù)據(jù),并且該文件被重新儲(chǔ)存在系統(tǒng)中一段時(shí)間之后,規(guī)則引擎可以從單元計(jì)算機(jī)(101)中刪除該文件的數(shù)據(jù)。
例如,在現(xiàn)有映射(125)改變之后,單元計(jì)算機(jī)(101)可以確定對(duì)于第一組單元計(jì)算機(jī)(101)中的一個(gè)或多個(gè)的數(shù)據(jù)儲(chǔ)存分配已經(jīng)根據(jù)現(xiàn)有映射的改變而改變,并且作為響應(yīng),規(guī)則引擎可以與相應(yīng)的單元計(jì)算機(jī)(101)進(jìn)行通信以更新在其中所存儲(chǔ)的數(shù)據(jù)。
例如,在現(xiàn)有映射(125)發(fā)生改變之后,單元計(jì)算機(jī)(101)可以確定文件的數(shù)據(jù)的副本將從一個(gè)單元計(jì)算機(jī)(101)被移動(dòng)到另一個(gè),并且單元計(jì)算機(jī)(101)的規(guī)則引擎被配置以與相應(yīng)的單元計(jì)算機(jī)(101)進(jìn)行通信來(lái)安排數(shù)據(jù)的傳輸。
例如,在現(xiàn)有映射(125)發(fā)生改變之后,單元計(jì)算機(jī)(101)可以確定另一個(gè)單元計(jì)算機(jī)(101)現(xiàn)在是所分配來(lái)儲(chǔ)存文件的部分?jǐn)?shù)據(jù)的單元計(jì)算機(jī)(101)的新成員。單元計(jì)算機(jī)(101)的規(guī)則引擎可以與先前所分配來(lái)儲(chǔ)存文件的規(guī)則引擎進(jìn)行協(xié)作來(lái)重新獲得文件的副本,并且向新成員傳送該文件,該新成員可以獨(dú)立地操作該文件來(lái)儲(chǔ)存所要求的數(shù)據(jù),就如文件是從用戶所接收的情況一樣。此外,互相分配的單元計(jì)算機(jī)(101)的組的先前的成員的規(guī)則引擎可以標(biāo)識(shí)用于重新獲得和/或計(jì)算將被儲(chǔ)存在新成員中的數(shù)據(jù)的最高效的方法。
圖15根據(jù)一個(gè)實(shí)施例,示出配置數(shù)據(jù)存儲(chǔ)的系統(tǒng)。
例如,如圖15所示出的社交云具有來(lái)自對(duì)應(yīng)于網(wǎng)絡(luò)中的域(諸如,cynny.com)的一個(gè)實(shí)體(409)的一組單元(425)(例如,計(jì)算機(jī)實(shí)體(107))的單元計(jì)算機(jī)(101))。
在圖15中,單元中的每一個(gè)具有至少CPU(415)、數(shù)據(jù)存儲(chǔ)盤(pán)(417)、被配置以軟件指令和/或與數(shù)據(jù)(例如,421、423)相關(guān)聯(lián)的存儲(chǔ)器(419)、以及網(wǎng)絡(luò)接口(413)。
在圖15中,通過(guò)確定每一個(gè)單元(425)被物理地連接到的計(jì)算機(jī)網(wǎng)絡(luò)(407)(例如,cynny.com)的域,每一個(gè)單元(425)被配置以通過(guò)軟件指令來(lái)確定它所屬于的實(shí)體(409)。單元(425)可以,例如,經(jīng)由詢問(wèn)網(wǎng)絡(luò)網(wǎng)關(guān)用標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議來(lái)標(biāo)識(shí)域。因此,基于網(wǎng)絡(luò)配置,被附著到網(wǎng)絡(luò)(407)的單元(425)可以自動(dòng)地配置它自己以加入相應(yīng)的實(shí)體(409)。
在圖15中,每一個(gè)單元(425)被配置以通過(guò)從它所連接的網(wǎng)絡(luò)(407)獲得信息以理解它在實(shí)體(409)中的角色。例如,單元(425)可以用標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議(諸如LLDP(鏈路層發(fā)現(xiàn)協(xié)議))來(lái)確定關(guān)于它所連接的第一層網(wǎng)絡(luò)交換(411)和相鄰單元(例如,所連接到相同的第一層網(wǎng)絡(luò)交換(411)的其他單元(425))的信息,關(guān)于第一層網(wǎng)絡(luò)交換所連接的第二層網(wǎng)絡(luò)交換和相鄰單元(例如,連接到相同的第二層級(jí)網(wǎng)絡(luò)交換(411)的其他單元)的信息等等。
例如,在一個(gè)實(shí)施例中,單元(425)被連接到第一網(wǎng)絡(luò)交換(411)A上,該第一網(wǎng)絡(luò)交換(411)A轉(zhuǎn)而連接到數(shù)據(jù)庫(kù)配置中的第二網(wǎng)絡(luò)交換(411)B。用LLDP協(xié)議(或其他協(xié)議),單元(425)被告知網(wǎng)絡(luò)配置:?jiǎn)卧?425)被連接到網(wǎng)絡(luò)交換(411)A上的端口X,以及網(wǎng)絡(luò)交換(411)A被連接到網(wǎng)絡(luò)交換(411)B上的端口Y。基于這樣的網(wǎng)絡(luò)配置信息,單元(425)確定它在實(shí)體(409)中的角色。
例如,單元(425)被配置來(lái)解析LLDP詢問(wèn)回答和確定在即時(shí)網(wǎng)絡(luò)(407)(例如,在網(wǎng)絡(luò)交換(411)A的端口2上)中單元(425)的位置。之后單元解析LLDP詢問(wèn)回答來(lái)確定網(wǎng)絡(luò)交換(411)A的位置(例如,在網(wǎng)絡(luò)交換(411)B的端口24上)?;谠儐?wèn)結(jié)果,單元(425)用確定性的方案計(jì)算角色標(biāo)識(shí)符(例如,“24,2”,基于網(wǎng)絡(luò)交換(411)A的端口2,和網(wǎng)絡(luò)交換(411)B的端口24)。標(biāo)識(shí)符(例如“24,2”)可以表明單元(425)是否具有儲(chǔ)存元數(shù)據(jù)的角色、儲(chǔ)存用戶數(shù)據(jù)的角色、或執(zhí)行計(jì)算服務(wù)的角色等等。例如,在一個(gè)實(shí)施例中,預(yù)先確定的規(guī)則可以指定:對(duì)應(yīng)于具有第一層網(wǎng)絡(luò)交換(411)的端口2處的位置的單元(425)的標(biāo)識(shí)符是具有儲(chǔ)存元數(shù)據(jù)的角色的單元(425),并且因此具有樣式“*,2”的單元(425)的標(biāo)識(shí)符是被分配為元數(shù)據(jù)單元(425)的角色的單元(425)。
在一個(gè)實(shí)施例中,每一個(gè)單元(425)與當(dāng)前存在于網(wǎng)絡(luò)(407)的其他單元(425)進(jìn)行通信以配置它自己。單元(425)的網(wǎng)絡(luò)分析星載軟件對(duì)該單元自身分配角色,該角色表明由實(shí)體(409)中的單元(425)所提供的服務(wù),諸如執(zhí)行針對(duì)實(shí)體(409)的某些類型的計(jì)算,為實(shí)體(409)提供某些數(shù)據(jù)存儲(chǔ)能力等等。單元(425)加入實(shí)體以提供對(duì)應(yīng)于角色的服務(wù),并且其他單元(425)可以被告知該單元(425)在實(shí)體(409)的存在并且調(diào)整他們的操作以利用由該單元(425)所提供的服務(wù)。
在一個(gè)實(shí)施例中,當(dāng)加入實(shí)體(409)的單元(425)無(wú)法檢測(cè)實(shí)體(409)的相鄰的最小一組單元(425)的時(shí)候,單元(425)假設(shè)它出現(xiàn)了問(wèn)題并且開(kāi)啟診斷周期。
在一個(gè)實(shí)施例中,當(dāng)單元(425)在網(wǎng)絡(luò)(407)中啟用的時(shí)候,單元(425)配置它自己以承擔(dān)角色。例如,單元(425)中的一些可以被配置以儲(chǔ)存文件的元數(shù)據(jù)(例如,許可、文件類型、共享、冗余),并且其他的單元(425)可以被配置來(lái)儲(chǔ)存文件(例如,圖片、視頻等等)的用戶數(shù)據(jù)。當(dāng)附加的單元(425)被啟動(dòng)以加入實(shí)體(409)的時(shí)候,單元(425)與彼此進(jìn)行通信來(lái)分配和/或更新角色。
在一些實(shí)施例中,實(shí)體(409)的具體的單元(425)被配置以執(zhí)行用于在實(shí)體(409)中生成和/或更新VIP映射的計(jì)算,并且將VIP映射加入到實(shí)體(409)中,該VIP映射由所有其他單元(425)的IPMap(421)軟件所使用。此外,通過(guò)協(xié)商會(huì)話中的通信,單元(425)可以分配角色。在一個(gè)實(shí)施例中,用戶接口被提供用來(lái)允許用戶對(duì)于單元(425)進(jìn)行配置和/或管理對(duì)于單元(425)的角色的分配。
在一個(gè)實(shí)施例中,每個(gè)單元(425)具有在實(shí)體(409)中當(dāng)前可用的單元(425)的一組映射。映射可以用網(wǎng)絡(luò)配置數(shù)據(jù)(111)標(biāo)識(shí)單元(425)。例如,連接到第一層網(wǎng)絡(luò)交換(411)的端口2的單元,轉(zhuǎn)而連接到第二層網(wǎng)絡(luò)交換(411)的端口24上,該單元可用基于標(biāo)識(shí)符“24,2”的位置而被標(biāo)識(shí)。物理的IP地址(441)基于網(wǎng)絡(luò)位置標(biāo)識(shí)符(443)“24,2”被分配給單元(425)。將被儲(chǔ)存的給定的一組數(shù)據(jù)可以被映射到虛擬IP地址(437)經(jīng)由預(yù)先確定的計(jì)算操作(例如,由下文所提供的散列示例)。映射被用來(lái)將虛擬IP地址(437)鏈接到物理IP地址(411),使得將被儲(chǔ)存的該給定的數(shù)據(jù)組可以經(jīng)過(guò)預(yù)先確定的計(jì)算操作,首先映射到虛擬IP地址(437)并且之后用該映射被映射到物理IP地址(411)。這可以被叫做圖16中所示出的VIP映射(439)。
在一個(gè)實(shí)施例中,當(dāng)單元(425)加入實(shí)體(409)的時(shí)候,它在網(wǎng)絡(luò)(407)/實(shí)體(409)中宣告自己的存在(例如,經(jīng)由LLDP)。推動(dòng)/拉動(dòng)策略或DHT方法可以在單元(425)中被實(shí)現(xiàn)以使得在實(shí)體(409)中的所有的單元(425)獲得已更新的VIP映射(439)。例如,在實(shí)體(409)中隨機(jī)地選取的單元A被添加到新的VIP映射(439)之后,這個(gè)單元A用相同的VIP映射(439)添加另一個(gè)單元Y。在預(yù)先確定的代(generation)的數(shù)量(例如,3或4)之后,添加(推動(dòng)階段(push phase))結(jié)束。在推動(dòng)/拉動(dòng)實(shí)施例中,周期性地(例如,每X秒),每一個(gè)單元(425)被配置來(lái)詢問(wèn)一個(gè)或多個(gè)其他單元(425)用于關(guān)于VIP映射(438)的更新(拉動(dòng)階段(pull phase))。當(dāng)在推動(dòng)階段中足夠的單元用新的VIP映射(439)被添加之后,該VIP映射(439)可以在拉動(dòng)階段中被迅速地傳播到呼叫單元(425)。
如在示例的實(shí)施例中,分布式散列表(DHT)方法可以被用于上文所描述的推動(dòng)/拉動(dòng)消息交換,來(lái)更新VIP映射(439)。例如,VIP映射(439)可以通過(guò)使用針對(duì)因特網(wǎng)應(yīng)用的可擴(kuò)展的點(diǎn)對(duì)點(diǎn)查找服務(wù)的一種實(shí)現(xiàn)方式而被更新,例如,如由Lon Stoica等人在“Chord:A scalable Peer-to-peer Lookup Service for Intemet Applications(弦:針對(duì)互聯(lián)網(wǎng)應(yīng)用可調(diào)整點(diǎn)對(duì)點(diǎn)查找服務(wù),其于2001年8月27-31日在美國(guó)加州圣地亞哥的SIGCOMM’01所指出、并且發(fā)表于2003年2月IEEE/ACM匯刊,Networking,Vol.11,第一期第17-32頁(yè))中所公開(kāi)的。在這種實(shí)施例中,單元(425)一被加入到實(shí)體(409)中,單元(425)就被配置擁有具體的數(shù)據(jù)子集。通信協(xié)議(諸如在Chrod系統(tǒng)中所使用的)可以被用來(lái)對(duì)實(shí)體(409)中的所有其他單元(425)更新關(guān)于新到達(dá)的單元(425)的存在。在一個(gè)實(shí)施例中,CHORD模塊作為單元(425)中預(yù)加載的軟件的具體層級(jí)而實(shí)現(xiàn),并且被配置使用針對(duì)因特網(wǎng)應(yīng)用的可擴(kuò)展的點(diǎn)對(duì)點(diǎn)查找服務(wù),來(lái)更新VIP映射(如在lon Stoica的Chord系統(tǒng)中的)。
在一個(gè)實(shí)施例中,實(shí)體(409)(例如,具有經(jīng)由在某域名(113)下的網(wǎng)絡(luò)配置的所組織的單元的聚集(425))實(shí)現(xiàn)文件系統(tǒng),但是它不僅僅是文件系統(tǒng)。實(shí)體(409)可以具有經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)(407)所連接的世界范圍的單元(425)。在實(shí)體(409)中,單元(425)可以在區(qū)域內(nèi)(例如,一組單元(425)在歐洲,其他在美國(guó))在本地被組織。世界可擴(kuò)展的實(shí)體(409)被配置來(lái)組織它自己為了使得它的用戶連接到最近的單元(425)使得允許與用戶的有效的交互。
在一個(gè)實(shí)施例中,實(shí)體(409)以及經(jīng)由實(shí)體(409)所實(shí)現(xiàn)的文件系統(tǒng)是全球化的。在文件系統(tǒng)中,單一的用戶文件(405)可以包括在不同的世界的區(qū)域的單元(425)。例如,如果用戶希望訂閱針對(duì)他自己的損壞-復(fù)原策略,用戶可以決定實(shí)現(xiàn)復(fù)制策略(replication policy)以在不同的世界區(qū)域中儲(chǔ)存他的文件的副本。當(dāng)這種策略被使用,客戶端軟件(403)(例如,在下文中所討論的IPMap(421))在單元(425)中運(yùn)行并且被配置來(lái)確定單元(425)是否將儲(chǔ)存用戶文件(405)的數(shù)據(jù)并且被配置來(lái)使得來(lái)自不同區(qū)域的單元(425)儲(chǔ)存該文件。
在圖15中,單元中的每一個(gè)具有被配置來(lái)計(jì)算用于用戶文件儲(chǔ)存的位置的IPMap(421)(例如,客戶端軟件(403))。在一個(gè)實(shí)施例中,給定用戶文件(405)的哪部分被儲(chǔ)存在哪些單元(425)中和/或在哪些位置,是從用戶文件(405)的數(shù)據(jù)以及在實(shí)體(409)中的當(dāng)前可用的單元(425)的映射(例如,VIP映射(439))直接地計(jì)算出的。
例如,用戶文件(405)的文件名(431)可以是散列的,以用散列方案(433)生成具有固定長(zhǎng)度的字符串的散列值(435),如圖16所示出的。字符串的不同的部分被用來(lái)標(biāo)識(shí)不同的單元(425)用于用戶文件(405)的不同部分的存儲(chǔ),以及字符串的部分可以被用來(lái)在單元(425)的文件系統(tǒng)中標(biāo)識(shí)目錄和本地文件名(431),來(lái)儲(chǔ)存用戶文件(405)的相應(yīng)的部分。因此,針對(duì)給定的文件名(431),IPMap(421)可以確定性地計(jì)算用戶文件(405)的哪部分被儲(chǔ)存在哪個(gè)單元(425)中和在相應(yīng)單元(425)的文件系統(tǒng)中的哪個(gè)目錄中。在一個(gè)實(shí)施例中,基于所分配給實(shí)體(409)的單元(425)的角色的配置而計(jì)算IPMap(421)。在一個(gè)實(shí)施例中,由實(shí)體(409)中的單元(425)所共享的公共的文件(例如,虛擬IP映射(437))被用來(lái)以決定性的方式將字符串的給定部分映射到單元(425)中的一個(gè)的IP地址(411)。
在示例中,在用戶文件(405)的文件名(431)被散列到字符串中之后,字符串的第一部分被映射,來(lái)標(biāo)識(shí)第一單元(425)來(lái)儲(chǔ)存用戶文件(405)的第一副本;字符串的第二部分被映射來(lái)標(biāo)識(shí)第二單元(425)以儲(chǔ)存用戶文件(405)的第二副本;字符串的第三部分標(biāo)識(shí)在第一與第二單元(425)中的目錄來(lái)儲(chǔ)存第一與第二副本;以及字符串的第四部分標(biāo)識(shí)用于在目錄中儲(chǔ)存第一與第二副本的本地文件名(431),該本地文件名(431)由字符串的第三部分在第一與第二單元(425)中所標(biāo)識(shí)。因此,IPMap(421)的示例實(shí)現(xiàn)了實(shí)體(409)中所儲(chǔ)存的用戶文件(405)的鏡像。
在另一個(gè)示例中,散列函數(shù)可以被遞歸地采用來(lái)獲得散列值(435)的序列;以及在序列中的散列值中的每一個(gè)可以被用來(lái)標(biāo)識(shí)單元(425)。例如,在序列中的第一散列值(435)被用來(lái)標(biāo)識(shí)第一單元(425)以儲(chǔ)存用戶文件(405)的第一副本;在序列中的第二散列值(435)被用來(lái)標(biāo)識(shí)第二單元(425)以儲(chǔ)存用戶文件(405)的第二副本;在序列中的第三散列值(435)被用來(lái)標(biāo)識(shí)在第一與第二單元(425)中的目錄以儲(chǔ)存第一與第二副本;以及在序列中的第四散列值(435)被用來(lái)標(biāo)識(shí)被用來(lái)在目錄中儲(chǔ)存第一與第二副本的本地文件名(431),該本地文件名(431)由字符串的第三部分在第一與第二單元(425)中所標(biāo)識(shí)。
在一個(gè)實(shí)施例中,用戶文件(405)的文件名(431)的散列值(435)(或散列值(435)的部分)被用來(lái)以確定性的方式從VIP映射(439)中查詢單元(425)。例如,來(lái)自字符串的值的不同范圍可對(duì)應(yīng)于在VIP映射(439)中所標(biāo)識(shí)的不同的單元(425)。在一些實(shí)施例中,VIP映射(439)包括用于從字符串值(即,虛擬IP地址(437))映射到單元(425)的物理IP地址(411)的信息。
在圖15中,在用戶計(jì)算機(jī)(401)上運(yùn)行的客戶端軟件(403)將用戶文件(405)廣播到實(shí)體(409)的單元(425),以及在單元(425)中的每一個(gè)中執(zhí)行的IPMap(421)確定是否有任何文件的部分將被儲(chǔ)存在相應(yīng)的單元(425)上。如果有的話,則儲(chǔ)存該部分的單元(425)的本地文件系統(tǒng)中的位置和/或文件名(431)被計(jì)算。此外,已經(jīng)接收到用戶文件(405)的單元(425)用IPMap(421)來(lái)確定哪個(gè)單元負(fù)責(zé)用戶文件(405)的儲(chǔ)存,并且將該用戶文件(405)傳送到相應(yīng)的單元(425)。此外,(例如,由客戶端軟件(403)所選中的或由IPMap(421)所確定的)單元(425)中的一個(gè)被配置來(lái)與客戶端軟件(403)進(jìn)行通信,用于將用戶文件(405)更多地傳送到負(fù)責(zé)存儲(chǔ)用戶文件(405)的單元(425)。
總體上,IPMap(421)可以被實(shí)現(xiàn)來(lái)儲(chǔ)存用于對(duì)全部數(shù)據(jù)恢復(fù)的冗余和/或奇偶校驗(yàn)數(shù)據(jù)的鏡像副本。例如,IPMap(421)可以用用戶文件(405)的文件名(431)的一部分散列值(435)(或在遞歸地被計(jì)算的散列的序列中的散列值(435))來(lái)標(biāo)識(shí)單元(425)以計(jì)算與儲(chǔ)存校驗(yàn)數(shù)據(jù)。因此,冗余和/或奇偶校驗(yàn)方案的不同的層級(jí)可以通過(guò)將數(shù)據(jù)經(jīng)由IPMap(421)分配到實(shí)體(409)中的負(fù)責(zé)單元(425)而實(shí)現(xiàn)。
在一個(gè)實(shí)施例中,IPMap(421)被配置以將一組用于儲(chǔ)存用戶文件(405)的預(yù)先確定的操作映射到在實(shí)體(409)中的單元(425)的子集??偟膩?lái)說(shuō),IPMap(421)可以被配置來(lái)將一組計(jì)算機(jī)操作(例如,計(jì)算和/或數(shù)據(jù)存儲(chǔ))映射到實(shí)體中的一組單元(425)。
在圖15中,實(shí)體(409)的單元(425)中的每一個(gè)具有運(yùn)行來(lái)維護(hù)數(shù)據(jù)完整性的腦(Brain)(423)(例如,軟件)。當(dāng)讀取/寫(xiě)入用戶文件(405)的時(shí)候,負(fù)責(zé)用戶文件(405)的單元(425)與其他單元(425)進(jìn)行通信,該其他單元(425)也對(duì)于用戶文件(405)負(fù)責(zé)用于監(jiān)控儲(chǔ)存在實(shí)體(409)中具有所期望的程度的冗余/奇偶校驗(yàn)的用戶文件(405)的狀態(tài)。例如,如果單元(425)被發(fā)現(xiàn)不再在實(shí)體(409)中可用(例如,當(dāng)單元(425)死亡,或在多于閾值的時(shí)間段內(nèi)下線),那么剩余的單元(425)的VIP映射(439)被更新以允許單元(425)的IPMap(421)制定出先前在死亡的單元(425)中所存儲(chǔ)的文件的新的位置,并且將可用的文件復(fù)制到新的位置。在一個(gè)實(shí)施例中,經(jīng)由規(guī)則引擎來(lái)實(shí)現(xiàn)腦(423),并且用規(guī)則引擎實(shí)現(xiàn)一組數(shù)據(jù)完整性規(guī)則和損壞復(fù)原策略。
例如,當(dāng)單元(425)死亡或移除網(wǎng)絡(luò)(407)的時(shí)候,單元(425)用腦(423)檢測(cè)到死亡的/移除的單元的缺少,以及響應(yīng)于將新的VIP映射(439)被添加到其他單元(425),其中先前被分配給缺少的單元(425)的散列值(435)被重新分配給其他單元。因此,由所缺少的單元(425)提供的責(zé)任被分配給剩余的單元(425)。在新的VIP映射被傳播到實(shí)體(409)中的單元(425)之后,每一個(gè)單元(425)的腦(423)開(kāi)始從仍舊存活的冗余副本或基于錯(cuò)誤更正算法來(lái)恢復(fù)數(shù)據(jù)。
例如,當(dāng)新的單元(425)被加入到實(shí)體(409)的時(shí)候,現(xiàn)存的VIP映射(439)被修改以將一組散列值分配給單元(425)以生成新的VIP映射(439)。在新的VIP映射(439)在實(shí)體(409)中被傳播并且新的單元(425)從其他單元(425)獲得數(shù)據(jù)之后,在不再負(fù)責(zé)某些VIP映射的腦(423)的控制下的相關(guān)的單元(425),可以開(kāi)始從它們的盤(pán)(417)中刪除相應(yīng)的數(shù)據(jù),它們將不再被詢問(wèn)以提供這些數(shù)據(jù)(即,它們不再服務(wù)與VIP映射(439)相關(guān)的數(shù)據(jù))。
本文所公開(kāi)的硬件架構(gòu)很快地變換關(guān)于與存儲(chǔ)系統(tǒng)的維護(hù)和擴(kuò)展相關(guān)的問(wèn)題的視角。
一個(gè)實(shí)施例的存儲(chǔ)實(shí)體(409)包括單元(425)服務(wù)器的龐大的和多種的組,該單元(425)服務(wù)器的組可以非常小并且由CPU(415)和盤(pán)(417)理想地組成。例如,在存儲(chǔ)實(shí)體(409)中所采用的CPU(415)的數(shù)量以及盤(pán)(417)的數(shù)量可以是完全相同的。
CPU(415)或盤(pán)(417)的添加如連接以太網(wǎng)總線一樣簡(jiǎn)單,并且并不意味著服務(wù)的任何停止或破壞。
不要求維護(hù)操作就可以將新的單元(425)加入到網(wǎng)絡(luò)(407)以代替死去的單元。
存儲(chǔ)空間(理論上是無(wú)限的)通過(guò)(基于散列的)確定性的數(shù)學(xué)算法被尋址,該存儲(chǔ)空間允許所有被保存的數(shù)據(jù)由反向推導(dǎo)同一算法重新獲得。這避免了像在傳統(tǒng)的方法所發(fā)生的一樣使用索引。
通過(guò)IPMap(421)軟件和VIP映射的使用,算法可以在系列的獨(dú)立的存儲(chǔ)單元(425)上聯(lián)合地傳播數(shù)據(jù),該單元中的每一個(gè)只擁有儲(chǔ)存在系統(tǒng)上的一小部分信息。這還意味著通過(guò)加入新的單元(425),實(shí)體(409)的系統(tǒng)可以無(wú)限地被擴(kuò)展。
當(dāng)新的單元(425)被加入到實(shí)體(409)中的時(shí)候,它自動(dòng)地連接到其他單元,并且自動(dòng)地承擔(dān)起它在系統(tǒng)中的角色。
經(jīng)由IPMap(421)軟件和VIP映射(439)的使用,信息遵從冗余策略被傳播進(jìn)單元(425),使得丟失有限數(shù)量的單元(425)不會(huì)危害數(shù)據(jù)可用性。
當(dāng)現(xiàn)存的單元(425)不再能夠在實(shí)體(409)中提供充足表現(xiàn)的服務(wù)的時(shí)候,新的單元(425)可以僅僅通過(guò)將它們連接到網(wǎng)絡(luò)(407)而被加入到實(shí)體(409)。這允許信息的冗余水平隨著時(shí)間被持續(xù)維持。
在本公開(kāi)的存儲(chǔ)系統(tǒng)中,表現(xiàn)隨著每一個(gè)新單元(425)的加入而加強(qiáng)。這種現(xiàn)象的發(fā)生是因?yàn)橛烧麄€(gè)系統(tǒng)所執(zhí)行的盤(pán)I/O的載荷的操作在更大數(shù)量的獨(dú)立的儲(chǔ)存/計(jì)算單元上傳播。在提供服務(wù)的方面,單元(425)以充分獨(dú)立與彼此的方式操作。
在傳統(tǒng)的儲(chǔ)存系統(tǒng)中,在計(jì)算功率和帶寬保持不變的情況下,新空間的加入通常使得表現(xiàn)變慢。
在一個(gè)實(shí)施例中,存儲(chǔ)系統(tǒng)的硬件由一組基礎(chǔ)單元所組成,每一個(gè)是如圖7所示的微服務(wù)器或單元(425)。
在圖17中,微服務(wù)器/單元(425)包括CPU(435)、網(wǎng)絡(luò)接口卡(451)以及用來(lái)儲(chǔ)存系統(tǒng)和軟件服務(wù)的永久性存儲(chǔ)器(455)。此外,每一個(gè)微服務(wù)器/單元(425)具有大容量存儲(chǔ)器(457)以儲(chǔ)存從用戶所接收的數(shù)據(jù)(以防服務(wù)器正在使用存儲(chǔ)單元)。
使用網(wǎng)絡(luò)(407),在橫跨世界的存儲(chǔ)系統(tǒng)中的單元(425)可以出于共享和同步數(shù)據(jù)的目的與彼此進(jìn)行通信。因此,一組自我組織的單元可以形成計(jì)算/存儲(chǔ)實(shí)體(409)形式的存儲(chǔ)系統(tǒng)。
在一個(gè)實(shí)施例中,單元(425)通過(guò)連接到它的計(jì)算機(jī)網(wǎng)絡(luò)(407)被加入實(shí)體(409)中而無(wú)需關(guān)于它在實(shí)體(409)中的位置和作用的信息。這意味著單元(425)不知道哪些其他的單元(425)是它的鄰近單元,并且它不知道它是應(yīng)該儲(chǔ)存數(shù)據(jù)還是僅僅提供計(jì)算服務(wù)。
在單元(425)被連接到網(wǎng)絡(luò)(407)之后,它通過(guò)與其他單元(425)和/或網(wǎng)絡(luò)(407)基礎(chǔ)設(shè)施(例如,網(wǎng)絡(luò)交換器(411)、網(wǎng)關(guān))進(jìn)行通信得到關(guān)于實(shí)體(409)的信息/指令。該信息可以通過(guò)用標(biāo)準(zhǔn)化網(wǎng)絡(luò)協(xié)議(諸如LLDP(鏈路層發(fā)現(xiàn)協(xié)議))而獲得。
在一些實(shí)施例中,所表明的配置文件可以被使用。這種文件可以最初被添加,例如,但它們根據(jù)實(shí)體(409)的健康狀況和實(shí)體(409)中存在的單元數(shù)量而隨時(shí)間變化。
在一個(gè)實(shí)施例中,在新的單元(425)被連接到計(jì)算機(jī)網(wǎng)絡(luò)(407)之后,在實(shí)體(409)中的單元與彼此進(jìn)行通信來(lái)重新組織實(shí)體(409)以利用新的單元(425)的服務(wù),并且適應(yīng)于該實(shí)體(409)可以提供的服務(wù)的水平。
在一個(gè)實(shí)施例中,新的單元(425)并不具有關(guān)于以太網(wǎng)或TCP/IP協(xié)議的預(yù)加載的Mac地址和/或預(yù)加載的IP地址(411)。這些參數(shù)基于在計(jì)算網(wǎng)絡(luò)(407)中所連接的單元(425)的物理位置被分配給單元(425)(例如,依據(jù)它所連接到的端口和/或網(wǎng)絡(luò)交換器(411)/網(wǎng)關(guān)的層級(jí))。
例如,當(dāng)單元加入實(shí)體(409)的時(shí)候,它詢問(wèn)其他的單元關(guān)于托管的信息。在托管信息的基礎(chǔ)上,它假設(shè)在實(shí)體(409)中的角色。軟件組件,IPMap(421)被配置來(lái)組合物理的IP地址(411)和角色分配。
在一個(gè)實(shí)施例中,單元(425)的邏輯角色基于物理IP地址(411)被分配。單元(425)僅僅負(fù)責(zé)被存儲(chǔ)到實(shí)體(409)中的那部分?jǐn)?shù)據(jù)或可計(jì)算的一組操作的部分。
例如,在角色與定位信息之間的映射可以被用來(lái)實(shí)現(xiàn)角色分配。在通過(guò)讀取在定位與角色之間的映射,單元(425)基于它所連接(例如,經(jīng)由LLDP所標(biāo)識(shí))的轉(zhuǎn)換器(411)端口為它自己分配物理地址(Mac地址和IP地址(411))之后,它得知它在實(shí)體(409)中的具有的角色。
以上的安排表明單元(425)能夠易于取代其他的單元(425)。當(dāng)單元(425)物理地被另一個(gè)單元(425)在網(wǎng)絡(luò)(407)連接架構(gòu)的相同的物理位置所替代的時(shí)候,作為替代單元(425)將獲得被替代單元的相同的Mac地址、相同的IP地址(411)、以及相同的角色。
通過(guò)把作為替代的單元(425)放置在網(wǎng)絡(luò)(407)連接架構(gòu)中不同的物理位置,但是分配相同的角色,單元(425)還可以被邏輯地替代。
在一個(gè)實(shí)施例中,實(shí)體(409)作為整體將告知單元(425):它需要解除它的角色以及在哪里得到它仍舊丟失的數(shù)據(jù)的信息。數(shù)據(jù)(也來(lái)自死亡單元(425))通常在網(wǎng)絡(luò)(407)中是可用的,作為冗余和錯(cuò)誤更正策略的序列。
單元(425)可以被設(shè)置為休眠的。例如,在單元(425)獲得在計(jì)算機(jī)網(wǎng)絡(luò)(407)中的IP地址(411)之后,如果它未被分配到角色,那么它在實(shí)體(409)中是休眠的,直到實(shí)體(409)被告知該單元(425)的存在并且重新組織它自己以使用單元(425)的服務(wù)。
在一個(gè)實(shí)施例中,要將單元(425)設(shè)置為休眠,就足以將它的位置從角色的映射中除去。將它再次放入映射使得實(shí)體(409)再次開(kāi)始使用它。
在一個(gè)實(shí)施例中,IPMap(421)是為具有物理IP地址(441)的單元(425)分配數(shù)據(jù)的部分或可計(jì)算的角色的軟件組件。它可以通過(guò)一些實(shí)現(xiàn)方式技術(shù)或通過(guò)以下各項(xiàng)的混合而被獲得:散列映射、Btree/Btree*、以及一般的indexer技術(shù)。IPMap(421)具有作為輸入數(shù)據(jù)的標(biāo)識(shí)(例如,字節(jié)),以及作為輸出提供至少一個(gè)單元(425)的標(biāo)識(shí)和/或單元(425)上的一個(gè)位置,數(shù)據(jù)(或數(shù)據(jù)的一部分)將要被儲(chǔ)存在該位置上。
在一個(gè)實(shí)施例中,腦(423)是軟件組件,該軟件組件監(jiān)管數(shù)據(jù)可用性和單元(425)活動(dòng)。每個(gè)單元(425)包括腦(423),該腦(423)可以為了更正數(shù)據(jù)而做出即時(shí)的決定。決定基于由一些單元(425)所提供的即時(shí)信息而做出。
腦(423)可以執(zhí)行永久地或透明地作用于它決定更正的數(shù)據(jù)?;旧细鶕?jù)奇偶校驗(yàn)/冗余策略實(shí)現(xiàn)更正。
共用的RAID5/RAID6盤(pán)陣列設(shè)備可以實(shí)現(xiàn)針對(duì)奇偶校驗(yàn)/冗余的技術(shù)。然而,在當(dāng)前應(yīng)用的存儲(chǔ)系統(tǒng)中,冗余/奇偶校驗(yàn)組不被獲得以被儲(chǔ)存在盤(pán)(417)的固定的組上(例如,陣列)。由于數(shù)據(jù)可靠性是獨(dú)立于硬件的單一片段的可靠性的,這個(gè)改變將很大地改善系統(tǒng)的可靠性。
在一個(gè)實(shí)施例中,計(jì)算/儲(chǔ)存實(shí)體(409)是在VIP映射(439)上所列出的微服務(wù)器(單元(425))的組。這可以例如作為一架或多架微處理器(單元(425))而實(shí)現(xiàn)。
每一個(gè)單元(425)實(shí)現(xiàn)軟件,該軟件使得它自動(dòng)地假設(shè)在機(jī)架層級(jí)中的角色,通過(guò)例如負(fù)責(zé)數(shù)據(jù)的預(yù)先確定的組以及同時(shí)使用相同的軟件,保證即使在實(shí)體(409)中的其他單元(425)可能發(fā)生故障的時(shí)候,能夠避免服務(wù)降級(jí)而無(wú)需使得實(shí)體(409)提供給用戶的服務(wù)降級(jí)。
機(jī)架層級(jí)的簡(jiǎn)單示例可以由以下各角色所實(shí)現(xiàn):
元數(shù)據(jù)單元(425):包含關(guān)于許可、文件類型、共享、冗余等等信息的單元(425);以及
數(shù)據(jù)單元(425):包含數(shù)據(jù)(圖片、視頻等等)的單元(425)。
當(dāng)實(shí)體(409)被詢問(wèn)來(lái)訪問(wèn)所儲(chǔ)存的文件的時(shí)候,實(shí)體(409)訪問(wèn)元數(shù)據(jù)信息以確定用戶是否可以訪問(wèn)所儲(chǔ)存文件的數(shù)據(jù)。
示例的實(shí)現(xiàn)方式:實(shí)體(409)作為單元(425)的架所實(shí)現(xiàn)。架包括網(wǎng)絡(luò)裝置(交換器(411))、以及存儲(chǔ)單元(425)的一些底座。這些裝置中的每一個(gè)都可能由于各種原因而發(fā)生故障。為了減少對(duì)用戶服務(wù)的缺少的風(fēng)險(xiǎn),在每一個(gè)單元(425)內(nèi)存在兩種專用軟件程序的實(shí)現(xiàn)方式:IPMap(421)以及腦(423)。IPMap(421)給單元(425)角色;以及腦(423)實(shí)現(xiàn)錯(cuò)誤檢測(cè)和/或錯(cuò)誤更正的策略。在一些實(shí)施例中,CHORD模塊還可以在IPMap的模型下被添加以提供在單元-實(shí)體層級(jí)的檢測(cè)方面的標(biāo)準(zhǔn)方法。
IPMap(421)可以以HashMap的形式被實(shí)現(xiàn)。例如,當(dāng)用戶上傳文件,該文件明確地與一組單元(425)相關(guān)聯(lián),并且文件的數(shù)據(jù)字節(jié)被儲(chǔ)存在硬盤(pán)驅(qū)動(dòng)(417)上,該硬盤(pán)驅(qū)動(dòng)以獨(dú)特的方式被附著在單元(425)的確定的組上。
例如,在一個(gè)示例的實(shí)施方式中,Md5被用于用戶文件的文件名(例如,file.bmp)以獲得散列值(435)(例如,4a586cf87b342878153dc3c81d76fccb)。
Md5(file.bmp)=4a586cf87b342878153dc3c81d76fccb
散列值(435)的前面的n字節(jié)通過(guò)用儲(chǔ)存在公共的文件中的映射被加入IP地址(411)。具有IP地址(411)的單元(425)將儲(chǔ)存用戶文件(405)的數(shù)據(jù)的第一副本。
散列值(435)的n+1到m字節(jié)被用來(lái)個(gè)性化第二IP地址(411),以及具有第二IP地址(411)的單元(425)將儲(chǔ)存用戶文件(405)的數(shù)據(jù)的第二副本。
散列值(435)的m+1到p字節(jié)被用來(lái)標(biāo)識(shí)微服務(wù)器(單元(425))的大容量存儲(chǔ)器(457)的文件系統(tǒng)中的目錄,用于儲(chǔ)存用戶文件(405)的數(shù)據(jù)的副本。
散列(345)的p+1到q字節(jié)被用來(lái)標(biāo)識(shí)名稱,文件通過(guò)該名稱被儲(chǔ)存在微服務(wù)器(單元(425))的大容量存儲(chǔ)器(457)的文件系統(tǒng)中。
應(yīng)當(dāng)注意以上基于Md5所示出的簡(jiǎn)單方案的使用存在許多沖突(例如,不同的文件被映射到相同的存儲(chǔ)位置)。可以實(shí)現(xiàn)智能系統(tǒng)以避免/解決該沖突和/或減少?zèng)_突的幾率。
在本示例上構(gòu)建的散列方法可以被用來(lái)標(biāo)識(shí)多于兩個(gè)的IP地址(411)用于儲(chǔ)存多于兩個(gè)的文件的副本,和/或儲(chǔ)存錯(cuò)誤-更正副本,該副本被儲(chǔ)存在由從散列值(435)所確定的IP地址(411)所標(biāo)識(shí)的單元(425)的一個(gè)上。
在采用CHORD模塊的實(shí)施例中,可以用基于MD5方法生成一個(gè)或多個(gè)密鑰。然而,用MD5散列方程所生成的密鑰不直接映射到虛擬IP。通過(guò)用針對(duì)在CHORD模塊中實(shí)現(xiàn)的點(diǎn)對(duì)點(diǎn)查找服務(wù)的通信協(xié)議來(lái)詢問(wèn)實(shí)體,用CHORD模塊來(lái)復(fù)原可用(competent)的IP。虛擬IP對(duì)真實(shí)IP的映射仍舊被使用,但是基于動(dòng)態(tài)。映射可用被認(rèn)為在很長(zhǎng)的時(shí)間段內(nèi)是靜態(tài)的,但是可以對(duì)它自己進(jìn)行更新以免錯(cuò)誤或新的實(shí)體,對(duì)于客戶不產(chǎn)生任何影響,這可以保證對(duì)于每一個(gè)密鑰接收負(fù)責(zé)該密鑰的節(jié)點(diǎn)的VIP。
用這種方法,當(dāng)單元(425)死亡的時(shí)候,系統(tǒng)可以忍受該單元(425)的缺失。在系統(tǒng)的剩余的單元(425)中運(yùn)行的腦(423)檢測(cè)到單元(425)的缺失并且可以重新組織來(lái)進(jìn)行包括讓其他單元(425)代替失去的單元的位置的操作。
用戶文件(405)的全部數(shù)據(jù)仍舊是可用的,該用戶文件(405)的全部數(shù)據(jù)儲(chǔ)存在包含該相同文件的副本的剩余單元(425)的組中。任何單元(425)的腦(423)可以將這個(gè)數(shù)據(jù)從剩余的單元(425)移動(dòng)到新的單元(425),該新的單元(425)在重新組織后加入該組。
在一個(gè)實(shí)施例中,每一個(gè)單元(425)可以由適當(dāng)被設(shè)計(jì)的客戶端所到達(dá)。例如,客戶端發(fā)送消息到單元(425)。消息基本上包括關(guān)于將儲(chǔ)存的用戶文件(405)的數(shù)據(jù)。
位于單元(425)內(nèi)的IPMap(421)計(jì)算文件將被儲(chǔ)存在實(shí)體(409)的哪里。
消息包含關(guān)于冗余副本和延伸的校驗(yàn)副本的信息。冗余副本和校驗(yàn)允許忍受和對(duì)于最終的用戶掩飾錯(cuò)誤。
更多地,當(dāng)執(zhí)行寫(xiě)入/讀取互動(dòng)的時(shí)候,單元(425)收集關(guān)于以下各項(xiàng)的即時(shí)信息:
對(duì)于已復(fù)制的數(shù)據(jù)可用的副本數(shù)量;
對(duì)于校驗(yàn)更正數(shù)據(jù)的每個(gè)組可用的校驗(yàn)因子的數(shù)量;
成功寫(xiě)入另一個(gè)單元(425);
成功從另一個(gè)單元(425)讀??;
成功連接到另一個(gè)單元(425);和/或
成功到達(dá)另一個(gè)單元。
當(dāng)讀取/寫(xiě)入數(shù)據(jù)的時(shí)候,這些指示符通常是可用的。如果發(fā)生了某些故障(和達(dá)到了某些警報(bào)閾值),腦(423)啟動(dòng)分析的常規(guī)程序使得對(duì)于更正或忍受該問(wèn)題做出決定。
這種信息的可用性允許實(shí)施錯(cuò)誤檢測(cè)策略的實(shí)現(xiàn)。
基于所檢測(cè)到的錯(cuò)誤。錯(cuò)誤-更正策略可以被觸發(fā)。
一組先前的規(guī)則當(dāng)前被植入腦(423)的軟件中:
當(dāng)檢查冗余/奇偶策略的時(shí)候,如果一些副本(相同版本)被破壞,腦(423)負(fù)責(zé)替代該丟失的副本;
Ipmap(file)=adrr_copyl,addr_copy2,...,addr_copy3;
For each copy in
adrr_copy1,addr_copy2,...,addr_copy3;
Do:
if copy is damaged
read next(copy)and replace(copy);
Done;
當(dāng)連接/到達(dá)單元(425)的時(shí)候,如果問(wèn)題揭露,那么為了標(biāo)識(shí)錯(cuò)誤的寬度啟動(dòng)診斷常規(guī)程序。
如果它是到達(dá)問(wèn)題,那么腦(423)嘗試通過(guò)用另外的路徑到達(dá)單元(425)。
單元(425)被提供了更多的網(wǎng)絡(luò)接口卡(451):cell.a,cell.b等等。
If connect(cell.A)==false
Then:connect(cell.B)
如果存在連接問(wèn)題(單元(425)是可到達(dá)的但是未能響應(yīng))修復(fù)策略被觸發(fā)。
If connect(cell.A)==true
Then:If(SendData(cell.A,copy)==false and
SendData(cell.B,copy)==false)
Then:
//the copy is sent to another cell(425)
SendData(next(cell),copy)
如果太多單元(425)都是不可用的,則實(shí)體-服務(wù)被暫停。
For each cell(425)in Rack
Do:
If(connect(cell.A)==false and
Connect(cell.B)==false)
N=N+1;
Done
If N>25%of Rack SuspendService();
腦(423)可以作為規(guī)則引擎而實(shí)現(xiàn)。規(guī)則的組易于擴(kuò)展。
圖18-20根據(jù)一個(gè)實(shí)施例,示出了在實(shí)體中單元(425)的生命期。
在圖18中,單元的實(shí)體(409)由用戶所到達(dá)。用戶上傳文件A到實(shí)體(409)上。
他的文件立即被復(fù)制到一些單元(425)(例如,單元10,、單元10、單元2n)。
在(例如,單元2n)(或盤(pán)(427)連接到的)單元(425)被破壞之后,腦(423)檢測(cè)問(wèn)題并且復(fù)制來(lái)自依舊可用的單元(425)的數(shù)據(jù),將數(shù)據(jù)包含在依舊響應(yīng)的另一個(gè)單元(425)(例如,單元12)中,如在圖19中所示。
在一個(gè)實(shí)施例中,不存在確定性的方法來(lái)標(biāo)識(shí)將要掌握所恢復(fù)副本的單元(425),所以該過(guò)程可以一直持續(xù)直到網(wǎng)絡(luò)已經(jīng)相當(dāng)廣泛的時(shí)候。
在診斷/修復(fù)動(dòng)作之后,用戶能夠再一次恢復(fù)他的文件無(wú)需缺少任何服務(wù)。
這種方法比下文所解釋的目前的基于RAID的方法更好。
腦(423)還可以基于針對(duì)被配置用于作為規(guī)則引擎而運(yùn)行的腦(423)的規(guī)則,來(lái)決定推遲修復(fù)或不更正問(wèn)題,。
如果故障是暫時(shí)的(例如,網(wǎng)絡(luò)(407)問(wèn)題)或維修操作被執(zhí)行以重新啟動(dòng)丟失的單元(425)/盤(pán)(417),一段時(shí)間內(nèi)數(shù)據(jù)是過(guò)剩的,如圖20所示的。在實(shí)體(409)的單元(425)中的一個(gè)上運(yùn)行的腦(423)現(xiàn)在可以決定移除舊的副本使得能夠維持實(shí)體(409)中的盤(pán)(417)空間的適度的低使用率。
在一個(gè)實(shí)施例中,技術(shù)被提供以實(shí)現(xiàn)針對(duì)電子數(shù)據(jù)的存儲(chǔ)系統(tǒng),該系統(tǒng)依據(jù)表現(xiàn)和存儲(chǔ)空間,是虛擬地并且無(wú)限的可擴(kuò)展的。該系統(tǒng)包括經(jīng)由計(jì)算機(jī)網(wǎng)絡(luò)所連接的一組微服務(wù)器,來(lái)針對(duì)角色分配以及數(shù)據(jù)恢復(fù)自我組織它們自己。映射技術(shù)被用來(lái)橫跨微服務(wù)器的子集,分配儲(chǔ)存任務(wù)和/或計(jì)算任務(wù)用于用數(shù)據(jù)冗余來(lái)儲(chǔ)存或重新獲得用戶文件;并且基于用戶文件的標(biāo)識(shí)符以確定性的方法從系統(tǒng)可用的服務(wù)器中選擇子集。選擇被配置來(lái)在系統(tǒng)的微服務(wù)器之間偽隨機(jī)地分配與不同的文件相關(guān)聯(lián)的任務(wù)。
在一個(gè)實(shí)施例中,實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法包括:提供多個(gè)單元計(jì)算設(shè)備,其中每一個(gè)相應(yīng)的單元計(jì)算設(shè)備具有網(wǎng)絡(luò)接口、數(shù)據(jù)存儲(chǔ)設(shè)備、處理器、以及儲(chǔ)存那些被配置來(lái)操作相應(yīng)的單元計(jì)算設(shè)備的指令的存儲(chǔ)器。
當(dāng)網(wǎng)絡(luò)接口被連接到計(jì)算機(jī)網(wǎng)絡(luò)的時(shí)候,相應(yīng)的單元計(jì)算設(shè)備由指令(例如,實(shí)現(xiàn)針對(duì)點(diǎn)對(duì)點(diǎn)查找服務(wù)的指令,諸如在CHORD模塊中的那些)所配置以至少執(zhí)行以下操作:標(biāo)識(shí)當(dāng)前連接到計(jì)算網(wǎng)絡(luò)的多個(gè)單元計(jì)算設(shè)備;在多個(gè)單元計(jì)算設(shè)備之間進(jìn)行通信以維護(hù)在一組虛擬地址與多個(gè)單元計(jì)算設(shè)備之間的映射;接收數(shù)據(jù)集的標(biāo)識(shí);計(jì)算來(lái)自標(biāo)識(shí)的虛擬地址;確定虛擬地址是否基于映射而對(duì)應(yīng)于相應(yīng)的單元計(jì)算設(shè)備;以及響應(yīng)于確定虛擬地址響應(yīng)于單元計(jì)算設(shè)備,儲(chǔ)存或處理獨(dú)立于在計(jì)算機(jī)網(wǎng)絡(luò)上的其他單元計(jì)算設(shè)備的數(shù)據(jù)集的至少一部分。
在一個(gè)實(shí)施例中,響應(yīng)于檢測(cè)存在于計(jì)算機(jī)網(wǎng)絡(luò)上的單元計(jì)算設(shè)備中的變化,當(dāng)前存在于計(jì)算機(jī)網(wǎng)絡(luò)上的單元計(jì)算設(shè)備與彼此進(jìn)行通信以更新虛擬地址的組與當(dāng)前存在于計(jì)算機(jī)網(wǎng)絡(luò)上的單元計(jì)算設(shè)備之間的映射。
在一個(gè)實(shí)施例中,響應(yīng)于檢測(cè)到先前在映射中的單元計(jì)算設(shè)備的缺少,該單元計(jì)算設(shè)備根據(jù)基于更新該映射的一組規(guī)則來(lái)自動(dòng)地執(zhí)行數(shù)據(jù)恢復(fù)操作。
在一個(gè)實(shí)施例中,非暫態(tài)的計(jì)算機(jī)存儲(chǔ)介質(zhì)儲(chǔ)存指令,該指令被配置以指示單元計(jì)算設(shè)備來(lái)執(zhí)行上文所討論的多個(gè)實(shí)施例的操作。
在一個(gè)實(shí)施例中,相應(yīng)的單元計(jì)算設(shè)備被配置以指令以執(zhí)行上文所討論的多個(gè)實(shí)施例的操作。
在一個(gè)實(shí)施例中,計(jì)算系統(tǒng)包括連接到計(jì)算機(jī)網(wǎng)絡(luò)并且被配置以執(zhí)行以上所討論的多個(gè)實(shí)施例的操作的指令的多個(gè)單元計(jì)算設(shè)備。
在一個(gè)實(shí)施例中,單元(425)的存儲(chǔ)器(419)包括以下各項(xiàng)的一個(gè)或多個(gè):ROM(只讀計(jì)算機(jī))、易失RAM(隨機(jī)讀取存儲(chǔ)器)、以及非易失存儲(chǔ)器(諸如硬件驅(qū)動(dòng)、閃存等等)。
易失RAM具體地被實(shí)現(xiàn)為動(dòng)態(tài)RAM(DRAM),該動(dòng)態(tài)RAM持續(xù)地需要能量,為了刷新或維護(hù)在存儲(chǔ)器中的數(shù)據(jù)。非易失存儲(chǔ)器具體是磁盤(pán)驅(qū)動(dòng)器、磁光盤(pán)驅(qū)動(dòng)器、光盤(pán)驅(qū)動(dòng)器(例如,DVD RAM)、或即使在能量被移除系統(tǒng)的之后仍能夠維護(hù)數(shù)據(jù)的其他類型的存儲(chǔ)器系統(tǒng)。非易失存儲(chǔ)器還可以是隨機(jī)存取存儲(chǔ)器。
非易失存儲(chǔ)器可以是直接耦接到在數(shù)據(jù)處理系統(tǒng)中的其余組件的本地設(shè)備。與系統(tǒng)的遠(yuǎn)程的非易失存儲(chǔ)器,例如經(jīng)由網(wǎng)絡(luò)接口(諸如調(diào)制解調(diào)器或以太網(wǎng)接口)耦接到數(shù)據(jù)處理系統(tǒng)的網(wǎng)絡(luò)存儲(chǔ)設(shè)備也可以被使用。
在本說(shuō)明中,出于簡(jiǎn)化說(shuō)明的目的,一些功能與操作被描述為由軟件代碼所執(zhí)行或引起。然而,這種表示還被用來(lái)指定該功能是由處理器(諸如,微處理器)對(duì)于代碼/指令的執(zhí)行而得出。
此外,或組合地,本文所描述的功能與操作可以用具有或不具有軟件指令的專用電路被實(shí)現(xiàn),諸如用專用集成電路(ASIC)或現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)。實(shí)施例可以用不具有軟件指令的硬線電路而實(shí)現(xiàn),或與軟件指令相組合而實(shí)現(xiàn)。因此,技術(shù)既不被限制于硬件電路與軟件的任何具體組合,也不被限制于用于由數(shù)據(jù)處理系統(tǒng)所執(zhí)行的指令的任何特定的源。
盡管一個(gè)實(shí)施例可以在功能健全的計(jì)算機(jī)和計(jì)算機(jī)系統(tǒng)中被實(shí)現(xiàn),但是各種實(shí)施例可以作為各種形式的計(jì)算產(chǎn)品被分配,并且可以被采用而不論真實(shí)地影響該分配的機(jī)器或計(jì)算機(jī)可讀介質(zhì)的特定的類型。
所公開(kāi)的至少一些方面可以在軟件中被至少部分地實(shí)施。即,技術(shù)可以對(duì)應(yīng)于執(zhí)行在存儲(chǔ)器(諸如ROM、易失RAM、非易失存儲(chǔ)器、緩存或遠(yuǎn)程存儲(chǔ)設(shè)備)中所包含的指令的序列的它的存儲(chǔ)器(諸如,微處理器)而在計(jì)算機(jī)系統(tǒng)或其他數(shù)據(jù)處理系統(tǒng)中被實(shí)施。
被執(zhí)行以實(shí)現(xiàn)實(shí)施例的常規(guī)程序可以作為被稱為“計(jì)算機(jī)程序”的操作系統(tǒng)的部分或具體的應(yīng)用、組件、程序、對(duì)象、模塊或指令的序列而實(shí)現(xiàn)。計(jì)算機(jī)程序通常包括計(jì)算機(jī)中的各種存儲(chǔ)器和存儲(chǔ)設(shè)備中在多個(gè)時(shí)刻的一個(gè)或多個(gè)指令的組,并且當(dāng)由在計(jì)算機(jī)中的一個(gè)或多個(gè)處理器所讀取和執(zhí)行的時(shí)候,使得計(jì)算機(jī)執(zhí)行對(duì)于執(zhí)行涉及各種方面的元素的關(guān)鍵的操作。
機(jī)器可讀介質(zhì)可以被用來(lái)儲(chǔ)存軟件與數(shù)據(jù),當(dāng)由數(shù)據(jù)處理系統(tǒng)所執(zhí)行的時(shí)候使得該系統(tǒng)執(zhí)行各種方法??蓤?zhí)行的軟件與數(shù)據(jù)被儲(chǔ)存在各種空間中,該空間包括諸如ROM、易失RAM、非易失存儲(chǔ)器和/或緩存。這種軟件和/或數(shù)據(jù)的部分可以被儲(chǔ)存在這些存儲(chǔ)設(shè)備中的任何一個(gè)中。此外,數(shù)據(jù)和指令可以從中央服務(wù)器或點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中所獲得。數(shù)據(jù)和指令的不同的部分可以從不同的中央服務(wù)器和/或點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)在不同的時(shí)刻、在不同的通信會(huì)話、或在相同的通信會(huì)話中所獲得。數(shù)據(jù)和指令可以先于應(yīng)用的執(zhí)行而全部地獲得。此外,數(shù)據(jù)和指令的位置可以當(dāng)被需要用于執(zhí)行的時(shí)候及時(shí)被動(dòng)態(tài)地獲得。因此,不要求數(shù)據(jù)和指令在特定的時(shí)刻全部在機(jī)器可讀介質(zhì)上。
計(jì)算機(jī)可讀介質(zhì)的示例包括但不局限于可記錄的和不可記錄的類型的介質(zhì),諸如易失的和非易失的存儲(chǔ)設(shè)備、只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、閃存設(shè)備、軟盤(pán)以及其他可移動(dòng)的盤(pán)、磁盤(pán)存儲(chǔ)介質(zhì)、光盤(pán)存儲(chǔ)介質(zhì)(例如,光盤(pán)只讀存儲(chǔ)器(CD ROMS)、數(shù)字通用光盤(pán)(DVD)等等)。計(jì)算機(jī)可讀介質(zhì)可以儲(chǔ)存指令。
指令還可以被體現(xiàn)在用于電的、光的、聲學(xué)或其他形式的傳播信號(hào)(諸如,載波、紅外線信號(hào)、數(shù)字信號(hào)等等)的數(shù)字和模擬通信鏈路中。然而,傳播信號(hào)(諸如,載波、紅外線信號(hào)、數(shù)字信號(hào)等等)不是有形的機(jī)器可讀的介質(zhì)并且不被配置來(lái)儲(chǔ)存指令。
總的來(lái)說(shuō),機(jī)器可讀介質(zhì)包括提供(即,儲(chǔ)存和/或傳輸)由機(jī)器(例如,計(jì)算機(jī)、網(wǎng)絡(luò)設(shè)備、個(gè)人數(shù)字助手、制造工具、具有一個(gè)或多個(gè)處理器的集的任何設(shè)備等等)可訪問(wèn)的形式的信息的任何機(jī)制。
在各種實(shí)施例中,硬件電路可以應(yīng)用在與軟件指令的組合中以實(shí)現(xiàn)該技術(shù)。因此,該技術(shù)既不局限于硬件與軟件的任何具體的組合,也不局限于用于由數(shù)據(jù)處理系統(tǒng)所執(zhí)行的指令的任何特定的源。
本說(shuō)明書(shū)與附圖是示例性的并且不應(yīng)被理解為限制性的。本公開(kāi)是發(fā)明特性的示出,使得本領(lǐng)域技術(shù)人員能夠做出和使用該技術(shù)。大量的具體細(xì)節(jié)被描述以提供透徹的理解。然而,在某些示例中,出于避免模糊說(shuō)明的目的,眾所周知的或傳統(tǒng)的細(xì)節(jié)沒(méi)有被描述。在本公開(kāi)中的一個(gè)實(shí)施例的參考條件,并不是對(duì)于相同的實(shí)施例所必需的參考條件;并且,這些參考條件意為至少一個(gè)。
本文標(biāo)題的使用僅僅出于易于參考的目的被提供,并且不應(yīng)以任何方式被理解為限制本公開(kāi)或下文的權(quán)利要求書(shū)。
參考“一個(gè)實(shí)施例”意為聯(lián)系該實(shí)施例所描述的具體的特性、結(jié)構(gòu)、或特征被包括在本公開(kāi)的至少一個(gè)實(shí)施例中。在說(shuō)明書(shū)中的多處出現(xiàn)的短語(yǔ)“在一個(gè)實(shí)施例中”并不是必須指的是同一實(shí)施例,并且并不必須全部指的是排除其他實(shí)施例的單獨(dú)的或其他的實(shí)施例。此外,所描述的各種特性可以由一個(gè)實(shí)施例而不是由其他實(shí)施例所呈現(xiàn)的。相似地,所描述的各種要求可以是針對(duì)一個(gè)實(shí)施例而不是其他實(shí)施例的要求。除非由明確說(shuō)明和/或明顯不相容性所排除,本說(shuō)明中所描述的各種特性的組合也被本文所包括。例如,以上聯(lián)系“在一個(gè)實(shí)施例中”或“在一些實(shí)施例中”的所描述的特性可以全部有選擇地被包括在一個(gè)實(shí)現(xiàn)方式中,除了以下情況:從本說(shuō)明中能夠明顯得得出的,某些特性是其他特性的從屬,則可能限制從實(shí)現(xiàn)方式中排除所選中的特性;以及如從本說(shuō)明中能夠明顯得得出的,某些特性與其他特性的不相容性,則可能限制在實(shí)現(xiàn)方式中一起包括所選中的特性。
在前述的說(shuō)明書(shū)中,本公開(kāi)已經(jīng)參照具體的示例的實(shí)施例所描述。顯然的是,可以做出多種修改而不離開(kāi)如下述權(quán)利要求書(shū)中所列出的寬泛的精神和范圍。相應(yīng)地,本說(shuō)明書(shū)以及附圖被理解為示例的表達(dá)而不是限制的表達(dá)。