在可縮放環(huán)境中管理分區(qū)的制作方法
【專利摘要】本發(fā)明提供了啟用用于對(duì)可縮放環(huán)境中的應(yīng)用定義的作業(yè)進(jìn)行分區(qū)的通用框架的系統(tǒng)和方法。該通用框架將對(duì)作業(yè)進(jìn)行分區(qū)從其他方面的作業(yè)中解耦出來(lái)。結(jié)果,定義應(yīng)用定義的作業(yè)所需的努力被降低或最小化,因?yàn)椴恍枰脩籼峁┓謪^(qū)算法。通用框架還促成對(duì)在分布式環(huán)境中執(zhí)行計(jì)算的主機(jī)和服務(wù)器的管理。
【專利說(shuō)明】在可縮放環(huán)境中管理分區(qū)
[0001]背景
[0002]云計(jì)算環(huán)境提供用于允許用戶具有對(duì)大量計(jì)算資源的訪問(wèn)而無(wú)須購(gòu)置相應(yīng)的架構(gòu)的潛在平臺(tái)。相反,該計(jì)算環(huán)境可被云計(jì)算提供者作為服務(wù)來(lái)提供。這可允許用戶調(diào)諧所請(qǐng)求的計(jì)算資源以匹配計(jì)算作業(yè)的尺寸和重要性。然而,充分利用可用作服務(wù)的附加計(jì)算資源可能需要將各計(jì)算任務(wù)劃分成較小的部分,以使得多個(gè)物理或虛擬處理器可被用于執(zhí)行任務(wù)。
[0003]概述
[0004]在各個(gè)實(shí)施例中,提供了啟用用于對(duì)可縮放環(huán)境中的應(yīng)用定義的作業(yè)進(jìn)行分區(qū)的通用框架的系統(tǒng)和方法。該通用框架將對(duì)作業(yè)進(jìn)行分區(qū)從該作業(yè)的其他方面中解耦出來(lái)。結(jié)果,定義應(yīng)用定義的作業(yè)所需的努力被降低或最小化,因?yàn)椴恍枰脩籼峁┓謪^(qū)算法。通用框架還促成對(duì)在分布式環(huán)境中執(zhí)行計(jì)算的主機(jī)和服務(wù)器的管理。
[0005]提供本概述是為了以簡(jiǎn)化的形式介紹將在以下【具體實(shí)施方式】中進(jìn)一步描述的概念選擇。該概述不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或本質(zhì)特征,也不旨在獨(dú)立地用于幫助確定所要求保護(hù)的主題的范圍。
[0006]附圖簡(jiǎn)述
[0007]下面將參考附圖詳細(xì)描述本發(fā)明,其中:
[0008]圖1到圖3示意性地示出根據(jù)本發(fā)明的各方面的分布式計(jì)算環(huán)境的一示例的各個(gè)方面;
[0009]圖4示意性地示出根據(jù)本發(fā)明的各方面的各個(gè)接口之間用于執(zhí)行通用分區(qū)環(huán)境中的作業(yè)的交互。
[0010]圖5示出了根據(jù)本發(fā)明的各方面的通用分區(qū)環(huán)境的示例;
[0011]圖6示出根據(jù)本發(fā)明的各方面的為活躍主機(jī)角色提供備份機(jī)器的示例;
[0012]圖7是適用于在實(shí)現(xiàn)本發(fā)明的各實(shí)施例時(shí)使用的示例性計(jì)算環(huán)境的框圖;
[0013]圖8示出根據(jù)本發(fā)明的各方面的為主機(jī)角色提供備份機(jī)器的另一示例;
[0014]圖9到圖10示出根據(jù)本發(fā)明的各實(shí)施例的方法的示例;以及
[0015]圖11示出根據(jù)本發(fā)明的各方面的相對(duì)于錯(cuò)誤域和升級(jí)域?yàn)橹鳈C(jī)角色提供備份機(jī)器的示例性方面。
[0016]詳細(xì)描述
[0017]攝覽
[0018]由于通過(guò)網(wǎng)絡(luò)的數(shù)據(jù)傳輸速度的增加和其他網(wǎng)絡(luò)特征的改善,越來(lái)越有可能在其中計(jì)算資源分布在大型網(wǎng)絡(luò)上的環(huán)境中執(zhí)行大規(guī)模計(jì)算任務(wù)。處于第一位置的用戶可向計(jì)算服務(wù)提交作業(yè)或計(jì)算任務(wù),并且使該任務(wù)在該用戶不直接知曉的計(jì)算機(jī)群組上執(zhí)行。用于執(zhí)行用戶的任務(wù)的計(jì)算資源可分布在多個(gè)位置上。位于一個(gè)或多個(gè)位置中的第一計(jì)算資源群組可以存儲(chǔ)用于執(zhí)行用戶的計(jì)算任務(wù)的數(shù)據(jù)和其他信息,而位于相同位置或者可能位于一組不同的一個(gè)或多個(gè)位置中的第二計(jì)算資源群組可被用于執(zhí)行該計(jì)算任務(wù)。
[0019]對(duì)各種分布式計(jì)算資源的訪問(wèn)允許用戶執(zhí)行作業(yè)任務(wù),而無(wú)需關(guān)心這些計(jì)算資源位于何處。分布式資源還為用戶提供了擴(kuò)展(scale up)(或收縮(scale down))所使用的資源量以便滿足計(jì)算任務(wù)的目標(biāo)(諸如用指定時(shí)間完成該計(jì)算任務(wù))的機(jī)會(huì)。然而,使用分布式計(jì)算資源向用戶提出了數(shù)個(gè)挑戰(zhàn)。常規(guī)上,用戶或應(yīng)用設(shè)計(jì)者將需要將資源從設(shè)計(jì)應(yīng)用或作業(yè)中轉(zhuǎn)移走,以便確定如何利用具體的分布式計(jì)算環(huán)境。
[0020]在各個(gè)實(shí)施例中,提供了啟用用于在分布式環(huán)境(諸如云計(jì)算環(huán)境)中構(gòu)建可縮放應(yīng)用的通用框架的系統(tǒng)和方法。該通用框架可允許將對(duì)作業(yè)或工作項(xiàng)進(jìn)行分區(qū)從執(zhí)行與這些作業(yè)或工作項(xiàng)相關(guān)聯(lián)的計(jì)算中解耦出來(lái)。這允許分布式環(huán)境的所有者以可訪問(wèn)或簡(jiǎn)化方式向用戶提供資源,而同時(shí)仍提供分布式資源的高可用性。該通用框架通過(guò)提供以下框架來(lái)降低為分布式環(huán)境設(shè)計(jì)應(yīng)用的復(fù)雜性:用于處理諸如可縮放性、容錯(cuò)性、和/或可用性之類的特征,同時(shí)降低或最小化處理這些特征所需的努力量的框架。結(jié)果,該框架可允許應(yīng)用設(shè)計(jì)者聚焦于該應(yīng)用,而不是將附加的時(shí)間花在該分布式環(huán)境的要求上。
[0021]定義
[0022]“密鑰”是通用分區(qū)框架中使用的基板概念之一。密鑰是來(lái)自命名空間或域的值。命名空間的示例是對(duì)應(yīng)于云計(jì)算環(huán)境中的所有存儲(chǔ)賬戶的標(biāo)識(shí)符。在這樣的示例中,密鑰可對(duì)應(yīng)于賬戶名、賬號(hào)、或允許引用特定賬戶的另一標(biāo)識(shí)符。命名空間的另一示例是針對(duì)作業(yè)的輸入?yún)?shù)的可能字母數(shù)字值范圍。優(yōu)選地,跨越命名空間的各密鑰將也具有某種組織方法,以使得密鑰可被描述成序列值范圍。例如,這些密鑰可以按數(shù)字、按字母、基于散列值、或以允許密鑰范圍基于將兩個(gè)密鑰指定為范圍開(kāi)始和范圍結(jié)束來(lái)定義的任何其他方便的串行方式來(lái)組織。
[0023]“分區(qū)”是由低(包括性)和高(排他性)密鑰限定的范圍。分區(qū)永遠(yuǎn)不可能是空范圍。如果需要的話,單個(gè)分區(qū)可包含域的整個(gè)范圍。分區(qū)被定義成是互斥的,以使得兩個(gè)不同分區(qū)的范圍之間不存在交迭。所有分區(qū)的并將跨越整個(gè)域或命名空間。
[0024]“分區(qū)服務(wù)器”是云計(jì)算環(huán)境內(nèi)與用于提供零個(gè)或更多個(gè)分區(qū)的角色實(shí)例相對(duì)應(yīng)的虛擬機(jī)。分區(qū)并非在相同時(shí)間由一個(gè)以上的分區(qū)服務(wù)器來(lái)服務(wù)。然而,給定分區(qū)服務(wù)器可能不具有當(dāng)前正由該分區(qū)服務(wù)器來(lái)服務(wù)的任何分區(qū)。分區(qū)服務(wù)器可包括用于執(zhí)行各種動(dòng)作的應(yīng)用定義的接口和(由分區(qū)系統(tǒng)定義的)固定接口兩者。
[0025]“分區(qū)主機(jī)”是諸如通過(guò)將分區(qū)分派給分區(qū)服務(wù)器和解除這種分派來(lái)管理針對(duì)給定類型的角色的分區(qū)服務(wù)器的角色。分區(qū)主機(jī)角色還諸如通過(guò)驗(yàn)證分區(qū)服務(wù)器仍服務(wù)于所分派的分區(qū)來(lái)監(jiān)控這些分區(qū)服務(wù)器。通常,該角色對(duì)于容錯(cuò)性而言是冗余的。分區(qū)主機(jī)可包括用于執(zhí)行各種動(dòng)作的應(yīng)用定義的接口和(由分區(qū)系統(tǒng)定義的)固定接口兩者。
[0026]“應(yīng)用定義的接口 ”指的是由客戶機(jī)定義來(lái)供角色實(shí)例執(zhí)行的計(jì)算、操作或其他功能??梢詾榉謪^(qū)主機(jī)或分區(qū)服務(wù)器角色創(chuàng)建應(yīng)用定義的接口。應(yīng)用定義的接口不同于分區(qū)系統(tǒng)的“固定接口”。固定接口指的是作為分區(qū)系統(tǒng)的一部分來(lái)提供的應(yīng)用接口??蛻魴C(jī)無(wú)法修改固定接口的動(dòng)作。然而,應(yīng)用定義的接口可結(jié)合固定接口被使用。例如,主機(jī)角色的固定接口可能每時(shí)間周期都會(huì)發(fā)送心跳消息,以驗(yàn)證正由主機(jī)角色管理的任何服務(wù)器的狀態(tài)。服務(wù)器角色的相應(yīng)固定接口可以是用于以恰當(dāng)方式對(duì)該心跳消息作出響應(yīng)的接口。應(yīng)用定義的接口的示例可以是向心跳消息添加附加信息的接口,而另一示例可以是從心跳消息提取這樣的附加信息的接口。在這樣的情況下,心跳消息的發(fā)送本身是固定接口。用戶或應(yīng)用無(wú)法修改用于發(fā)送該消息的協(xié)議。然而,用于定義消息內(nèi)容的接口可以被用戶修改。用于補(bǔ)充心跳消息中的信息的接口的基本結(jié)構(gòu)可以由該系統(tǒng)來(lái)提供。然而,由于客戶機(jī)可以修改這個(gè)接口所提供的內(nèi)容,因此在本文中這樣的接口被定義成應(yīng)用定義的接口。
[0027]作為另一示例,應(yīng)用定義的接口可結(jié)合固定接口一起使用以提供負(fù)載平衡的總特征。用于將分區(qū)分派給分區(qū)服務(wù)器或?qū)⒎謪^(qū)拆解成兩個(gè)分區(qū)的接口是固定接口。然而,應(yīng)用定義的接口可提供關(guān)于負(fù)載平衡動(dòng)作應(yīng)何時(shí)發(fā)生的表達(dá),如在各機(jī)器之間改變分區(qū)分派,或判定何時(shí)拆解分區(qū)。
[0028]每一活躍分區(qū)主機(jī)角色或分區(qū)服務(wù)器角色具有控制與該角色相對(duì)應(yīng)的數(shù)據(jù)的相應(yīng)存儲(chǔ)對(duì)象。存儲(chǔ)對(duì)象的示例是二進(jìn)制大型對(duì)象或團(tuán)塊。對(duì)于分區(qū)服務(wù)器,存儲(chǔ)對(duì)象包括正被服務(wù)的各分區(qū)的身份。注意,分區(qū)服務(wù)器的存儲(chǔ)對(duì)象通常不包含與該分區(qū)相對(duì)應(yīng)的底層數(shù)據(jù)。通過(guò)僅存儲(chǔ)分區(qū)身份而將底層數(shù)據(jù)留在分開(kāi)的數(shù)據(jù)存儲(chǔ)位置,可以用最小的數(shù)據(jù)轉(zhuǎn)移將各分區(qū)從一個(gè)服務(wù)器移動(dòng)到另一服務(wù)器。對(duì)于分區(qū)主機(jī),該存儲(chǔ)對(duì)象包括用于建立分區(qū)主機(jī)的特定實(shí)例是活躍實(shí)例的信息。存儲(chǔ)對(duì)象可任選地還包括關(guān)于正由該主機(jī)來(lái)管理的服務(wù)器的所有存儲(chǔ)對(duì)象的信息。在操作期間,主機(jī)和服務(wù)器角色可維護(hù)對(duì)相應(yīng)存儲(chǔ)對(duì)象的租用。當(dāng)某角色的對(duì)存儲(chǔ)對(duì)象的租用被中斷時(shí),相應(yīng)的角色可被終止。
[0029]如上所述,給定類型的角色的分區(qū)主機(jī)優(yōu)選是冗余的,使得如果發(fā)生故障,則至少一個(gè)附加分區(qū)主機(jī)可用?!懊钇?dictator)”被定義成當(dāng)前執(zhí)行給定類型的角色的分區(qū)主機(jī)功能的分區(qū)主機(jī)。命令器是維護(hù)對(duì)與給定分區(qū)主機(jī)角色相關(guān)聯(lián)的存儲(chǔ)對(duì)象的租用的分區(qū)主機(jī)。
[0030]活躍分區(qū)主機(jī)(命令器)可經(jīng)由心跳與分區(qū)服務(wù)器通信?;拘奶念愋蜑椤氨;睢?,并且總被使用。如上所述,應(yīng)用定義的接口可用于向這個(gè)心跳信息添加可任選的命令和/或信息。
[0031]命名空間、密鑰和分區(qū)
[0032]在各個(gè)實(shí)施例中,提供使得用戶或應(yīng)用可定義被自動(dòng)分區(qū)以供在分布式計(jì)算環(huán)境中處理的計(jì)算的通用分區(qū)框架。為了利用該通用分區(qū)框架,用戶可基于命名空間來(lái)定義計(jì)算。命名空間對(duì)應(yīng)于可任選地對(duì)與命名空間相關(guān)聯(lián)的數(shù)據(jù)執(zhí)行的一個(gè)或多個(gè)計(jì)算或運(yùn)算。用戶定義的命名空間可具有如上所述的某些性質(zhì)。只要命名空間具有必要的特征,通用分區(qū)框架將能夠基于這些應(yīng)用定義的接口來(lái)自動(dòng)對(duì)該命名空間進(jìn)行分區(qū)。該分區(qū)是僅使用該用戶定義的命名空間及與該分區(qū)系統(tǒng)一起提供的固定接口來(lái)完成的。通過(guò)僅使用通用分區(qū)系統(tǒng)的固定接口來(lái)對(duì)命名空間進(jìn)行分區(qū),將這種分區(qū)從由用戶提供的任何應(yīng)用定義的接口中解耦出來(lái),并從正在執(zhí)行的計(jì)算的本性中解耦出來(lái)。
[0033]作業(yè)的命名空間或域可對(duì)應(yīng)于針對(duì)將通過(guò)計(jì)算被操作和/或生成的一種類型的數(shù)據(jù)的整個(gè)范圍的一組標(biāo)識(shí)符。另外地或可替換地,命名空間或域可對(duì)應(yīng)于可通過(guò)該計(jì)算被操作和/或生成的可能狀態(tài)的列表或范圍。又一選項(xiàng)是命名空間可對(duì)應(yīng)于針對(duì)正在分布式環(huán)境中執(zhí)行的計(jì)算的多個(gè)實(shí)例的一組標(biāo)識(shí)符。計(jì)算的所有潛在命名空間或域都被標(biāo)識(shí)出并不是必要的。相反,用戶可標(biāo)識(shí)出將用于進(jìn)行分區(qū)的那些命名空間或狀態(tài)。標(biāo)識(shí)出的命名空間或域應(yīng)跨越用戶將期望使用給定角色來(lái)執(zhí)行的計(jì)算的整體。這些計(jì)算的整體可通過(guò)跨越通過(guò)計(jì)算對(duì)其操作的數(shù)據(jù)集的整體、跨越該計(jì)算內(nèi)的運(yùn)算實(shí)例的整體、或以任何其他方便的方式來(lái)跨越。密鑰可用于指定命名空間內(nèi)的離散值或狀態(tài)。密鑰還可用于指定值的范圍。由于密鑰可用于指定范圍,應(yīng)理解,命名空間應(yīng)包括某一類型的串行排序,以使得指定上限密鑰和下限密鑰將唯一地標(biāo)識(shí)一范圍。該排序可基于常規(guī)排序,諸如基于字母的排序。可替換地,該排序可以是任意的,諸如基于將值的列表包含在命名空間內(nèi)的文件的串行次序。
[0034]除了定義命名空間(包括使用那個(gè)命名空間執(zhí)行的任何計(jì)算)夕卜,用戶還可提供與服務(wù)器角色相關(guān)聯(lián)的一個(gè)或多個(gè)應(yīng)用定義的接口。應(yīng)用定義的接口表示分區(qū)服務(wù)器可執(zhí)行的一個(gè)或多個(gè)任務(wù)或功能,這些任務(wù)或功能可任選地涉及一個(gè)或多個(gè)命名空間。服務(wù)器角色的應(yīng)用定義的接口可包括在給定命名空間上執(zhí)行的所有任務(wù)或功能,以使得不同的服務(wù)器角色不會(huì)嘗試訪問(wèn)相同的數(shù)據(jù)或狀態(tài)??扇芜x地,構(gòu)想了:在一示例性方面,服務(wù)器角色還可包括子角色,以使得角色內(nèi)的一些應(yīng)用定義的接口與同一角色內(nèi)的其他應(yīng)用定義的接口相比在不同的命名空間上操作。在簡(jiǎn)單示例中,客戶機(jī)可能期望執(zhí)行涉及對(duì)數(shù)據(jù)集執(zhí)行至少一種類型的運(yùn)算的計(jì)算。在這種情況下,客戶機(jī)可定義服務(wù)器的對(duì)該數(shù)據(jù)集中的被請(qǐng)求元素執(zhí)行至少一種類型的運(yùn)算的單個(gè)角色。該單個(gè)角色可表示與被配置成執(zhí)行科學(xué)運(yùn)算、對(duì)數(shù)據(jù)集執(zhí)行一個(gè)或多個(gè)相關(guān)的數(shù)據(jù)挖掘函數(shù)、或執(zhí)行任何其他方便的計(jì)算的角色實(shí)例相對(duì)應(yīng)的一個(gè)或多個(gè)服務(wù)器。該計(jì)算和任何相關(guān)數(shù)據(jù)可被定義成用于執(zhí)行該計(jì)算的命名空間的定義的一部分。此外,可為服務(wù)器角色提供一個(gè)或多個(gè)應(yīng)用定義的接口,諸如用于向主機(jī)角色實(shí)例提供關(guān)于該計(jì)算的度量的應(yīng)用定義的接口。服務(wù)器角色實(shí)例可基于向該服務(wù)器傳遞的密鑰值來(lái)確定要對(duì)其進(jìn)行操作的數(shù)據(jù)集的一個(gè)或多個(gè)元素。至少一個(gè)附加主機(jī)角色可管理這些服務(wù)器,包括向一個(gè)或多個(gè)服務(wù)器分派數(shù)據(jù)集分區(qū)。
[0035]基于命名空間,計(jì)算可被分區(qū),以使得多個(gè)分區(qū)服務(wù)器處理或執(zhí)行該命名空間的不同處理部分。每一分區(qū)對(duì)應(yīng)于某一范圍的密鑰值。當(dāng)分區(qū)被分派給分區(qū)服務(wù)器時(shí),該服務(wù)器執(zhí)行包含處于與所分派的分區(qū)相對(duì)應(yīng)的范圍內(nèi)的密鑰值的任何請(qǐng)求所期望的計(jì)算。分派給該服務(wù)器的分區(qū)不需要相對(duì)于命名空間的串行排序是連續(xù)的。
[0036]在通用分區(qū)環(huán)境中,分區(qū)表可用于跟蹤各分區(qū)到各分區(qū)服務(wù)器的當(dāng)前分派。當(dāng)活躍主機(jī)或命令器向服務(wù)器分派分區(qū)時(shí),可首先更新分區(qū)表以反映該分派。分區(qū)表可隨后用于基于客戶機(jī)請(qǐng)求中指定的密鑰來(lái)確定將處理該客戶機(jī)請(qǐng)求的分區(qū)服務(wù)器??扇芜x地,一個(gè)分區(qū)表可用于跟蹤針對(duì)多個(gè)角色的分區(qū)分派,這與被分區(qū)的每一命名空間具有不同的分區(qū)表相反。作為示例,分區(qū)表中的條目可包括范圍的低密鑰、范圍的高密鑰以及將對(duì)與所請(qǐng)求的密鑰相對(duì)應(yīng)的數(shù)據(jù)或狀態(tài)執(zhí)行所請(qǐng)求的任務(wù)的角色實(shí)例或服務(wù)器實(shí)例。分區(qū)表還可包括其他數(shù)據(jù),諸如時(shí)期號(hào)或版本號(hào),如何以下更詳細(xì)討論的。
[0037]管理主機(jī)和服務(wù)器角色實(shí)例
[0038]在執(zhí)行作業(yè)時(shí),通常期望具有若干主機(jī)角色實(shí)例來(lái)提供冗余。然而,為了避免沖突,在給定時(shí)間僅一個(gè)主機(jī)角色實(shí)例可以是活躍主機(jī)。當(dāng)存在多個(gè)主機(jī)角色實(shí)例時(shí),這些主機(jī)角色實(shí)例將為了獲得對(duì)與整個(gè)命名空間相對(duì)應(yīng)的存儲(chǔ)對(duì)象的租用而競(jìng)爭(zhēng)。被授予該租用的主機(jī)角色實(shí)例變成活躍主機(jī)或命令器。此外主機(jī)時(shí)期號(hào)被存儲(chǔ)在針對(duì)該主機(jī)角色實(shí)例的存儲(chǔ)對(duì)象中。當(dāng)主機(jī)變成命令器時(shí),它遞增該號(hào)碼,將該號(hào)碼寫(xiě)回主機(jī)角色存儲(chǔ)對(duì)象,并隨后使用該時(shí)期號(hào)來(lái)與相應(yīng)的分區(qū)服務(wù)器進(jìn)行通信。活躍主機(jī)實(shí)例或命令器還可獲得對(duì)該分區(qū)表或該分區(qū)表的至少一部分的租用。分區(qū)服務(wù)器將忽略具有比已經(jīng)看見(jiàn)的最高時(shí)期小的主機(jī)時(shí)期的心跳,由此避免來(lái)自不再是命令器的主機(jī)角色的陳舊心跳。
[0039]一個(gè)選項(xiàng)是使用分開(kāi)的命令器資格庫(kù)來(lái)經(jīng)由存儲(chǔ)對(duì)象租用實(shí)現(xiàn)命令器資格。具有分開(kāi)的命令器資格庫(kù)可提供若干優(yōu)點(diǎn),諸如允許在分區(qū)系統(tǒng)外部的角色實(shí)現(xiàn)冗余。這允許不涉及進(jìn)行分區(qū)的角色使用相同的用于選擇活躍主機(jī)角色的方法。
[0040]每一服務(wù)器維護(hù)對(duì)其自己的存儲(chǔ)對(duì)象的租用。服務(wù)器存儲(chǔ)對(duì)象名稱一般在每次服務(wù)器接收到其首個(gè)分區(qū)分派時(shí)由主機(jī)生成。每一服務(wù)器還將其自己的當(dāng)前分區(qū)分派(包括時(shí)期號(hào)的分區(qū)列表)存儲(chǔ)在存儲(chǔ)對(duì)象中。第三方可有力地終止服務(wù)器及其存儲(chǔ)對(duì)象之間的租用。該功能性可被分區(qū)主機(jī)命令器用來(lái)以分區(qū)分派協(xié)議來(lái)中斷服務(wù)器租用。
[0041]當(dāng)具有主機(jī)角色的冗余實(shí)例在故障事件發(fā)生時(shí)允許改善的性能時(shí),冗余實(shí)例還可潛在地由于陳舊更新而導(dǎo)致問(wèn)題。陳舊更新指的是來(lái)自在先命令器的消息或指令在新命令器已被選擇后被服務(wù)器或數(shù)據(jù)存儲(chǔ)接收到的情況。陳舊更新的問(wèn)題可影響在外部存儲(chǔ)中維護(hù)狀態(tài)的任何角色或代碼段,其中到外部存儲(chǔ)的消息可(例如,通過(guò)因特網(wǎng))被延遲或重新排序,并該狀態(tài)在該角色的故障轉(zhuǎn)移之際從該存儲(chǔ)讀出。
[0042]作為示例,考慮分區(qū)主機(jī)(命令器)在更新針對(duì)該角色的分區(qū)表的過(guò)程中故障轉(zhuǎn)移的情況。首先,舊主機(jī)發(fā)起對(duì)分區(qū)表第“X”行的更新。舊主機(jī)隨后停止工作。該主機(jī)的冗余實(shí)例被選為新命令器。該新活躍主機(jī)使用分區(qū)表的第“X”行來(lái)更新、讀取或以其他方式執(zhí)行動(dòng)作。隨后,來(lái)自舊主機(jī)的更新在由新活躍主機(jī)執(zhí)行的對(duì)第“X”行的動(dòng)作之后通過(guò)。如果來(lái)自舊主機(jī)的更新被合并在分區(qū)表中,則該更新將導(dǎo)致該分區(qū)表改變,而無(wú)需新(當(dāng)前)主機(jī)知曉該改變。這可導(dǎo)致分區(qū)表的非一致?tīng)顟B(tài)。
[0043]在以上示例中,該問(wèn)題的一種解決方案是以某種方式阻擋來(lái)自舊主機(jī)的陳舊更新。一個(gè)選項(xiàng)是還允許分區(qū)主機(jī)獲得對(duì)該分區(qū)表的各部分的租用。對(duì)主機(jī)的租用可對(duì)應(yīng)于與給定命名空間相對(duì)應(yīng)的表中所有分區(qū)。可使用用于指定租用范圍的任何常規(guī)方法。例如,如果期望的話,租用可僅跨越分區(qū)的一部分和/或可跨越多個(gè)分區(qū)。當(dāng)新命令器被選擇時(shí),主機(jī)仍將為了經(jīng)由租用獲得命令器資格而競(jìng)爭(zhēng),其中時(shí)期號(hào)被提供,以使得各服務(wù)器可阻擋陳舊更新,諸如陳舊的心跳消息。此外,主機(jī)命令器還可在構(gòu)建分區(qū)表的狀態(tài)時(shí)讀該表之前獲得對(duì)該分區(qū)表(該分區(qū)表的相關(guān)部分)的租用。
[0044]更一般地,主機(jī)和服務(wù)器兩者都可使用該租用機(jī)制通過(guò)在該主機(jī)或服務(wù)器被分派來(lái)處理數(shù)據(jù)結(jié)構(gòu)時(shí)獲得對(duì)團(tuán)塊、表格和/或其他數(shù)據(jù)結(jié)構(gòu)的租用來(lái)避免陳舊更新。當(dāng)該主機(jī)或服務(wù)器諸如由于故障轉(zhuǎn)移或主機(jī)改變分派的顯式請(qǐng)求而不再被分派到數(shù)據(jù)結(jié)構(gòu)時(shí),該租用被釋放。
[0045]對(duì)于主機(jī)和服務(wù)器之間的通信而言陳舊更新也是令人關(guān)注的問(wèn)題。處理來(lái)自舊主機(jī)的消息可例如通過(guò)使主機(jī)在其變成命令器時(shí)獲得時(shí)期號(hào)來(lái)避免。該時(shí)期號(hào)在每次命令器資格故障轉(zhuǎn)移時(shí)增加。該時(shí)期號(hào)可在每個(gè)服務(wù)器心跳和/或其他消息上從主機(jī)傳送到服務(wù)器。服務(wù)器可忽略具有比該服務(wù)器看見(jiàn)的最高時(shí)期號(hào)更低的時(shí)期號(hào)的任何心跳。這個(gè)高水印時(shí)期號(hào)可以以該服務(wù)器的軟狀態(tài)來(lái)存儲(chǔ)。如果主機(jī)和服務(wù)器也正經(jīng)由存儲(chǔ)對(duì)象租用傳達(dá)狀態(tài),則以上方法可能足以避免陳舊消息問(wèn)題。可替換地,也可使用用于避免主機(jī)和服務(wù)器之間的陳丨H消息的其他常規(guī)解決方案。
[0046]類似的時(shí)期號(hào)方法可被用于每一范圍分區(qū),以避免來(lái)自先前分派的服務(wù)器的陳舊更新。例如,每一分區(qū)可具有由主機(jī)在該分區(qū)發(fā)生改變時(shí)更新的當(dāng)前時(shí)期號(hào)。分區(qū)改變的示例包括將分區(qū)分派給新服務(wù)器、拆分分區(qū)及合并兩個(gè)分區(qū)。將分區(qū)分派給新服務(wù)器可導(dǎo)致時(shí)期號(hào)增加I。將分區(qū)拆分成兩個(gè)或更多個(gè)新分區(qū)可導(dǎo)致每一子分區(qū)接收遞增了 I的父分區(qū)號(hào)。當(dāng)合并兩個(gè)分區(qū)時(shí),經(jīng)合并分區(qū)的時(shí)期號(hào)可以是在合并之前這些分區(qū)中的任何一個(gè)的最大時(shí)期號(hào)遞增I??商鎿Q地,也可以使用用于跟蹤分區(qū)的時(shí)期號(hào)的遞增的任何其他常規(guī)方法。
[0047]作為可如何使用分區(qū)時(shí)期號(hào)的示例,考慮具有分區(qū)主機(jī)、兩個(gè)分區(qū)服務(wù)器SI和S2及第三服務(wù)器X的系統(tǒng)。第三服務(wù)器X可以是例如包含由分區(qū)主機(jī)和服務(wù)器SI和S2操作的命名空間的實(shí)際數(shù)據(jù)集的數(shù)據(jù)服務(wù)器。服務(wù)器SI和S2發(fā)出給X的命令(或其他消息)。假定消息可以諸如由于前端對(duì)X的處理而在從SI或S2到X的路上被延遲。除非X保持為給定范圍分區(qū)跟蹤所看見(jiàn)的最高時(shí)期,否則容易明白陳舊消息可如何被X接受。例如,具有時(shí)期3的分區(qū)P最初由服務(wù)器SI來(lái)服務(wù)。SI可向X發(fā)送消息Ml。消息Ml包含對(duì)應(yīng)于分區(qū)P的密鑰以及時(shí)期號(hào)3。分區(qū)主機(jī)隨后將分區(qū)P從SI移動(dòng)到S2。在分派后,S2將包括新時(shí)期號(hào)的消息M2發(fā)送給服務(wù)器X。X在接收消息Ml之前先接收消息M2。這使Ml變得陳舊。X隨后接收陳舊消息Ml。通過(guò)跟蹤時(shí)期號(hào),服務(wù)器X可認(rèn)識(shí)到陳舊消息Ml來(lái)自不再負(fù)責(zé)分區(qū)P的服務(wù)器。
[0048]為了進(jìn)一步避免陳舊更新的可能性,可使用時(shí)期驗(yàn)證庫(kù)。時(shí)期驗(yàn)證庫(kù)驗(yàn)證接收的消息不是陳舊的。例如,當(dāng)服務(wù)器從新命令器接收消息時(shí)或接收關(guān)于新分區(qū)范圍的請(qǐng)求時(shí),該服務(wù)器可檢查時(shí)期驗(yàn)證庫(kù)以驗(yàn)證該消息包含該主機(jī)或分區(qū)的當(dāng)前時(shí)期號(hào)。
[0049]圖4示出了角色、分區(qū)和密鑰之前的關(guān)系的示意圖。在圖4中,用戶405提交對(duì)期望數(shù)據(jù)片段執(zhí)行動(dòng)作(諸如,訪問(wèn)用戶賬戶中的信息)的請(qǐng)求。該數(shù)據(jù)通過(guò)密鑰來(lái)標(biāo)識(shí)??蛻魴C(jī)請(qǐng)求和密鑰被傳遞至處理客戶機(jī)或用戶405所作出的這種類型的請(qǐng)求的角色420。角色420包括定義該角色如何處理給定類型的請(qǐng)求的客戶機(jī)庫(kù)430?;谡?qǐng)求的類型和密鑰,角色420咨詢分區(qū)表455來(lái)尋找處理與該請(qǐng)求中的密鑰相對(duì)應(yīng)的密鑰范圍的當(dāng)前服務(wù)器。分區(qū)表455中的信息是基于由分區(qū)主機(jī)460作出的分區(qū)判決來(lái)填充的。分區(qū)主機(jī)460在圖4中被示為多個(gè)潛在分區(qū)主機(jī)之一。附加的潛在分區(qū)主機(jī)用于冗余目的,并且在被需要前不是活躍的。在圖4的示例中,多個(gè)分區(qū)服務(wù)器465可用作用于執(zhí)行從角色420請(qǐng)求的任務(wù)的角色實(shí)例。基于分區(qū)表455,多個(gè)分區(qū)服務(wù)器465中的分區(qū)服務(wù)器N正在處理與客戶機(jī)請(qǐng)求中的密鑰相對(duì)應(yīng)的密鑰范圍。
[0050]通用分區(qū)框架示例
[0051]圖5示出根據(jù)本發(fā)明的用于提供通用分區(qū)框架的模塊和/或接口群組的示例。圖5還顯示了可利用通用分區(qū)環(huán)境的、用于提供計(jì)算作業(yè)的應(yīng)用定義的接口的示例。在圖5中,雖然密鑰或命名空間是由用戶或應(yīng)用提供的,但用于對(duì)命名空間進(jìn)行分區(qū)的接口是由分區(qū)系統(tǒng)提供的固定接口。這將對(duì)命名空間進(jìn)行分區(qū)從執(zhí)行對(duì)與命名空間相對(duì)應(yīng)的數(shù)據(jù)進(jìn)行操作的作業(yè)或工作項(xiàng)中解耦出來(lái)。
[0052]在圖5中,存在由用戶提供或指定的至少兩種類型的組件或接口。用戶提供對(duì)密鑰510(和相應(yīng)的命名空間)的定義以及用于應(yīng)用的多個(gè)服務(wù)器接口 520。如上所述,密鑰描述了應(yīng)用的命名空間。這允許分區(qū)系統(tǒng)知道用于潛在分區(qū)的變量、狀態(tài)和/或計(jì)算的范圍。除了定義密鑰外,用戶還提供與該密鑰相關(guān)的至少三個(gè)接口。與該密鑰510有關(guān)的接口提供串行化命名空間中的各密鑰、取消密鑰的串行化以及比較兩個(gè)密鑰的功能。由于用戶選擇命名空間和密鑰值,這些接口的操作不是作為分區(qū)系統(tǒng)的固定接口來(lái)提供的。與密鑰和命名空間有關(guān)的接口改為被用戶作為應(yīng)用定義的接口來(lái)提供。
[0053]用戶還提供由服務(wù)器角色實(shí)例使用的應(yīng)用定義的接口 520。服務(wù)器角色實(shí)例520的應(yīng)用定義的接口包括關(guān)于在服務(wù)器接收對(duì)密鑰進(jìn)行操作的請(qǐng)求時(shí)服務(wù)器將執(zhí)行哪些操作的功能。例如,針對(duì)開(kāi)始服務(wù)密鑰范圍(StartServeKeyRange)的接口可定義在服務(wù)器開(kāi)始服務(wù)于給定密鑰范圍時(shí)該服務(wù)器可執(zhí)行的一個(gè)或多個(gè)操作。針對(duì)停止服務(wù)密鑰范圍(Stop ServeKeyRange)的相應(yīng)接口可允許服務(wù)器以有序方式終止服務(wù)于某密鑰范圍。此外,可能期望從服務(wù)器收集信息。諸如在接收到心跳請(qǐng)求時(shí)(OnReceivedHeartbeatRequest)之類的接口可定義服務(wù)器將如何從接收自當(dāng)前分區(qū)主機(jī)的心跳消息中提取附加信息。諸如在發(fā)送心跳響應(yīng)之前(BeforeSendingHeartbeatResponse)之類的另一接口可定義服務(wù)器將把什么作為附加信息包括在對(duì)心跳消息的響應(yīng)中。這可允許例如服務(wù)器將負(fù)載信息傳達(dá)給分區(qū)主機(jī)以供在負(fù)載平衡時(shí)使用。
[0054]如果用戶將附加功能或信息作為心跳(或其他消息)交換的一部分來(lái)包括,則該用戶還可提供針對(duì)主機(jī)角色530的用戶定義的接口。針對(duì)主機(jī)角色530的用戶定義接口是針對(duì)主機(jī)角色的固定接口的補(bǔ)充,示意性地示為GP主機(jī)535。針對(duì)主機(jī)角色530的用戶定義的接口并不是必需的。
[0055]在圖5中示出的實(shí)施例中,通用分區(qū)環(huán)境由固定分區(qū)系統(tǒng)接口的五個(gè)模塊和/或分組來(lái)啟用。這些模塊和/或分組包括被示為GP客戶機(jī)(GPClient)模塊515、GP服務(wù)器(GPServer)模塊 525、GP 主機(jī)(GPMaster)模塊 535、GP 命令器(GPDirector)模塊 536 和GP租用(GPLease)模塊545的一部分的固定接口。當(dāng)然,還可以使用安置圖5中示出的這些模塊、接口和/功能的其他方式。
[0056]圖5中示出的GP客戶機(jī)模塊515具有允許從客戶機(jī)應(yīng)用或用戶599指定的密鑰到將處理用戶請(qǐng)求的服務(wù)器的地址的轉(zhuǎn)換的接口。GP客戶機(jī)模塊515的接口通過(guò)質(zhì)詢分區(qū)圖或分區(qū)表559來(lái)執(zhí)行這一查找。GP客戶機(jī)模塊接口可隨后例如向客戶機(jī)應(yīng)用599返回與密鑰相對(duì)應(yīng)的服務(wù)器地址,以使得客戶機(jī)應(yīng)用可將請(qǐng)求導(dǎo)向正確的服務(wù)器。
[0057]GP服務(wù)器模塊525具有與應(yīng)用定義的接口 520結(jié)合用于執(zhí)行所需用戶任務(wù)的接口。GP服務(wù)器模塊525包括用于在主機(jī)角色實(shí)例和服務(wù)器角色實(shí)例之間的通信的接口。GP服務(wù)器模塊接口也與GP租用模塊545的接口通信以管理租用對(duì)象并租用與每一服務(wù)器角色實(shí)例相關(guān)聯(lián)的內(nèi)容。
[0058]GP主機(jī)模塊535為核心功能提供用于管理主機(jī)角色實(shí)例的接口。GP主機(jī)模塊535的接口處理命令器在各主機(jī)角色實(shí)例中的選擇、命令器和服務(wù)器角色實(shí)例之間(諸如經(jīng)由心跳消息)的通信以及分區(qū)管理。分區(qū)管理可包括向分區(qū)表559提供更新。對(duì)于負(fù)載平衡,GP主機(jī)模塊535的接口可使用內(nèi)部算法來(lái)執(zhí)行負(fù)載平衡,或者GP主機(jī)模塊可接收由用戶作為應(yīng)用定義的接口來(lái)提供的替換負(fù)載平衡表達(dá)560??扇芜x地,由GP主機(jī)模塊535處理的消息收發(fā)功能可通過(guò)一個(gè)或多個(gè)分開(kāi)的消息收發(fā)接口來(lái)執(zhí)行。
[0059]GP命令器模塊536提供處理與將用作命令器的主機(jī)角色實(shí)例有關(guān)的功能的接口。GP命令器接口可處理:主機(jī)角色實(shí)例(諸如在由GP主機(jī)模塊535進(jìn)行的選擇中贏得命令器資格后)要求命令器資格、主機(jī)角色實(shí)例(諸如在故障轉(zhuǎn)移后)釋放命令器資格、以及主機(jī)角色實(shí)例處理順序或時(shí)期號(hào)的改變以便避免陳舊更新。
[0060]GP租用模塊545提供管理通用分區(qū)環(huán)境中的租用的接口。這可包括允許主機(jī)或服務(wù)器獲得對(duì)相關(guān)聯(lián)的存儲(chǔ)對(duì)象、對(duì)分區(qū)、或?qū)色@得租用的任何其他類型的數(shù)據(jù)結(jié)構(gòu)的租用。
[0061 ] 基本主機(jī)/服務(wù)器管理協(xié)議
[0062]分區(qū)主機(jī)可與分區(qū)服務(wù)器進(jìn)行通信的一種方式是經(jīng)由規(guī)律發(fā)送的?;?“查驗(yàn)(ping)”)心跳。該心跳可被發(fā)送給所有服務(wù)器,包括不服務(wù)于任何分區(qū)的服務(wù)器。服務(wù)器可以用服務(wù)器當(dāng)前服務(wù)于的分區(qū)的列表來(lái)對(duì)該?;钚奶?或其他類型的心跳消息)作出響應(yīng)。心跳響應(yīng)可以與服務(wù)器分區(qū)租用結(jié)合用于允許主機(jī)驗(yàn)證服務(wù)器正服務(wù)于正確的分區(qū)。當(dāng)服務(wù)器服務(wù)于一個(gè)或多個(gè)分區(qū)時(shí),該服務(wù)器還維持對(duì)其自己的私有存儲(chǔ)對(duì)象(諸如,二進(jìn)制對(duì)象或團(tuán)塊)的租用。當(dāng)服務(wù)器啟動(dòng)時(shí),它不保持任何租用——該服務(wù)器將僅在初始分區(qū)分派之際才保持租用。存儲(chǔ)對(duì)象租用還應(yīng)包括由服務(wù)器服務(wù)的分區(qū)的列表。如果心跳響應(yīng)或存儲(chǔ)對(duì)象租用中的信息與主機(jī)預(yù)期的分區(qū)信息不同,則出現(xiàn)分區(qū)信息中的沖突。
[0063]如果在主機(jī)和服務(wù)器之間發(fā)生關(guān)于正被服務(wù)的分區(qū)的沖突,并且如果服務(wù)器正嘗試服務(wù)于一個(gè)或多個(gè)分區(qū),則該沖突被認(rèn)為是致命錯(cuò)誤。作為示例,主機(jī)可認(rèn)為服務(wù)器正服務(wù)于Pl和P2,而服務(wù)器向P2、P4和P5報(bào)告。在這種情形下,主機(jī)將中斷服務(wù)器對(duì)相應(yīng)的分區(qū)服務(wù)器團(tuán)塊的租用。主機(jī)隨后將發(fā)出警報(bào),并重構(gòu)分區(qū)表的適當(dāng)狀態(tài)。這可涉及終止主機(jī),以使得適當(dāng)狀態(tài)在重啟該主機(jī)后被重構(gòu)。
[0064]當(dāng)主機(jī)和服務(wù)器不同并且服務(wù)器報(bào)告沒(méi)有分區(qū)被服務(wù)時(shí)也有沖突。然而,這不被認(rèn)為是致命錯(cuò)誤。這可在例如服務(wù)器在兩次心跳之間進(jìn)行了故障轉(zhuǎn)移的情況下,或者在服務(wù)器在一次或多次心跳期間停機(jī)同時(shí)仍“保持”該租用并且隨后該服務(wù)器重啟并對(duì)下一心跳作出響應(yīng)的情況下發(fā)生。當(dāng)發(fā)生關(guān)于服務(wù)器報(bào)告沒(méi)有分區(qū)被服務(wù)的沖突時(shí),分區(qū)主機(jī)可嘗試刪除服務(wù)器的存儲(chǔ)對(duì)象。如果成功,則任何分區(qū)可被重新分派給其他可用服務(wù)器。然而,如果對(duì)服務(wù)器的先前實(shí)例的租用尚未期滿,則刪除對(duì)服務(wù)器的存儲(chǔ)對(duì)象的租用可能失敗。因此,重試該刪除達(dá)租用時(shí)段可能是必要的。在一個(gè)租用時(shí)段后未能刪除存儲(chǔ)對(duì)象是致命錯(cuò)誤,該致命錯(cuò)誤可被如上所述的那樣處理。在主機(jī)重啟時(shí),它將在繼續(xù)分區(qū)分派之前確保所有未知存儲(chǔ)對(duì)象被刪除。
[0065]另一潛在的失敗情形是當(dāng)服務(wù)器保持租用,但該服務(wù)器在某一超時(shí)時(shí)段內(nèi)沒(méi)有對(duì)心跳(諸如,保活)作出響應(yīng)。再次,主機(jī)可嘗試刪除服務(wù)器的存儲(chǔ)對(duì)象以解決該沖突。如果存儲(chǔ)對(duì)象被成功刪除,則該服務(wù)器不再發(fā)揮作用。該服務(wù)器服務(wù)于的任何分區(qū)可被重新分派給其他服務(wù)器。如果存儲(chǔ)對(duì)象無(wú)法被刪除,則主機(jī)可讀取存儲(chǔ)對(duì)象內(nèi)容以檢查主機(jī)和服務(wù)器之間關(guān)于分區(qū)分派的沖突。如果不存在沖突,則服務(wù)器可繼續(xù)服務(wù),并且主機(jī)可嘗試立刻經(jīng)由正常的心跳處理來(lái)再次“查驗(yàn)”服務(wù)器。優(yōu)選地,存在主機(jī)中斷服務(wù)器對(duì)存儲(chǔ)對(duì)象的租用之前該主機(jī)多久無(wú)法經(jīng)由心跳與服務(wù)器進(jìn)行通信的限制。如果檢測(cè)到?jīng)_突,則可如上所述的那樣處理該沖突。
[0066]對(duì)于分區(qū)分派,主機(jī)將該心跳上的分區(qū)分派請(qǐng)求馱運(yùn)(piggy-back)至相關(guān)的分區(qū)服務(wù)器(在該情況下,心跳被加速)。分區(qū)分派請(qǐng)求由服務(wù)器存儲(chǔ)對(duì)象名稱以及要被服務(wù)的分區(qū)的全新列表組成。例如,為了將分區(qū)P2分派給當(dāng)前服務(wù)于Pl的服務(wù)器,該分區(qū)分派由Pl和P2兩者組成。這使得解除分派與分派互不相關(guān):將Pl從服務(wù)于Pl和P2的服務(wù)器處移除,只發(fā)送僅由P2組成的分派。在分區(qū)分派發(fā)生時(shí),主機(jī)已經(jīng)更新了分區(qū)表。分區(qū)表僅在分區(qū)被分派給服務(wù)器時(shí)(之前)被更新;在分區(qū)從服務(wù)器處移除時(shí),不需要更新。
[0067]分區(qū)服務(wù)器維持在第一分區(qū)被分派給該服務(wù)器時(shí)開(kāi)始的存儲(chǔ)對(duì)象租用。存儲(chǔ)對(duì)象租用被維持,直到服務(wù)器不再工作或主機(jī)諸如由于在分區(qū)表中的服務(wù)器的分派信息和服務(wù)器向主機(jī)報(bào)告的分派信息之間的沖突而迫使該租用中斷。存儲(chǔ)對(duì)象名稱與分區(qū)分派一起被傳遞。所有后續(xù)分區(qū)分派將包含同一存儲(chǔ)對(duì)象名稱。當(dāng)服務(wù)器接收分區(qū)分派時(shí),沒(méi)有現(xiàn)有存儲(chǔ)對(duì)象名稱的服務(wù)器將獲得在分區(qū)分派中提供的存儲(chǔ)對(duì)象名稱。如果服務(wù)器已經(jīng)有具有名稱的存儲(chǔ)對(duì)象,則服務(wù)器可將請(qǐng)求中提供的名稱與現(xiàn)有名稱進(jìn)行比較。如果這些名稱不同,則服務(wù)器可發(fā)出警報(bào)并終止,因?yàn)椴煌拿Q指示分區(qū)分派信息中的沖突。在接收到分區(qū)分派后,服務(wù)器可將任何相關(guān)聯(lián)的信息寫(xiě)入用于該服務(wù)器的存儲(chǔ)對(duì)象。相關(guān)聯(lián)的信息可包括例如要服務(wù)的密鑰范圍、命令器的時(shí)期號(hào)、和/或分區(qū)的時(shí)期號(hào)。服務(wù)器可隨后對(duì)提供該分區(qū)分派的主機(jī)作出響應(yīng)、開(kāi)始服務(wù)于任何新分區(qū)、并停止服務(wù)于任何移除的分區(qū)。
[0068]在分區(qū)分派之后,主機(jī)角色實(shí)例將預(yù)期來(lái)自服務(wù)器的確認(rèn)該分派的響應(yīng)。如果該響應(yīng)不匹配該分派,或者如果該響應(yīng)被延遲,則主機(jī)角色實(shí)例可終止對(duì)該服務(wù)器的租用。可替換地,主機(jī)角色實(shí)例可調(diào)查服務(wù)器的團(tuán)塊,以確定服務(wù)器狀態(tài)。例如,如果服務(wù)器的存儲(chǔ)對(duì)象指示該分派已成功,并且如果該響應(yīng)只是被延遲或丟失而不是不正確,則該主機(jī)角色實(shí)例可等待以查看該服務(wù)器是否正確地對(duì)后續(xù)心跳或其他消息作出響應(yīng)。如果發(fā)現(xiàn)了錯(cuò)誤并且主機(jī)無(wú)法中斷對(duì)該服務(wù)器的存儲(chǔ)對(duì)象租用,則主機(jī)可終止以迫使用新主機(jī)角色實(shí)例來(lái)重構(gòu)分區(qū)圖。
[0069]此外,服務(wù)器角色實(shí)例可提供關(guān)于它正服務(wù)于的每一范圍(S卩,分區(qū))的統(tǒng)計(jì)數(shù)據(jù)。該統(tǒng)計(jì)數(shù)據(jù)對(duì)通用分區(qū)系統(tǒng)而言是不透明的,并且可被表示成名稱/值對(duì)的特性包。這些可選統(tǒng)計(jì)數(shù)據(jù)可被合并在負(fù)載平衡公式中,包括由用戶提供的負(fù)載平衡公式。
[0070]當(dāng)主機(jī)變成活躍主機(jī)或命令器時(shí),它首先從它正保持租用的存儲(chǔ)對(duì)象處獲得新時(shí)期號(hào)。它隨后收集三段信息,以便構(gòu)建其對(duì)該系統(tǒng)的視圖,并糾正任何不一致的信息。首先,主機(jī)讀分區(qū)表。該分區(qū)表包含關(guān)于存在哪些分區(qū)的真相。優(yōu)選地,主機(jī)在讀分區(qū)表之前獲得對(duì)分區(qū)表的至少相關(guān)部分的租用,以便防止前主機(jī)作出的陳舊寫(xiě)。接著,主機(jī)獲得所有現(xiàn)有服務(wù)器存儲(chǔ)對(duì)象的列表。這可通過(guò)維護(hù)服務(wù)器存儲(chǔ)對(duì)象列表、通過(guò)要求所有服務(wù)器存儲(chǔ)對(duì)象位于特定位置、或通過(guò)另一常規(guī)方法來(lái)完成。心跳或另一類型的消息也用于就服務(wù)器的當(dāng)前分區(qū)分派向每一服務(wù)器進(jìn)行查詢。該查詢可包括對(duì)服務(wù)器的存儲(chǔ)對(duì)象的名稱的查詢。注意,以上任務(wù)可并行繼續(xù)。
[0071]基于收集到的信息,主機(jī)可標(biāo)識(shí)出分區(qū)表中的分派和由每一服務(wù)器報(bào)告的分派之間的任何不一致。如果存在失配,可采取一個(gè)或多個(gè)糾正動(dòng)作,諸如中斷服務(wù)器對(duì)服務(wù)器對(duì)象的租用并重啟主機(jī)。此外,如果標(biāo)識(shí)出分區(qū)表中未提到的任何服務(wù)器存儲(chǔ)對(duì)象,則可刪除這些存儲(chǔ)對(duì)象。最后,可使分區(qū)表中服務(wù)器未確認(rèn)的任何分派排隊(duì)以供分派給新分區(qū)服務(wù)器。在解決這些沖突后,主機(jī)可啟動(dòng)正常的心跳處理、分派分區(qū)以及任何其他主機(jī)功能。
[0072]負(fù)載平衡
[0073]負(fù)載平衡可被大致劃分成三種活動(dòng)。負(fù)載平衡可包括將分區(qū)從一個(gè)服務(wù)器移動(dòng)到另一服務(wù)器、將一分區(qū)拆分成多個(gè)分區(qū)、或?qū)⒍鄠€(gè)分區(qū)合并成單個(gè)分區(qū)。通常,將分區(qū)分派從第一服務(wù)器改變到第二服務(wù)器將是對(duì)基于一個(gè)或多個(gè)度量第一服務(wù)器具有足夠高的負(fù)載的響應(yīng)。如果單個(gè)分區(qū)考慮大量負(fù)載,則拆分該分區(qū)可用于允許大型負(fù)載在多個(gè)服務(wù)器之間劃分。合并分區(qū)允許具有較低活動(dòng)量的分區(qū)被組合。這減少了跟蹤和維持?jǐn)?shù)據(jù)集的各種分區(qū)所需的開(kāi)銷??扇芜x地,用戶可定義命名空間的分區(qū)數(shù)的上限。用于發(fā)起分區(qū)合并的閾值可被降低成接近該上限的分區(qū)數(shù)。該分區(qū)數(shù)的上限可被動(dòng)態(tài)配置。
[0074]作為確定何時(shí)拆分或移動(dòng)分區(qū)的示例,命名空間的所有分區(qū)可基于負(fù)載來(lái)排序。負(fù)載可指的是與執(zhí)行用于分區(qū)的計(jì)算相關(guān)的一個(gè)或多個(gè)度量。因此,負(fù)載可指的是服務(wù)器或個(gè)體分區(qū)的總CPU用量;用于服務(wù)器或分區(qū)的存儲(chǔ);被整個(gè)服務(wù)器接收到的或針對(duì)單個(gè)分區(qū)的請(qǐng)求的數(shù)目;或指示正被服務(wù)器執(zhí)行的和/或針對(duì)給定分區(qū)的工作量的任何其他方便的值?;谠撠?fù)載,具有比平均分區(qū)負(fù)載的可配置倍數(shù)高的負(fù)載的前N個(gè)分區(qū)可被拆分。N是可動(dòng)態(tài)配置的。例如,它可以是系統(tǒng)中的當(dāng)前分區(qū)數(shù)的函數(shù),諸如基于該當(dāng)前分區(qū)數(shù)的對(duì)數(shù),或者它可以是系統(tǒng)中的最大可允許分區(qū)數(shù)的函數(shù)。另外地或作為替換,每一服務(wù)器的負(fù)載是通過(guò)將服務(wù)器的分區(qū)負(fù)載加在一起來(lái)計(jì)算的。這些服務(wù)器可隨后依據(jù)負(fù)載來(lái)排序,并且具有比平均數(shù)的某個(gè)可配置倍數(shù)大的負(fù)載的前N個(gè)服務(wù)器被選擇來(lái)在服務(wù)器間移動(dòng)分區(qū)。類似地,具有小于平均負(fù)載的負(fù)載的多個(gè)服務(wù)器被選為從較高負(fù)載服務(wù)器處接收分區(qū)。優(yōu)選地,將分區(qū)從第一服務(wù)器移動(dòng)到第二服務(wù)器被執(zhí)行來(lái)將第一服務(wù)器的負(fù)載降低到較接近平均負(fù)載的值,而不會(huì)導(dǎo)致第一服務(wù)器的負(fù)載小于平均負(fù)載。這在所有分區(qū)具有相當(dāng)類似的負(fù)載的情況下較容易完成。如上所述,拆分分區(qū)可用于降低各分區(qū)之間的負(fù)載的差另1J。
[0075]如上所述,分區(qū)的負(fù)載可以從由服務(wù)器角色實(shí)例收集的統(tǒng)計(jì)數(shù)據(jù)中導(dǎo)出。該信息是以規(guī)律間隔諸如經(jīng)由心跳消息被傳遞給主機(jī)角色實(shí)例的。優(yōu)選地,定義負(fù)載統(tǒng)計(jì)數(shù)據(jù),使得負(fù)載度量是可加性的。這允許服務(wù)器的負(fù)載基于將該服務(wù)器上的各個(gè)體分區(qū)的負(fù)載相加來(lái)確定。用于確定分區(qū)和/或服務(wù)器的負(fù)載的一個(gè)或多個(gè)公式可被存儲(chǔ)在分開(kāi)的團(tuán)塊或其他存儲(chǔ)區(qū)域中。用于進(jìn)行分區(qū)的規(guī)則或表達(dá)可以是由通用分區(qū)環(huán)境提供的默認(rèn)規(guī)則,或者用戶可提供規(guī)則和/或表達(dá)。此外,構(gòu)想了表達(dá)還可包括由應(yīng)用使用GP系統(tǒng)提交的一段代碼。
[0076]對(duì)于由用戶提供的負(fù)載平衡規(guī)則和/或表達(dá),用戶可首先標(biāo)識(shí)所需的一個(gè)或多個(gè)度量作為負(fù)載平衡度量。合適度量示例包括CPU用量、網(wǎng)絡(luò)帶寬用量、每時(shí)間段處理的請(qǐng)求數(shù)、或任何其他方便的度量。一些度量可以是一分區(qū)專用的,而其他度量可以對(duì)應(yīng)于分區(qū)服務(wù)器上的所有分區(qū)的值?;谒瓒攘?,用戶隨后在每一服務(wù)器上提供用于收集所需度量的一個(gè)或多個(gè)接口??扇芜x地,可以提供諸如CPU用量或每時(shí)間段的請(qǐng)求數(shù)之類的常見(jiàn)度量作為僅由用戶訪問(wèn)的標(biāo)準(zhǔn)接口。隨后使用消息(諸如,被服務(wù)器用來(lái)向主機(jī)驗(yàn)證服務(wù)器的當(dāng)前狀態(tài)的心跳消息)將收集到的度量從分區(qū)服務(wù)器傳遞到相應(yīng)的主機(jī)。
[0077]對(duì)于用戶標(biāo)識(shí)出的每一度量,可計(jì)算出由通用分區(qū)系統(tǒng)來(lái)識(shí)別的一系列值。作為示例,通用分區(qū)系統(tǒng)可將“維度”識(shí)別為用戶定義的變量。通用分區(qū)系統(tǒng)中的維度可具有預(yù)期格式。該維度可包括分區(qū)度量(Partit1n Metric)的表達(dá),該分區(qū)度量對(duì)應(yīng)于涉及一分區(qū)的度量的值。另一表達(dá)可針對(duì)服務(wù)器度量(Server Metric),該服務(wù)器度量對(duì)應(yīng)于涉及服務(wù)器上的所有分區(qū)的度量的值。又一表達(dá)可針對(duì)定義采取動(dòng)作的情形的度量的條件(Condit1n)值。
[0078]在簡(jiǎn)單情形下,CPU用量可被用戶定義成維度。在這個(gè)示例中,CPU用量維度用于確定服務(wù)器何時(shí)足夠繁忙以致分區(qū)應(yīng)該被移動(dòng)到另一服務(wù)器。在該用戶定義的維度中,虛擬機(jī)上專用于處理對(duì)給定分區(qū)的請(qǐng)求的CPU用量百分比被定義為分區(qū)度量。涉及虛擬機(jī)上的所有分區(qū)的CPU用量百分比之和可被定義為服務(wù)器度量。在這個(gè)示例中,該條件可被定義成大于總CPU用量的80%的服務(wù)器度量用量。當(dāng)這個(gè)條件發(fā)生時(shí),分區(qū)可被移動(dòng)到另一服務(wù)器。要移動(dòng)的分區(qū)是基于分區(qū)度量來(lái)選擇的。注意,分區(qū)度量和服務(wù)器度量?jī)烧叨加捎脩舳x。因此,用戶不需要具有與服務(wù)器度量類似的分區(qū)度量。例如,服務(wù)器度量可以是(PU用量和網(wǎng)絡(luò)帶寬用量的組合,而分區(qū)度量?jī)H與請(qǐng)求率有關(guān)。
[0079]除了定義用于重分派分區(qū)的維度外,用戶還可定義用于觸發(fā)分區(qū)拆分的維度。用于觸發(fā)分區(qū)拆分的維度的定義可以與用于重分派分區(qū)的維度相似,或者可使用不同的維度格式。例如,服務(wù)器度量表達(dá)對(duì)于用于觸發(fā)分區(qū)拆分的維度而言可能不是必須的,因?yàn)榉謪^(qū)度量表達(dá)對(duì)于確定何時(shí)拆分分區(qū)而言將可能更有用。此外,用于觸發(fā)分區(qū)拆分的維度可包括關(guān)于在拆分分區(qū)的條件滿足時(shí)如何拆分該分區(qū)的維度。注意,用于觸發(fā)分區(qū)拆分的維度可能對(duì)標(biāo)識(shí)何時(shí)合并兩個(gè)分區(qū)也有用。作為替換,用戶可定義分開(kāi)的用于分區(qū)合并的維度。
[0080]更一般地,可為確定負(fù)載平衡動(dòng)作何時(shí)應(yīng)發(fā)生指定任何方便數(shù)目的條件。這些條件可以與對(duì)應(yīng)于一個(gè)或多個(gè)維度的度量(諸如,對(duì)應(yīng)于多個(gè)維度的度量)合并。這些條件可被排序,使得以用于執(zhí)行負(fù)載平衡的特定次序來(lái)對(duì)這些條件進(jìn)行求值。例如,與用于將分區(qū)移動(dòng)到不同的分區(qū)服務(wù)器的條件相比,與拆分分區(qū)有關(guān)的條件可被置于該次序中的更早處。在這樣的示例中,如果分區(qū)服務(wù)器上的一個(gè)分區(qū)負(fù)責(zé)該負(fù)載的較大百分比,則移動(dòng)其他分區(qū)可能不會(huì)對(duì)在多個(gè)服務(wù)器間進(jìn)行負(fù)載平衡有效。通過(guò)首先檢查是否要拆分分區(qū),導(dǎo)致該問(wèn)題的分區(qū)可被拆分成(可能)具有較少負(fù)載的各部分.類似地,較早地以條件的排序合并各分區(qū)可能是合乎需要的。例如,具有大量小負(fù)載分區(qū)的分區(qū)服務(wù)器可能由于過(guò)多的分區(qū)而看上去不可用,即使服務(wù)器上的總負(fù)載低于平均值。在移動(dòng)分派之前合并分區(qū)允許這樣的服務(wù)器變得對(duì)接收附加分區(qū)分派可用。
[0081]當(dāng)指定用于發(fā)起負(fù)載平衡活動(dòng)的條件時(shí),任何方便類型的度量可被包括在一條件中。因此,可按需一起或分開(kāi)使用針對(duì)單個(gè)分區(qū)上的負(fù)載、多個(gè)分區(qū)上的負(fù)載、一服務(wù)器上的負(fù)載、或多個(gè)服務(wù)器上的負(fù)載的度量。對(duì)于與多個(gè)分區(qū)或多個(gè)服務(wù)器有關(guān)的度量,簡(jiǎn)單示例是確定跨所有服務(wù)器的負(fù)載以便定義平均負(fù)載。因此用于執(zhí)行負(fù)載平衡的條件可以與服務(wù)器上的負(fù)載對(duì)照平均服務(wù)器負(fù)載之間的差異(諸如服務(wù)器負(fù)載的絕對(duì)值對(duì)照平均負(fù)載中的差異、或服務(wù)器負(fù)載與距平均服務(wù)器負(fù)載的標(biāo)準(zhǔn)偏差的比較)相關(guān)。在使用多個(gè)分區(qū)負(fù)載時(shí),考慮關(guān)于服務(wù)器上的各最高加載分區(qū)相對(duì)于彼此的數(shù)目的負(fù)載可能是合乎需要的。與僅具有一個(gè)高負(fù)載分區(qū)的分區(qū)服務(wù)器相比,所需的負(fù)載平衡動(dòng)作對(duì)于具有含類似負(fù)載的多個(gè)分區(qū)的分區(qū)服務(wù)器而言可能是不同的。
[0082]除了定義用于分區(qū)重分派、拆分和合并的維度外,用戶還可定義用于基于這些維度來(lái)約束對(duì)分區(qū)的動(dòng)作的一個(gè)或多個(gè)過(guò)濾器。例如,在服務(wù)器具有多于70%的CPU用量服務(wù)器度量(ServerMetric)或分區(qū)數(shù)大于10時(shí),防止服務(wù)器接收新分區(qū)分派可能是合乎需要的??梢远x防止這樣的分派的分派過(guò)濾器(Assignment Filter)值。潛在過(guò)濾器的其他示例包括用于防止從現(xiàn)有分區(qū)服務(wù)器移走分區(qū)、用于防止拆分分區(qū)、或用于防止合并分區(qū)的過(guò)濾器。取決于過(guò)濾器類型,過(guò)濾器可防止負(fù)載平衡動(dòng)作發(fā)生。作為替換,過(guò)濾器可以修改考慮條件的次序,或者該過(guò)濾器可導(dǎo)致在負(fù)載平衡計(jì)算周期期間完全忽略一條件。
[0083]作為示例,考慮其中所有服務(wù)器請(qǐng)求消費(fèi)相同量的資源的假想系統(tǒng)的情況。在這樣的系統(tǒng)中,合理的負(fù)載度量可基于請(qǐng)求率。在這個(gè)示例中,每一服務(wù)器角色實(shí)例收集請(qǐng)求率在較長(zhǎng)時(shí)間段內(nèi)的平均值(RR_SlowMA)以及請(qǐng)求率在較短的時(shí)間段內(nèi)的平均值(RR_FastMA)。這些請(qǐng)求率平均值作為性能包中的名稱/值對(duì)被傳送回主機(jī)角色實(shí)例。隨后,簡(jiǎn)單的負(fù)載度量可被定義成負(fù)載平衡規(guī)則中的公式,為分區(qū)度量=max (RR_FastMA, RR_SlowMA)。該維度“負(fù)載”的左手側(cè)的分區(qū)度量對(duì)應(yīng)于由分區(qū)系統(tǒng)中的主機(jī)組件識(shí)別出的標(biāo)識(shí)符。在這種情況下,維度“負(fù)載”將被用戶預(yù)先標(biāo)識(shí)出。右手側(cè)可以是生成向分區(qū)度量分派的負(fù)載值的任何任意表達(dá)。在這種情況下,該負(fù)載對(duì)應(yīng)于基于多個(gè)移動(dòng)平均數(shù)之一的請(qǐng)求數(shù)?;谠摲謪^(qū)負(fù)載(Partit1n Load)值和/或其他值,可定義關(guān)于分區(qū)是否應(yīng)該被拆分、合并或在服務(wù)器之間移動(dòng)的一個(gè)或多個(gè)條件。
[0084]更一般地,用戶可定義用于作出負(fù)載平衡決策的度量和表達(dá)(諸如條件)的任何組合。由用戶定義的用于作出負(fù)載平衡決策的表達(dá)還可包括條件邏輯和/或支持多維度約束/優(yōu)化目標(biāo)。因此,用戶可定義決策樹(shù)或使用其他條件邏輯來(lái)提供關(guān)于如何及何時(shí)對(duì)表達(dá)進(jìn)行求值的排序。例如,用戶可使第一表達(dá)被求值,并隨后基于第一表達(dá)的值在多個(gè)潛在的附加表達(dá)中選擇以進(jìn)行求值。這可基于“if-then-else (如果-則-否則)”類型的條件邏輯、基于所確定的值的下一表達(dá)的查找表、或者任何其他方便類型的條件邏輯。結(jié)果,用戶具有指定供在負(fù)載平衡中使用的度量和表達(dá)的類型的靈活性,包括給定表達(dá)是否被求值以及提供用于對(duì)這樣的表達(dá)進(jìn)行求值的次序。注意,各表達(dá)的求值次序還可基于之前已求值的表達(dá)的值來(lái)動(dòng)態(tài)地確定。
[0085]由用戶定義的用于作出負(fù)載平衡決策的表達(dá)的另一示例可包括多維約束/優(yōu)化目標(biāo)。例如,用戶可定義多個(gè)維度(例如,兩個(gè)),并且對(duì)于每一維度,用戶可定義分開(kāi)的優(yōu)化目標(biāo)或約束。CPU利用率和請(qǐng)求等待時(shí)間是兩個(gè)示例性維度。用戶可指定規(guī)則,使得分區(qū)服務(wù)器的CPU用量低于第一閾值(例如,90% ),并在同時(shí)最小化跨所定義的分區(qū)服務(wù)器集合(例如,所有分區(qū)服務(wù)器)的平均請(qǐng)求等待時(shí)間。該方法可不同于其中用戶明確指定要做什么的if-then-else類型的邏輯。在這個(gè)模型中,用戶定義限制和優(yōu)化目標(biāo),這些限制和優(yōu)化目標(biāo)允許系統(tǒng)自動(dòng)尋找到解決方案。
[0086]在另一假想系統(tǒng)中,用戶可提供多個(gè)條件或表達(dá)來(lái)進(jìn)行求值。這些表達(dá)基于針對(duì)服務(wù)于給定命名空間的分區(qū)服務(wù)器的各種CPU用量度量。第一表達(dá)對(duì)是否有任何分區(qū)服務(wù)器具有與大于60%的命名空間有關(guān)的CPU用量進(jìn)行求值。對(duì)于這個(gè)用戶,如果沒(méi)有CPU具有大于60%的用量,則該用戶不需要負(fù)載平衡。因此,如果第一表達(dá)的結(jié)果為假(即,沒(méi)有分區(qū)服務(wù)器具有大于60%的CPU用量),則進(jìn)一步的表達(dá)都不被求值,因?yàn)椴恍枰M(jìn)行負(fù)載平衡。如果至少一個(gè)分區(qū)服務(wù)器具有大于60%的CPU用量,則一系列表達(dá)可隨后被求值以確定要執(zhí)行的負(fù)載平衡動(dòng)作。
[0087]在負(fù)載平衡導(dǎo)致移動(dòng)分區(qū)的情形中,可通過(guò)使該主機(jī)角色實(shí)例發(fā)出兩個(gè)分派請(qǐng)求來(lái)將分區(qū)從第一服務(wù)器移動(dòng)到第二服務(wù)器。給第一服務(wù)器的分派請(qǐng)求不包括該分區(qū),其導(dǎo)致第一服務(wù)器停止針對(duì)該分區(qū)的服務(wù)。給第二服務(wù)器的第二分派請(qǐng)求包括該分區(qū)。
[0088]在分區(qū)被拆分成兩個(gè)或更多個(gè)分區(qū)的情形中,主機(jī)角色實(shí)例可通過(guò)確定拆分密鑰來(lái)發(fā)起拆分,該拆分密鑰對(duì)應(yīng)于將形成新分區(qū)之一的包括性范圍的結(jié)束的密鑰值。拆分密鑰可以按任何方便的方式來(lái)選擇。主機(jī)或服務(wù)器角色實(shí)例可基于該分區(qū)(諸如通過(guò)選擇在該分區(qū)的范圍中間處或附近的密鑰值)來(lái)選擇拆分密鑰。作為替換,服務(wù)器可基于關(guān)于該分區(qū)的附加統(tǒng)計(jì)數(shù)據(jù)來(lái)選擇拆分密鑰。例如,基于采樣的桶機(jī)制可用于以與確定該整個(gè)分區(qū)的負(fù)載類似的方式來(lái)跟蹤該分區(qū)的各個(gè)部分的負(fù)載。隨后,拆分密鑰可被選擇,以使得該負(fù)載對(duì)于向新分區(qū)分派的桶而言是類似的。
[0089]在給定角色內(nèi),(活躍)主機(jī)負(fù)責(zé)將負(fù)載散布在各分區(qū)服務(wù)器上。優(yōu)選地,主機(jī)將防止一個(gè)或多個(gè)服務(wù)器變得過(guò)載,并由此無(wú)法處理請(qǐng)求。在替換實(shí)施例中,對(duì)負(fù)載的調(diào)整可通過(guò)保持每服務(wù)器一個(gè)分區(qū)/范圍并調(diào)整這些范圍來(lái)完成。通過(guò)不是移動(dòng)分區(qū),可執(zhí)行對(duì)負(fù)載的調(diào)整同時(shí)影響較少數(shù)目的服務(wù)器。
[0090]具有最小的每服務(wù)器分區(qū)數(shù)以使得負(fù)載可經(jīng)由分區(qū)重分派被平滑地到處移動(dòng)通常是合乎需要的。當(dāng)分區(qū)數(shù)降到最小等級(jí)時(shí),不執(zhí)行其他合并器。類似地,避免具有太多分區(qū)通常也是合乎需要的。隨著接近服務(wù)器的最大分區(qū)數(shù),合并分區(qū)的可能性可增加。作為示例,維護(hù)每服務(wù)器5到8之間個(gè)分區(qū)可能是合乎需要的。當(dāng)然,本發(fā)明的各實(shí)施例可與每服務(wù)器任何數(shù)目的分區(qū)一起工作,諸如從少至每服務(wù)器I個(gè)分區(qū)到每服務(wù)器成百個(gè)或更多個(gè)分區(qū)。
[0091]優(yōu)選地,拆分和合并協(xié)議兩者都是無(wú)狀態(tài)的。主機(jī)或相關(guān)的服務(wù)器可在任何時(shí)間進(jìn)行故障轉(zhuǎn)移,而不會(huì)導(dǎo)致分區(qū)系統(tǒng)的錯(cuò)誤。換言之,如果主機(jī)或服務(wù)器在拆分或合并過(guò)程期間失效了,則下一主機(jī)或服務(wù)器將能夠構(gòu)造分區(qū)分派的有效列表,而不管該失效何時(shí)發(fā)生。在無(wú)狀態(tài)的拆分協(xié)議中,不要求參與服務(wù)器執(zhí)行拆分動(dòng)作中的任何一個(gè)。作為示例,分區(qū)表可包括服務(wù)器SI上范圍從低密鑰值D到高密鑰值H的分區(qū)。在這個(gè)示例中,該分區(qū)的時(shí)期號(hào)為2。基于用戶定義的負(fù)載平衡等式,確定該分區(qū)應(yīng)該被拆分,以使得該分區(qū)的部分可被分派給另一服務(wù)器。主機(jī)角色實(shí)例問(wèn)服務(wù)器SI要拆分密鑰。服務(wù)器SI返回密鑰G作為拆分密鑰。主機(jī)隨后修改分區(qū)表。代替以上提到的單個(gè)條目,該表現(xiàn)包含兩個(gè)分區(qū)。一個(gè)分區(qū)具有低密鑰值D和高密鑰值G,而第二分區(qū)具有低密鑰值G和高密鑰值H。如上所述,基于低密鑰值和高密鑰值的分區(qū)范圍定義包括該低密鑰值并排除該高密鑰值。分區(qū)表的改變可通過(guò)以下方式發(fā)生:修改現(xiàn)有條目并添加新條目、移除現(xiàn)有條目并添加兩條新條目、或任何其他方便的方法。
[0092]在下一心跳周期處,主機(jī)檢測(cè)到由服務(wù)器SI服務(wù)的分區(qū)和分區(qū)表中的信息之間的沖突。由于拆分剛發(fā)生,因此主機(jī)不會(huì)終止服務(wù)器Si的團(tuán)塊租用。相反,主機(jī)向服務(wù)器SI發(fā)送具有分區(qū)范圍D到G和時(shí)期號(hào)3的分派。這修改了 SI處的分區(qū)分派以匹配分區(qū)表中的經(jīng)拆分分區(qū)之一。在從服務(wù)器SI接收到對(duì)新分派的確認(rèn)后,主機(jī)可向另一服務(wù)器分派第二經(jīng)拆分分區(qū)。第二經(jīng)拆分分區(qū)也將具有時(shí)期號(hào)3。作為替換,兩個(gè)經(jīng)拆分分區(qū)最初都可被分派給服務(wù)器SI,其中一個(gè)或兩個(gè)分區(qū)在稍后的時(shí)間被移動(dòng),以執(zhí)行負(fù)載平衡。
[0093]合并兩個(gè)分區(qū)也可以按無(wú)狀態(tài)的方式來(lái)處理。在合并分區(qū)時(shí),作為初始步驟,從當(dāng)前服務(wù)器中解除用于合并器的各分區(qū)的分派。例如,服務(wù)器S2上的第一分區(qū)可具有低密鑰值K和高密鑰值M。在該示例中,第一分區(qū)的時(shí)期號(hào)為7。服務(wù)器S4上的第二分區(qū)可具有低密鑰值M和高密鑰值N。在該示例中,第二分區(qū)的時(shí)期號(hào)為9。作為初始步驟,可將這些分區(qū)從其相應(yīng)的服務(wù)器中解除分派,使得該分區(qū)表示出該服務(wù)器的未被分派的值。兩個(gè)分區(qū)條目可隨后被具有低密鑰值K和高密鑰值N的單個(gè)條目代替。向這個(gè)分區(qū)分派的時(shí)期號(hào)是大于經(jīng)合并分區(qū)的最高值(在該示例中該最高值對(duì)應(yīng)于10)的一個(gè)時(shí)期號(hào)。該新分區(qū)隨后可被分派給服務(wù)器。
[0094]其它示例
[0095]為了提供用于描述本發(fā)明的上下文,提供了組織分布式網(wǎng)絡(luò)或云計(jì)算環(huán)境中的計(jì)算資源的示例。以下對(duì)云計(jì)算環(huán)境的描述是作為說(shuō)明性示例來(lái)提供的。本領(lǐng)域的技術(shù)人員將意識(shí)到所要求保護(hù)的發(fā)明可結(jié)合分布式網(wǎng)絡(luò)環(huán)境以及替換類型的組織來(lái)使用。以下定義被用在說(shuō)明性示例中。
[0096]“客戶機(jī)”被定義成發(fā)出由應(yīng)用定義的接口對(duì)命名空間或域執(zhí)行動(dòng)作的一個(gè)或多個(gè)請(qǐng)求的角色??蛻魴C(jī)可對(duì)應(yīng)于用戶或?qū)?yīng)于代表用戶發(fā)起的過(guò)程。例如,查找特定賬戶的請(qǐng)求對(duì)應(yīng)于涉及以下應(yīng)用的請(qǐng)求:用于相對(duì)于具有與所需賬戶相對(duì)應(yīng)的密鑰的所有賬戶的域作出的賬戶查找的應(yīng)用。
[0097]“工作項(xiàng)”是要在云計(jì)算環(huán)境中運(yùn)行的作業(yè)的靜態(tài)表示。工作項(xiàng)可以指定作業(yè)的各個(gè)方面,包括作業(yè)二進(jìn)制代碼、指向要處理的數(shù)據(jù)的指針、以及可任選的啟動(dòng)用于執(zhí)行該作業(yè)的任務(wù)的命令行。此外,工作項(xiàng)可以指定重現(xiàn)時(shí)間表、優(yōu)先級(jí)和約束。例如,工作項(xiàng)可指定在每天下午5點(diǎn)啟動(dòng)。
[0098]“作業(yè)”是工作項(xiàng)的運(yùn)行實(shí)例。作業(yè)包含攜手執(zhí)行分布式計(jì)算的任務(wù)集合。這些任務(wù)可在云計(jì)算環(huán)境中的一個(gè)或多個(gè)虛擬機(jī)上運(yùn)行。
[0099]“任務(wù)”是作業(yè)的基礎(chǔ)執(zhí)行單元。每個(gè)任務(wù)都在虛擬機(jī)上運(yùn)行。用戶可以為每個(gè)任務(wù)指定給命令行的附加輸入以及到輸入數(shù)據(jù)的指針。在任務(wù)的執(zhí)行過(guò)程期間,該任務(wù)可以在其在執(zhí)行該任務(wù)的虛擬機(jī)上的工作目錄下創(chuàng)建文件的分層結(jié)構(gòu)(hierarchy)。
[0100]云計(jì)算環(huán)境的用戶通常希望使用云計(jì)算資源來(lái)執(zhí)行作業(yè)。這些作業(yè)通常涉及對(duì)存儲(chǔ)在可經(jīng)由云計(jì)算環(huán)境來(lái)訪問(wèn)的各位置中的數(shù)據(jù)執(zhí)行作業(yè)。供運(yùn)營(yíng)者提供云計(jì)算環(huán)境的一種方式是將該環(huán)境作為多個(gè)層來(lái)提供。圖1示意性地示出適于執(zhí)行云計(jì)算環(huán)境中的任務(wù)的系統(tǒng)的示例。圖1中的系統(tǒng)包括任務(wù)運(yùn)行時(shí)層110、第三方任務(wù)運(yùn)行時(shí)層120、資源管理層130以及調(diào)度和執(zhí)行層140。
[0101]在圖1中示出的實(shí)施例中,任務(wù)運(yùn)行時(shí)層110負(fù)責(zé)為來(lái)自用戶105的任務(wù)設(shè)置執(zhí)行環(huán)境以及安全上下文。任務(wù)運(yùn)行時(shí)層110還可啟動(dòng)任務(wù)并監(jiān)視任務(wù)的狀態(tài)。任務(wù)運(yùn)行時(shí)層110可采用在每個(gè)虛擬機(jī)上運(yùn)行的系統(tǒng)代理的形式。該任務(wù)運(yùn)行時(shí)層還可包括鏈接到用戶的任務(wù)可執(zhí)行代碼的運(yùn)行時(shí)庫(kù)。具有作為任務(wù)運(yùn)行時(shí)層110的一部分的運(yùn)行時(shí)庫(kù)可潛在地向由該系統(tǒng)代理執(zhí)行的任務(wù)提供更豐富的能力。運(yùn)行時(shí)庫(kù)的示例包括:用于允許任務(wù)間的快速通信的一個(gè)或多個(gè)高效通信庫(kù);用于從其他虛擬機(jī)和/或其他任務(wù)讀取文件的高效遠(yuǎn)程文件訪問(wèn)庫(kù)支持;用于允許任務(wù)進(jìn)行檢查點(diǎn)(例如,進(jìn)入到二進(jìn)制大對(duì)象中)和恢復(fù)的檢查點(diǎn)庫(kù);日志記錄庫(kù);以及用于提供跨虛擬機(jī)池內(nèi)的執(zhí)行給定任務(wù)的虛擬機(jī)使用的分布式文件系統(tǒng)的庫(kù)。
[0102]第三方運(yùn)行時(shí)層120允許附加的運(yùn)行時(shí)被構(gòu)建并在任務(wù)運(yùn)行時(shí)層110之上運(yùn)行。第三方任務(wù)運(yùn)行時(shí)層120還可提供用于協(xié)調(diào)作業(yè)的各任務(wù)的運(yùn)行的附加能力。示例可包括屬于用于提供要跨執(zhí)行虛擬機(jī)池內(nèi)的給定任務(wù)的各虛擬機(jī)使用的分布式文件系統(tǒng)的庫(kù)的MapReduce (映射減少)運(yùn)行時(shí)。這允許用戶按針對(duì)用戶的作業(yè)或任務(wù)定制的方式組織云計(jì)算環(huán)境。在一些實(shí)施例中,作業(yè)管理器任務(wù)可促成允許用戶使用第三方運(yùn)行時(shí)層來(lái)運(yùn)行和/或控制云計(jì)算資源。
[0103]資源管理層130涉及管理云計(jì)算環(huán)境中可用的計(jì)算資源。一個(gè)選項(xiàng)是使資源管理層130以三個(gè)不同的層級(jí)管理這些資源。在第一層級(jí),資源管理層130管理與作業(yè)(S卩,工作項(xiàng)的執(zhí)行)相關(guān)聯(lián)的虛擬機(jī)的分配和解除分配以及存儲(chǔ)在每個(gè)虛擬機(jī)上的與任務(wù)相關(guān)聯(lián)的文件。在第二層級(jí),將與作業(yè)相關(guān)聯(lián)的虛擬機(jī)分組成各機(jī)器池。池可包含與一個(gè)或多個(gè)作業(yè)和/或工作項(xiàng)相關(guān)聯(lián)的虛擬機(jī)。取決于該實(shí)施例,單個(gè)池可跨越多個(gè)虛擬機(jī)群集,諸如一數(shù)據(jù)中心中的所有虛擬機(jī)群集、跨一地理區(qū)中的多個(gè)數(shù)據(jù)中心的多個(gè)虛擬機(jī)群集,或跨多個(gè)地理區(qū)中的各數(shù)據(jù)中心的多個(gè)虛擬機(jī)群集。單個(gè)池可包含大量虛擬機(jī),諸如數(shù)百萬(wàn)的虛擬機(jī)。所述虛擬機(jī)可被包含在大量的池中,諸如多達(dá)數(shù)十億個(gè)池中。在第三層級(jí),資源管理層管理給定池群組中可用于與各作業(yè)或工作項(xiàng)關(guān)聯(lián)的虛擬機(jī)的量。這允許對(duì)基于系統(tǒng)的當(dāng)前負(fù)載使用的計(jì)算資源的量進(jìn)行動(dòng)態(tài)調(diào)整。此外,未被當(dāng)前池群組使用的虛擬機(jī)可被釋放回云計(jì)算環(huán)境以供并入其他池群組。
[0104]在圖1中示出的實(shí)施例中,調(diào)度和執(zhí)行層140管理用戶正執(zhí)行的工作項(xiàng)、作業(yè)和任務(wù)。調(diào)度和執(zhí)行層140做出調(diào)度決策并且負(fù)責(zé)啟動(dòng)作業(yè)和任務(wù)以及在故障時(shí)重試。這種調(diào)度和執(zhí)行層140可包括用于以各個(gè)層級(jí)管理作業(yè)和/或任務(wù)的組件。
[0105]以上描述的層可以在多個(gè)地理位置處包括處理器的云計(jì)算環(huán)境中實(shí)現(xiàn)。圖2示意性地示出不同位置處的處理器可如何被集成在單個(gè)云計(jì)算架構(gòu)中的示例。
[0106]在圖2中,一個(gè)或多個(gè)任務(wù)承租者215可被用來(lái)管理虛擬機(jī)池。任務(wù)承租者215可維持一組虛擬機(jī)。一個(gè)或多個(gè)用戶的作業(yè)可在任務(wù)承租者215內(nèi)作為一個(gè)或多個(gè)虛擬機(jī)池的一部分的虛擬機(jī)上運(yùn)行。一個(gè)或多個(gè)任務(wù)承租者215可在給定地理區(qū)域中使用。任務(wù)承租者215的責(zé)任可包括維護(hù)該組虛擬機(jī)并基于該任務(wù)承租者內(nèi)的資源利用來(lái)動(dòng)態(tài)增長(zhǎng)或收縮該任務(wù)承租者。這允許任務(wù)承租者215增加任務(wù)承租者內(nèi)的虛擬機(jī)的數(shù)量以便容納增加的顧客需求。這還允許任務(wù)承租者215釋放未使用的虛擬機(jī)以便所述虛擬機(jī)能夠被分配給數(shù)據(jù)中心中的處理其他顧客的服務(wù)的其他托管服務(wù)。任務(wù)承租者215的另一責(zé)任可以是實(shí)現(xiàn)池分配/解除分配/管理邏輯的一部分。這允許任務(wù)承租者215參與確定如何將虛擬機(jī)分派給與顧客的任務(wù)相關(guān)聯(lián)的池。任務(wù)承租者215還可負(fù)責(zé)在該任務(wù)承租者內(nèi)的各虛擬機(jī)上調(diào)度和執(zhí)行任務(wù)。
[0107]在圖2的實(shí)施例中,提供了控制多個(gè)任務(wù)承租者215的一個(gè)或多個(gè)任務(wù)位置服務(wù)225。此多個(gè)任務(wù)承租者可對(duì)應(yīng)于給定地理區(qū)中的所有任務(wù)承租者、來(lái)自整個(gè)世界的各個(gè)任務(wù)承租者、或任務(wù)承租者的任何其他方便的分組。在圖2中,示出了服務(wù)于被標(biāo)記為“美國(guó)北部”和“美國(guó)南部”的區(qū)域的任務(wù)位置服務(wù)225。任務(wù)位置服務(wù)225的責(zé)任可包括管理該給定地理區(qū)域的任務(wù)帳戶。任務(wù)位置服務(wù)225還可提供用于允許用戶與該云計(jì)算環(huán)境交互的應(yīng)用編程接口(API)。這些API可包括與虛擬機(jī)池、池管理邏輯、以及跨越給定地理區(qū)域中的任務(wù)承租者的池管理邏輯的協(xié)調(diào)相關(guān)聯(lián)的處理API。這些API還可包括用于處理用戶所提交的任務(wù)、以及用于維護(hù)、調(diào)度以及終止與該用戶任務(wù)相關(guān)聯(lián)的工作項(xiàng)或作業(yè)的API。這些API可進(jìn)一步包括用于對(duì)地理位置中的所有工作項(xiàng)、作業(yè)、任務(wù)和池進(jìn)行統(tǒng)計(jì)數(shù)據(jù)收集、聚集和報(bào)告的API。此外,這些API可包括用于允許基于虛擬機(jī)的現(xiàn)貨市場(chǎng)短期地將可用虛擬機(jī)作為可搶占虛擬機(jī)向用戶拍賣的API。這些API還可包括用于計(jì)量使用并且提供計(jì)費(fèi)支持的API。
[0108]這些任務(wù)位置服務(wù)225可被全局位置服務(wù)235鏈接在一起。全局位置服務(wù)235可負(fù)責(zé)賬戶創(chuàng)建和賬戶管理,包括結(jié)合任務(wù)位置服務(wù)承租者225來(lái)管理任務(wù)賬戶。這包括在存在主要數(shù)據(jù)中心災(zāi)難的情況下,負(fù)責(zé)災(zāi)難恢復(fù)并負(fù)責(zé)工作項(xiàng)和作業(yè)的可用性。這可包括由于數(shù)據(jù)中心出于任何原因不可用而在不同的位置運(yùn)行工作項(xiàng)或作業(yè)。這還可包括允許顧客將他們的工作項(xiàng)、作業(yè)和池從一個(gè)數(shù)據(jù)中心遷移到另一數(shù)據(jù)中心。通常,將僅存在一個(gè)活躍的全局位置服務(wù)235。該活躍全局位置服務(wù)235與各個(gè)任務(wù)位置服務(wù)225以及各用于管理數(shù)據(jù)存儲(chǔ)的服務(wù)組件(未示出)通信。全局位置服務(wù)可維護(hù)全局賬戶命名空間237。
[0109]圖3示出了對(duì)任務(wù)位置服務(wù)的潛在配置。在圖3中示出的配置中,任務(wù)位置服務(wù)可包括一個(gè)或多個(gè)賬戶服務(wù)器321。該賬戶服務(wù)器處理針對(duì)給定地理區(qū)域中的帳戶的帳戶管理,包括創(chuàng)建、刪除、或?qū)傩愿?。帳戶前?22用作賬戶服務(wù)的前端節(jié)點(diǎn)。賬戶前端322在該圖中所示出的賬戶虛擬IP地址324后。帳戶前端322處理來(lái)自全局位置服務(wù)的帳戶API請(qǐng)求,諸如用于創(chuàng)建帳戶或刪除帳戶的API請(qǐng)求
[0110]圖3中的配置還包括一個(gè)或多個(gè)池服務(wù)器331。池服務(wù)器331處理針對(duì)給定地理區(qū)域中的虛擬機(jī)池的池管理和池事務(wù)。池服務(wù)器331處理池創(chuàng)建、刪除和屬性更新。池服務(wù)器331還管理跨多個(gè)任務(wù)承租者的高級(jí)虛擬機(jī)分配算法。虛擬機(jī)分配可將虛擬機(jī)與給定用戶的存儲(chǔ)的連接性納入考慮。池服務(wù)器還可執(zhí)行與虛擬機(jī)的分配有關(guān)的其他任務(wù)。
[0111]圖3的配置還包括一個(gè)或多個(gè)工作項(xiàng)或作業(yè)服務(wù)器(WIJ) 336。WIJ服務(wù)器336處理對(duì)工作項(xiàng)和作業(yè)的創(chuàng)建、刪除和更新。此外,如果用戶請(qǐng)求了在工作項(xiàng)或作業(yè)開(kāi)始或結(jié)束時(shí)對(duì)池的自動(dòng)創(chuàng)建和/或破壞,則WIJ服務(wù)器336可發(fā)起對(duì)與這些工作項(xiàng)或作業(yè)相關(guān)聯(lián)的池的創(chuàng)建和刪除。WIJ服務(wù)器336還使用用于縮放的通用分區(qū)機(jī)制。在一實(shí)施例中,在每個(gè)任務(wù)位置服務(wù)中存在多個(gè)WIJ服務(wù)器336,并且每個(gè)WIJ服務(wù)器處理一定范圍的工作項(xiàng)。
[0112]池服務(wù)器331和WIJ服務(wù)器336經(jīng)由任務(wù)位置服務(wù)前端338接收來(lái)自用戶的請(qǐng)求。任務(wù)位置服務(wù)前端338還負(fù)責(zé)調(diào)用相應(yīng)的組件來(lái)處理來(lái)自用戶的請(qǐng)求。任務(wù)位置服務(wù)前端338在如該圖中所示出的賬戶虛擬IP地址334后。
[0113]圖3中的配置還包括任務(wù)位置服務(wù)主機(jī)342。在一實(shí)施例中,任務(wù)位置服務(wù)主機(jī)342具有兩個(gè)主要的責(zé)任。首先,任務(wù)位置服務(wù)主機(jī)325用作用于為任務(wù)位置服務(wù)225中的相應(yīng)服務(wù)器實(shí)現(xiàn)分區(qū)邏輯的主機(jī)系統(tǒng)。此外,任務(wù)位置服務(wù)主機(jī)342可負(fù)責(zé)在每一現(xiàn)貨時(shí)段的開(kāi)始處為該任務(wù)位置服務(wù)的整個(gè)地理區(qū)域計(jì)算可搶占虛擬機(jī)的新市場(chǎng)價(jià)??梢詮母鞒胤?wù)器和任務(wù)承租者處收集當(dāng)前投標(biāo)和資源可用性信息,并據(jù)此計(jì)算該新市場(chǎng)價(jià)。或者,任務(wù)位置服務(wù)主機(jī)可向現(xiàn)貨價(jià)格市場(chǎng)服務(wù)發(fā)送該投標(biāo)和資源可用性信息。它還作出對(duì)池服務(wù)器的關(guān)于跨地理區(qū)域中的所有任務(wù)承租者的可搶占虛擬機(jī)的高級(jí)分配指南。
[0114]為了跟蹤計(jì)算環(huán)境的活動(dòng)和行為,任務(wù)位置服務(wù)主機(jī)342可與一個(gè)或多個(gè)統(tǒng)計(jì)數(shù)據(jù)聚集服務(wù)器355通信。統(tǒng)計(jì)數(shù)據(jù)聚集服務(wù)器負(fù)責(zé)收集和聚集任務(wù)、作業(yè)、工作項(xiàng)和池的詳細(xì)統(tǒng)計(jì)數(shù)據(jù)。該系統(tǒng)中的其他組件發(fā)出任務(wù)和虛擬機(jī)的精細(xì)粒度的統(tǒng)計(jì)數(shù)據(jù)。統(tǒng)計(jì)聚集服務(wù)器將來(lái)自任務(wù)層或虛擬機(jī)層統(tǒng)計(jì)數(shù)據(jù)的這些精細(xì)粒度的統(tǒng)計(jì)數(shù)據(jù)聚集為工作項(xiàng)、帳戶層、和/或池層統(tǒng)計(jì)數(shù)據(jù)。所述統(tǒng)計(jì)數(shù)據(jù)可被披露以經(jīng)由API使用。此外,統(tǒng)計(jì)數(shù)據(jù)聚集服務(wù)器可負(fù)責(zé)為每個(gè)帳戶生成每小時(shí)計(jì)量記錄以供計(jì)費(fèi)使用。
[0115]作為更具體的示例,通用分區(qū)可被應(yīng)用于在圖3中示出的任務(wù)位置服務(wù)中的角色和子角色。圖3中示范出的頂層角色是任務(wù)位置服務(wù)或承租者。如果存在任務(wù)位置服務(wù)的多個(gè)實(shí)例,則這些實(shí)例之一將對(duì)應(yīng)于任務(wù)位置服務(wù)主機(jī)(或命令器)342。在承租者內(nèi)的是賬戶服務(wù)器角色321、池服務(wù)器角色331和工作項(xiàng)作業(yè)服務(wù)器角色336。這些角色中的每一個(gè)還表示任務(wù)位置服務(wù)的實(shí)例,但這些角色實(shí)例處理整個(gè)承租者內(nèi)的一組功能。例如,對(duì)賬戶信息的請(qǐng)求由該承租者內(nèi)的賬戶服務(wù)器角色來(lái)處理。如果存在任務(wù)位置服務(wù)或承租者的多個(gè)實(shí)例,則該承租者內(nèi)的角色中的每一個(gè)的主機(jī)可對(duì)應(yīng)于不同的實(shí)例。
[0116]圖6示出了可如何為多個(gè)主機(jī)角色提供冗余的常規(guī)示例。在這個(gè)常規(guī)示例中,每一主機(jī)角色需要具有兩個(gè)附加實(shí)例,以便改善可用性。錯(cuò)誤域包括具有共同失效模式的節(jié)點(diǎn),并且它們可一起失效。例如,共享同一電源的同一機(jī)架上的各節(jié)點(diǎn)可處于共同錯(cuò)誤域,因?yàn)樗鼈兛赡苡捎诠餐瑔?wèn)題的結(jié)果而失效。升級(jí)域?qū)?yīng)于在系統(tǒng)升級(jí)期間的同一時(shí)間離線獲得的一組節(jié)點(diǎn)。這些角色散布在如圖6所示的不同“錯(cuò)誤域”和“升級(jí)域”上,以便不會(huì)在共同時(shí)間由于升級(jí)或失效的原因而停機(jī)。
[0117]在該常規(guī)方法下,提供任務(wù)位置服務(wù)內(nèi)的三個(gè)角色所需的附加實(shí)例將要求具有針對(duì)每一角色的分開(kāi)的附加實(shí)例。在圖6中,這通過(guò)具有為每一類型的主機(jī)提供附加實(shí)例的顯式機(jī)器來(lái)示出。由此,用于賬戶服務(wù)器的主機(jī)621將需要附加實(shí)例622和623。類似地,用于池服務(wù)器的主機(jī)632具有備份實(shí)例631和633。用于WIJ服務(wù)器的主機(jī)643具有備份實(shí)例642和641。
[0118]圖8示出了使用通用分區(qū)的分布式計(jì)算環(huán)境內(nèi)的虛擬機(jī)如何被組織以為角色提供各種實(shí)例和主機(jī)的示例。在圖8中,示出了分別用于賬戶服務(wù)器、池服務(wù)器和WIJ服務(wù)器的分開(kāi)的GP主機(jī)821、831和841。由于GP主機(jī)模塊和任何固定接口是相同的,而不管正被管理的角色為何,因此備份服務(wù)器需要GP主機(jī)821、831和841可被組合在單個(gè)機(jī)器上。因此,可提供單個(gè)備份852作為這三個(gè)GP主機(jī)的備份。如果GP主機(jī)821、831或841之一經(jīng)歷了失效,則可使用同一 GP主機(jī)模塊和固定接口。在該示例中,故障轉(zhuǎn)移備份需要來(lái)接管經(jīng)歷了失效的GP主機(jī)角色的唯一附加信息類型是相應(yīng)命名空間的密鑰和任何應(yīng)用定義的接口。類似地,單個(gè)第二備份852可用于所有三個(gè)GP主機(jī)821、831和841。因此,在這個(gè)示例中,僅兩個(gè)GP主機(jī)備份服務(wù)器(852和853)用于此至少三個(gè)GP主機(jī)角色。雖然示出了如由共同機(jī)器備份的三個(gè)GP主機(jī)角色,但可使用共同機(jī)器來(lái)備份屬于同一用戶或賬戶的任何方便數(shù)目的GP主機(jī)角色。
[0119]圖11示出了根據(jù)本發(fā)明的各方面的相對(duì)于錯(cuò)誤域和升級(jí)域?yàn)橹鳈C(jī)角色提供備份機(jī)器的示例性方面。類似于本文中以上相對(duì)于圖8討論的那些概念,可將多個(gè)GP主機(jī)角色備份在較少數(shù)量的服務(wù)器上。例如,圖11描繪了第一錯(cuò)誤域和第一升級(jí)域中的賬戶GP主機(jī)1202、第二錯(cuò)誤域和第二升級(jí)域中的池GP主機(jī)1204、第三錯(cuò)誤域和第三升級(jí)域中的WIHGP主機(jī)1210、第一 GP備份1206和第二 GP備份1208。第一 GP備份1206和第二 GP備份1208各自在各GP主機(jī)角色中的不同錯(cuò)誤域和升級(jí)域中。在這個(gè)說(shuō)明性示例中,單個(gè)通用分區(qū)系統(tǒng)在該示例中僅需要五個(gè)服務(wù)器(或潛在地具有單個(gè)備份的四個(gè)服務(wù)器)來(lái)為這三個(gè)角色托管所有這些主機(jī)。在圖6所示的示例中,可需要用于那三個(gè)相同的主機(jī)角色的9個(gè)不同的服務(wù)器。圖8中示出的方法可通過(guò)利用可用于由該系統(tǒng)托管的任何類型的角色的兩個(gè)附加服務(wù)器來(lái)完成。因此,如果這些主機(jī)角色中的一個(gè)或多個(gè)不可用來(lái)處理錯(cuò)誤域或不可用升級(jí)域中的失效時(shí),可使用備份服務(wù)器(例如,GP備份1206)。盡管(如與相對(duì)于圖6討論的那個(gè)示例相比)在本示例中可能需要較少數(shù)目的服務(wù)器,但構(gòu)想了附加錯(cuò)誤域和升級(jí)域可被實(shí)現(xiàn)來(lái)確保備份服務(wù)器的可用性。如以上參考圖8所討論的,在一示例性方面中,構(gòu)想了任何數(shù)目的主機(jī)角色可由共同的機(jī)器來(lái)備份。
[0120]在簡(jiǎn)要描述了本發(fā)明的各實(shí)施例的概覽后,現(xiàn)在描述適于執(zhí)行本發(fā)明的示例性操作環(huán)境。概括地參考附圖,并首先具體參考圖7,示出了用于實(shí)現(xiàn)本發(fā)明的各實(shí)施例的示例性操作環(huán)境,并將其概括地指定為計(jì)算設(shè)備700。計(jì)算設(shè)備700只是合適的計(jì)算環(huán)境的一個(gè)示例,并且不旨在對(duì)本發(fā)明的使用范圍或功能提出任何限制。也不應(yīng)該將計(jì)算設(shè)備700解釋為對(duì)所示出的任一組件或其組合有任何依賴性或要求。
[0121]本發(fā)明的各實(shí)施例可以在由計(jì)算機(jī)或諸如個(gè)人數(shù)據(jù)助理或其它手持式設(shè)備之類的其它機(jī)器執(zhí)行的計(jì)算機(jī)代碼或機(jī)器可使用指令(包括諸如程序模塊之類的計(jì)算機(jī)可執(zhí)行指令)的一般上下文中描述。一般而言,包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等的程序模塊指的是執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的代碼。本發(fā)明可以在各種系統(tǒng)配置中實(shí)施,這些系統(tǒng)配置包括手持式設(shè)備、消費(fèi)電子產(chǎn)品、通用計(jì)算機(jī)、更專用計(jì)算設(shè)備等等。本發(fā)明也可以在其中任務(wù)由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)踐。
[0122]繼續(xù)參考圖7,計(jì)算設(shè)備700包括直接或間接耦合以下設(shè)備的總線710:存儲(chǔ)器712、一個(gè)或多個(gè)處理器714、一個(gè)或多個(gè)呈現(xiàn)組件716、輸入/輸出(I/O)端口 718、I/O組件720、和說(shuō)明性電源722。總線710表示可以是一條或多條總線(諸如地址總線、數(shù)據(jù)總線、或其組合)。雖然為了清楚起見(jiàn)利用線條示出了圖7的各框,但是實(shí)際上,各組件的輪廓并不是那樣清楚,并且比喻性地來(lái)說(shuō),線條更精確地將是灰色的和模糊的。例如,可以將諸如顯示設(shè)備等呈現(xiàn)組件認(rèn)為是I/O組件。另外,許多處理器具有存儲(chǔ)器。發(fā)明人關(guān)于此點(diǎn)認(rèn)識(shí)到這是本領(lǐng)域的特性,并重申,圖7的圖示只是可以結(jié)合本發(fā)明的一個(gè)或多個(gè)實(shí)施例來(lái)使用的示例性計(jì)算設(shè)備的例示。諸如“工作站”、“服務(wù)器”、“膝上型計(jì)算機(jī)”、“手持式設(shè)備”等分類之間沒(méi)有區(qū)別,因此它們?nèi)慷急徽J(rèn)為是在圖7的范圍之內(nèi)的并且被稱為“計(jì)算設(shè)備”。
[0123]計(jì)算設(shè)備700通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算設(shè)備700訪問(wèn)的任何可用介質(zhì),而且包含易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以存儲(chǔ)諸如計(jì)算機(jī)可讀的指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)之類的信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(pán)(DVD)或其它全息存儲(chǔ)器、磁帶盒、磁帶、磁盤(pán)存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備或可用于編碼所需信息且可以由計(jì)算設(shè)備700訪問(wèn)的任何其它介質(zhì)。在一個(gè)實(shí)施例中,計(jì)算機(jī)存儲(chǔ)介質(zhì)可以從有形計(jì)算機(jī)存儲(chǔ)介質(zhì)中選擇。在另一實(shí)施例中,計(jì)算機(jī)存儲(chǔ)介質(zhì)可以從非臨時(shí)性計(jì)算機(jī)存儲(chǔ)介質(zhì)中選擇。
[0124]通信介質(zhì)通常以諸如載波或其他傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來(lái)體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),且包含任何信息傳遞介質(zhì)。術(shù)語(yǔ)“已調(diào)制數(shù)據(jù)信號(hào)”指其一個(gè)或多個(gè)特征以這樣的方式設(shè)置或改變以便在信號(hào)中對(duì)信息進(jìn)行編碼的信號(hào)。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接之類的有線介質(zhì),以及諸如聲學(xué)、RF、紅外及其他無(wú)線介質(zhì)之類的無(wú)線介質(zhì)。上述的任意組合也應(yīng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
[0125]存儲(chǔ)器712可包括易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì)。存儲(chǔ)器可以是可移動(dòng)的,不可移動(dòng)的,或兩者的組合。示例性硬件設(shè)備包括固態(tài)存儲(chǔ)器、硬盤(pán)驅(qū)動(dòng)器、光盤(pán)驅(qū)動(dòng)器等。計(jì)算設(shè)備700包括從諸如存儲(chǔ)器712或I/O組件720等各種實(shí)體讀取數(shù)據(jù)的一個(gè)或多個(gè)處理器。呈現(xiàn)組件716向用戶或其他設(shè)備呈現(xiàn)數(shù)據(jù)指示。示例性呈現(xiàn)組件包括顯示設(shè)備、揚(yáng)聲器、打印組件、振動(dòng)組件等等。
[0126]I/O端口 718可允許計(jì)算設(shè)備700邏輯上耦合至包括I/O組件720的其它設(shè)備,這些I/O組件中的一些可以是內(nèi)置的。說(shuō)明性組件可包括話筒、操縱桿、游戲墊、圓盤(pán)式衛(wèi)星天線、掃描儀、打印機(jī)、無(wú)線設(shè)備等等。
[0127]圖9示出了根據(jù)本發(fā)明的方法的示例。在圖9中,從應(yīng)用或用戶接收910 —個(gè)或多個(gè)應(yīng)用定義的分區(qū)系統(tǒng)接口。例如,基于來(lái)自應(yīng)用或用戶的請(qǐng)求,創(chuàng)建920包括接收到的應(yīng)用定義的分區(qū)系統(tǒng)接口的多個(gè)主機(jī)角色實(shí)例。這多個(gè)主機(jī)角色實(shí)例對(duì)應(yīng)于主機(jī)存儲(chǔ)對(duì)象。將對(duì)該主機(jī)存儲(chǔ)對(duì)象930的租用分派給主機(jī)角色實(shí)例之一。多個(gè)主機(jī)角色實(shí)例為了獲得該租用的分派而競(jìng)爭(zhēng)。被分派該租用的主機(jī)角色實(shí)例變成命令器主機(jī)角色實(shí)例。命令器主機(jī)角色實(shí)例隨后將一分區(qū)群組分派940給多個(gè)分區(qū)服務(wù)器。隨后使用這多個(gè)分區(qū)服務(wù)器來(lái)執(zhí)行950與一應(yīng)用相對(duì)應(yīng)的作業(yè)。。
[0128]圖10示出了根據(jù)本發(fā)明的方法的另一示例。在圖10中,接收1010對(duì)計(jì)算的請(qǐng)求。該計(jì)算請(qǐng)求包括彼此不同的多個(gè)命名空間和至少兩個(gè)主機(jī)角色實(shí)例。創(chuàng)建1020此至少兩個(gè)主機(jī)角色實(shí)例。分派1030為所創(chuàng)建的多個(gè)主機(jī)角色實(shí)例提供故障轉(zhuǎn)移服務(wù)的至少一個(gè)機(jī)器。該故障轉(zhuǎn)移服務(wù)可對(duì)應(yīng)于主機(jī)角色實(shí)例停止操作的任何方便的理由,諸如未計(jì)劃的故障轉(zhuǎn)移、經(jīng)調(diào)度的更新、計(jì)劃的維護(hù)事件或其他理由。檢測(cè)1040針對(duì)所創(chuàng)建的主機(jī)角色實(shí)例之一的故障轉(zhuǎn)移事件。在所分派的機(jī)器上創(chuàng)建1050與該故障轉(zhuǎn)移事件相對(duì)應(yīng)的主機(jī)角色的附加實(shí)例。
[0129]參考具體實(shí)施例描述了本發(fā)明的實(shí)施例,具體實(shí)施例在所有方面都旨在是說(shuō)明性的而非限制性的。不偏離本發(fā)明范圍的情況下,各替換實(shí)施例對(duì)于本發(fā)明所屬領(lǐng)域的技術(shù)人員將變得顯而易見(jiàn)。
[0130]在一實(shí)施例中,提供了用于在分布式環(huán)境中執(zhí)行計(jì)算的方法。該方法包括:接收一個(gè)或多個(gè)應(yīng)用定義的分區(qū)系統(tǒng)接口 ;創(chuàng)建包括該一個(gè)或多個(gè)應(yīng)用定義的分區(qū)系統(tǒng)接口的多個(gè)主機(jī)角色實(shí)例,這些主機(jī)角色實(shí)例對(duì)應(yīng)于主機(jī)存儲(chǔ)對(duì)象;分派對(duì)該主機(jī)存儲(chǔ)對(duì)象的租用,每一主機(jī)角色實(shí)例為了獲得該租用而競(jìng)爭(zhēng),被分派該租用的主機(jī)角色實(shí)例是命令器主機(jī)角色實(shí)例;由命令器主機(jī)角色實(shí)例將分區(qū)群組分派給多個(gè)分區(qū)服務(wù)器;以及使用多個(gè)分區(qū)服務(wù)器來(lái)執(zhí)行與應(yīng)用相對(duì)應(yīng)的作業(yè)。
[0131]在另一實(shí)施例中,提供了用于在分布式環(huán)境中執(zhí)行計(jì)算的方法。該方法包括:接收對(duì)計(jì)算的請(qǐng)求,該請(qǐng)求包括多個(gè)命名空間和至少兩個(gè)主機(jī)角色實(shí)例;創(chuàng)建這至少兩個(gè)主機(jī)角色實(shí)例;分派為所創(chuàng)建的多個(gè)主機(jī)角色實(shí)例提供故障恢復(fù)服務(wù)的至少一個(gè)機(jī)器;檢測(cè)所創(chuàng)建的一個(gè)或多個(gè)主機(jī)角色實(shí)例的故障恢復(fù)事件;以及,在所分派的機(jī)器上創(chuàng)建與檢測(cè)到的故障恢復(fù)事件相對(duì)應(yīng)的主機(jī)角色的附加實(shí)例。
[0132]在又一實(shí)施例中,提供了一種用于在分布式計(jì)算環(huán)境中執(zhí)行計(jì)算任務(wù)的系統(tǒng)。該系統(tǒng)包括執(zhí)行計(jì)算機(jī)可使用指令的多個(gè)處理器,所述計(jì)算機(jī)可使用指令在被執(zhí)行時(shí),提供一種系統(tǒng),該系統(tǒng)包括:多個(gè)分區(qū)服務(wù)器,該分區(qū)服務(wù)器具有用于管理與分區(qū)服務(wù)器相關(guān)聯(lián)的存儲(chǔ)對(duì)象的至少一個(gè)分區(qū)系統(tǒng)接口以及一個(gè)或多個(gè)應(yīng)用定義的分區(qū)系統(tǒng)接口,分區(qū)服務(wù)器具有用于存儲(chǔ)關(guān)于所分派的分區(qū)的信息的關(guān)聯(lián)存儲(chǔ)對(duì)象;分區(qū)表,所述分區(qū)表包含基于應(yīng)用定義的命名空間的分區(qū),該分區(qū)對(duì)應(yīng)于來(lái)自跨越該命名空間的應(yīng)用定義的命名空間的密鑰范圍,該分區(qū)表能被分區(qū)系統(tǒng)訪問(wèn);第一主機(jī)角色實(shí)例,該第一主機(jī)角色實(shí)例包括固定分區(qū)系統(tǒng)接口,該固定分區(qū)系統(tǒng)接口用于管理分區(qū)到分區(qū)服務(wù)器虛擬機(jī)的分派并維護(hù)分區(qū)到分區(qū)服務(wù)器虛擬機(jī)的分區(qū)表分派;以及具有至少一個(gè)固定分區(qū)系統(tǒng)接口的客戶機(jī)組件,該至少一個(gè)固定分區(qū)系統(tǒng)接口用于從命名空間接收包含密鑰值的客戶機(jī)請(qǐng)求并返回與該密鑰值相對(duì)應(yīng)的分區(qū)服務(wù)器的地址。
[0133]從前面的描述可以看出,本發(fā)明很好地適用于實(shí)現(xiàn)上文所闡述的所有目的和目標(biāo),并且具有對(duì)于該結(jié)構(gòu)是顯而易見(jiàn)且固有的其他優(yōu)點(diǎn)。
[0134]可以理解,某些特征和子組合是有用的,并且可以加以利用而無(wú)需參考其它特征和子組合。這由權(quán)利要求所構(gòu)想的,并在權(quán)利要求的范圍內(nèi)。
【權(quán)利要求】
1.一種用于在分布式計(jì)算環(huán)境中執(zhí)行計(jì)算的方法,包括: 接收一個(gè)或多個(gè)應(yīng)用定義的分區(qū)系統(tǒng)接口; 創(chuàng)建包括所述一個(gè)或多個(gè)應(yīng)用定義的分區(qū)系統(tǒng)接口的多個(gè)主機(jī)角色實(shí)例,所述主機(jī)角色實(shí)例對(duì)應(yīng)于主機(jī)存儲(chǔ)對(duì)象; 分派對(duì)所述主機(jī)存儲(chǔ)對(duì)象的租用,每一主機(jī)角色實(shí)例競(jìng)爭(zhēng)所述租用,被分派所述租用的主機(jī)角色實(shí)例是命令器主機(jī)角色實(shí)例; 通過(guò)所述命令器主機(jī)角色實(shí)例來(lái)將分區(qū)群組分派給多個(gè)分區(qū)服務(wù)器;以及 使用所述多個(gè)分區(qū)服務(wù)器來(lái)執(zhí)行與應(yīng)用相對(duì)應(yīng)的一個(gè)或多個(gè)計(jì)算。
2.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括通過(guò)所述命令器主機(jī)角色實(shí)例來(lái)將心跳消息發(fā)送給所述多個(gè)分區(qū)服務(wù)器,其中一個(gè)或多個(gè)度量是響應(yīng)于心跳消息從所述分區(qū)服務(wù)器接收的,并且其中所述一個(gè)或多個(gè)度量中的至少一個(gè)度量是應(yīng)用定義度量。
3.如權(quán)利要求2所述的方法,其特征在于,還包括: 在所述命令器主機(jī)角色實(shí)例維護(hù)對(duì)所述主機(jī)存儲(chǔ)對(duì)象的租用時(shí),通過(guò)所述命令器主機(jī)角色實(shí)例來(lái)發(fā)送將一個(gè)或多個(gè)分區(qū)分派給多個(gè)分區(qū)服務(wù)器中的一個(gè)分區(qū)服務(wù)器的消息,來(lái)自所述命令器主機(jī)角色實(shí)例的所述消息包括時(shí)期號(hào);以及 通過(guò)所述多個(gè)分區(qū)服務(wù)器中的所述分區(qū)服務(wù)器來(lái)維護(hù)從所述命令器主機(jī)角色實(shí)例處接收到的分區(qū)分派。
4.如權(quán)利要求3所述的方法,其特征在于,還包括: 通過(guò)所述命令器主機(jī)角色實(shí)例來(lái)將分派標(biāo)識(shí)符與所述一個(gè)或多個(gè)分區(qū)的分派相關(guān)聯(lián),所述命令器主機(jī)角色實(shí)例將所述分派標(biāo)識(shí)符以及所述消息發(fā)送給所述分區(qū)服務(wù)器; 由所述分區(qū)服務(wù)器來(lái)更新相應(yīng)的存儲(chǔ)對(duì)象的內(nèi)容以存儲(chǔ)所述分派標(biāo)識(shí)符;以及 由所述分區(qū)服務(wù)器來(lái)將確認(rèn)消息發(fā)送給所述命令器主機(jī)角色實(shí)例。
5.如權(quán)利要求3所述的方法,其特征在于,還包括: 通過(guò)所述命令器主機(jī)角色實(shí)例來(lái)將分派標(biāo)識(shí)符與所述一個(gè)或多個(gè)分區(qū)的分派相關(guān)聯(lián),所述命令器主機(jī)角色實(shí)例將所述分派標(biāo)識(shí)符以及所述消息發(fā)送給所述分區(qū)服務(wù)器; 由所述分區(qū)服務(wù)器來(lái)從所述命令器主機(jī)角色實(shí)例接收所述消息,而無(wú)需向所述命令器主機(jī)發(fā)送確認(rèn)消息; 由所述命令器主機(jī)角色實(shí)例來(lái)中斷所述分區(qū)服務(wù)器對(duì)相應(yīng)存儲(chǔ)對(duì)象的租用; 由所述命令器主機(jī)角色實(shí)例來(lái)刪除與所述分區(qū)服務(wù)器相對(duì)應(yīng)的存儲(chǔ)對(duì)象;以及由所述分區(qū)服務(wù)器來(lái)檢測(cè)所述租用的中斷,所述分區(qū)服務(wù)器響應(yīng)于檢測(cè)到中斷所述租用而終止。
6.如權(quán)利要求3所述的方法,其特征在于,還包括: 通過(guò)所述命令器主機(jī)角色實(shí)例來(lái)將分派標(biāo)識(shí)符與所述一個(gè)或多個(gè)分區(qū)的分派相關(guān)聯(lián),所述命令器主機(jī)角色實(shí)例將所述分派標(biāo)識(shí)符以及所述消息發(fā)送給所述分區(qū)服務(wù)器; 由所述分區(qū)服務(wù)器從所述命令器主機(jī)角色實(shí)例接收所述消息,而無(wú)需更新相應(yīng)存儲(chǔ)對(duì)象的內(nèi)容; 由所述命令器主機(jī)角色實(shí)例來(lái)中斷所述分區(qū)服務(wù)器對(duì)所述相應(yīng)存儲(chǔ)對(duì)象的租用; 由所述命令器主機(jī)角色實(shí)例來(lái)刪除與所述分區(qū)服務(wù)器相對(duì)應(yīng)的存儲(chǔ)對(duì)象;以及 由所述分區(qū)服務(wù)器來(lái)檢測(cè)所述租用的中斷,所述分區(qū)服務(wù)器響應(yīng)于檢測(cè)到中斷所述租用而終止。
7.一種用于在分布式計(jì)算環(huán)境中執(zhí)行計(jì)算的方法,包括: 執(zhí)行包括至少兩個(gè)命名空間和至少兩個(gè)主機(jī)角色實(shí)例的計(jì)算,每一主機(jī)角色實(shí)例對(duì)應(yīng)于不同的命名空間,每一主機(jī)角色實(shí)例是命令器,并保持對(duì)相應(yīng)命名空間的主機(jī)存儲(chǔ)對(duì)象的命令器租用; 分派為多個(gè)命令器主機(jī)角色實(shí)例提供故障恢復(fù)服務(wù)的至少一個(gè)機(jī)器; 檢測(cè)所述命令器主機(jī)角色實(shí)例之一的故障恢復(fù)事件;以及 在所分派的機(jī)器上創(chuàng)建與檢測(cè)到的故障恢復(fù)事件相對(duì)應(yīng)的主機(jī)角色的附加實(shí)例,所述附加實(shí)例是作為與所述故障恢復(fù)事件相對(duì)應(yīng)的命名空間的命令器來(lái)分派的。
8.一種用于在分布式計(jì)算環(huán)境中執(zhí)行計(jì)算任務(wù)的系統(tǒng),所述系統(tǒng)包括: 多個(gè)處理器執(zhí)行的計(jì)算機(jī)可使用指令,所述計(jì)算機(jī)可使用指令在被執(zhí)行時(shí),提供一種系統(tǒng),該系統(tǒng)包括: 多個(gè)分區(qū)服務(wù)器,所述分區(qū)服務(wù)器具有用于管理與分區(qū)服務(wù)器相關(guān)聯(lián)的存儲(chǔ)對(duì)象的至少一個(gè)分區(qū)系統(tǒng)接口以及一個(gè)或多個(gè)應(yīng)用定義的分區(qū)系統(tǒng)接口,分區(qū)服務(wù)器具有用于存儲(chǔ)關(guān)于所分派的分區(qū)的信息的關(guān)聯(lián)存儲(chǔ)對(duì)象; 分區(qū)表,所述分區(qū)表包含基于應(yīng)用定義的命名空間的分區(qū),所述分區(qū)對(duì)應(yīng)于來(lái)自跨越所述命名空間的應(yīng)用定義 的命名空間的密鑰范圍,所述分區(qū)表能被分區(qū)系統(tǒng)訪問(wèn); 第一主機(jī)角色實(shí)例,所述第一主機(jī)角色實(shí)例包括固定分區(qū)系統(tǒng)接口,所述固定分區(qū)系統(tǒng)接口用于管理分區(qū)到分區(qū)服務(wù)器虛擬機(jī)的分派并維護(hù)分區(qū)到分區(qū)服務(wù)器虛擬機(jī)的分區(qū)表分派;以及 具有至少一個(gè)固定分區(qū)系統(tǒng)接口的客戶機(jī)組件,所述至少一個(gè)固定分區(qū)系統(tǒng)接口用于從所述命名空間接收包含密鑰值的客戶機(jī)請(qǐng)求并返回與所述密鑰值相對(duì)應(yīng)的分區(qū)服務(wù)器的地址。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,進(jìn)一步包括針對(duì)所述主機(jī)角色實(shí)例的至少一個(gè)應(yīng)用定義的接口。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,進(jìn)一步包括用于向所述分區(qū)表分派租用并向所述活躍主機(jī)角色實(shí)例分派主機(jī)存儲(chǔ)對(duì)象的租用接口。
【文檔編號(hào)】G06F9/50GK104081354SQ201380007805
【公開(kāi)日】2014年10月1日 申請(qǐng)日期:2013年2月1日 優(yōu)先權(quán)日:2012年2月3日
【發(fā)明者】J·王, B·G·卡爾德, A·E·紹爾斯沃德 申請(qǐng)人:微軟公司