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

在可縮放環(huán)境中管理分區(qū)的制作方法

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