解耦paas資源、作業(yè)和調度的制作方法
【專利摘要】本發(fā)明提出用于在分布式計算環(huán)境中按照平臺即服務(a?platform?as?a?service)的方式提供資源來執(zhí)行作業(yè)的系統(tǒng)和方法。按照允許作業(yè)容易地在資源之中遷移的方式來將系統(tǒng)的資源、在系統(tǒng)上執(zhí)行的作業(yè)、以及在系統(tǒng)上執(zhí)行的作業(yè)的調度器解耦合。構想了:作業(yè)從第一資源池到第二資源池的遷移由該系統(tǒng)執(zhí)行而無需人類干預。作業(yè)的遷移可針對不同資源利用不同的調度器。此外,構想了:資源池可響應于作業(yè)的遷移來自動分配更多或更少的資源。
【專利說明】解耦PAAS資源、作業(yè)和調度
[0001]背景
[0002]用于執(zhí)行大規(guī)模計算作業(yè)的傳統(tǒng)方法通常需要用戶積極管理分布式環(huán)境中的承租人(tenant)并且管理作業(yè)隊列。用戶的這種活躍參與可能阻止作業(yè)跨越大資源群集以及以高效方式縮放那些群集的使用的能力。而且,通常作業(yè)可能是按以下方式創(chuàng)建的:作業(yè)、用于完成作業(yè)的資源、以及作業(yè)在資源上的調度緊密耦合而阻止作業(yè)響應于故障或負載平衡而高效遷移的能力。
【發(fā)明內容】
[0003]在各實施例中,提出用于在分布式計算環(huán)境中按照平臺即服務(a platform as aservice)的方式提供資源來執(zhí)行作業(yè)的系統(tǒng)和方法。按照允許作業(yè)容易地在資源之中遷移的方式來將系統(tǒng)的資源、在系統(tǒng)上執(zhí)行的作業(yè)、以及在系統(tǒng)上執(zhí)行的作業(yè)的調度器解耦合。構想了:作業(yè)從第一資源池到第二資源池的遷移由該系統(tǒng)執(zhí)行而無需人類干預。作業(yè)的遷移可針對不同資源利用不同的調度器。此外,構想了:資源池可響應于作業(yè)的遷移來自動分配更多或更少的資源。
[0004]提供本概述是為了以簡化的形式介紹將在以下【具體實施方式】中進一步描述的選擇的概念。該概述不旨在標識所要求保護的主題的關鍵特征或本質特征,也不旨在獨立地用于幫助確定所要求保護的主題的范圍。
【專利附圖】
【附圖說明】
[0005]下面將參考附圖詳細描述本發(fā)明,其中:
[0006]圖1示出根據(jù)本發(fā)明的方面的適于實現(xiàn)本發(fā)明的實施例的示例性操作環(huán)境;
[0007]圖2示出圖解根據(jù)本發(fā)明的方面的示例性作業(yè)的框圖;
[0008]圖3示出圖解根據(jù)本發(fā)明的方面的示例性池的框圖;
[0009]圖4示出了圖解根據(jù)本發(fā)明的各實施例的適于在分布式計算環(huán)境內執(zhí)行任務的示例性系統(tǒng)的各架構層的框圖;
[0010]圖5示出了圖解根據(jù)本發(fā)明的方面的可集成在單一分布式計算架構中的不同位置處的處理器的示例性布置;
[0011]圖6示出了圖解根據(jù)本發(fā)明的方面的用于任務位置服務的可能配置的框圖;
[0012]圖7示出圖解根據(jù)本發(fā)明的方面的示例性任務位置服務前端(“TLSFE”)的框圖;
[0013]圖8示出圖解根據(jù)本發(fā)明的方面的示例性工作項/作業(yè)調度器(“WIJ”)的框圖;
[0014]圖9示出圖解根據(jù)本發(fā)明的方面的作業(yè)承租人的框圖;
[0015]圖10示出圖解根據(jù)本發(fā)明的方面的示例性池服務器的框圖;
[0016]圖11示出根據(jù)本發(fā)明的方面的提供示例性分布式計算系統(tǒng)中的各組件之間的示例性工作流的通信圖。
[0017]圖12示出圖解根據(jù)本發(fā)明的方面的一種用于在分布式計算環(huán)境中提供資源的示例性方法的框圖;[0018]圖13示出圖解根據(jù)本發(fā)明的方面的一種用于在分布式計算環(huán)境中提供資源的附加示例性方法的框圖;
[0019]圖14示出圖解根據(jù)本發(fā)明的方面的一種用于在分布式計算環(huán)境中提供資源的另一方法的框圖;以及
[0020]圖15示出圖解根據(jù)本發(fā)明的方面的一種用于在分布式計算環(huán)境中提供解耦(decouple)的資源、調度以及作業(yè)的方法的框圖。
【具體實施方式】
[0021]在各實施例中,提出用于在分布式計算環(huán)境中按照平臺即服務(a platform as aservice)的方式提供資源來執(zhí)行作業(yè)的系統(tǒng)和方法。按照允許作業(yè)容易地在資源之中遷移的方式來將系統(tǒng)的資源、在系統(tǒng)上執(zhí)行的作業(yè)、以及在系統(tǒng)上執(zhí)行的作業(yè)的調度器解耦合。構想了:作業(yè)從第一資源池到第二資源池的遷移由該系統(tǒng)執(zhí)行而無需人類干預。作業(yè)的遷移可針對不同資源利用不同的調度器。此外,構想了:資源池可響應于作業(yè)的遷移來自動分配更多或更少的資源。
[0022]第一示例性方面包括一種用于在分布式計算環(huán)境中提供資源的計算機實現(xiàn)的方法。該方法包括從與任務帳戶相關聯(lián)的用戶接收工作項。此外,該方法包括從該工作項創(chuàng)建作業(yè)。此外,構想了:該方法包括利用處理器和存儲器自動將至少第一虛擬機分配給第一池。該方法還被構想了為包括在該第一池上分派該作業(yè)并且在該第一池上調度該作業(yè)的任務。此外,構想了:該方法包括將該作業(yè)重新分派到第二池,該第二池包括至少第二虛擬機。此外,該方法包括:在該第二池上調度該作業(yè)的任務。
[0023]本文提供的第二示例性方面包括存儲計算機可用指令的計算機存儲介質,該計算機可用指令在被具有處理器和存儲器的計算設備執(zhí)行時執(zhí)行用于在分布式計算環(huán)境中提供資源的方法。該方法包括:利用第一調度器,在該分布式計算環(huán)境的第一資源池上調度作業(yè)。該方法還包括向將該作業(yè)分派給該第一池。此外,該方法還包括:在無需用戶干預的情況下,確定該作業(yè)要從該分布式計算環(huán)境內的所述第一池遷移到第二池。此外,該方法包括:在該第二池上分派該作業(yè)。該方法還包括:利用使用處理器和存儲器的第二調度器,自動在該第二池上調度該作業(yè)。
[0024]本文呈現(xiàn)的本發(fā)明的第三示例性方面包括一種用于在分布式計算環(huán)境中提供資源的計算機實現(xiàn)的方法。該方法包括:在任務位置服務處,從與所述分布式計算環(huán)境中的任務帳戶相關聯(lián)的用戶接收工作項。該方法還包括:利用與所述任務位置服務相關聯(lián)的池服務器,將所述分布式計算環(huán)境的第一虛擬機集合自動分配給第一池。該方法還包括:在所述第一池上調度第一作業(yè),其中所述第一作業(yè)包括與所述工作項相關聯(lián)的一個或多個任務。此外,該方法包括:基于所述第一池的負載平衡評估,自動確定所述作業(yè)要遷移到所述分布式計算環(huán)境內的第二池。此外,該方法包括將與該工作項/作業(yè)相關聯(lián)的至少一個任務遷移到該第二池。該方法還包括:在所述第二池的一個或多個資源上調度所述至少一個任務。
[0025]概覽
[0026]由于通過網(wǎng)絡的數(shù)據(jù)傳輸速度的增長和其他網(wǎng)絡特征的改善,在其中計算資源分布在大型網(wǎng)絡上的環(huán)境中執(zhí)行大規(guī)模計算任務越來越有可能。第一位置中的用戶可以向計算服務提交作業(yè)或計算任務并且使該任務在該用戶不直接知曉的計算機群組上執(zhí)行。用于執(zhí)行該用戶的任務的計算資源可以分布在多個物理位置上,這些物理位置可能跨越不同的州、國家、和/或洲。位于一個或多個位置中的第一計算資源群組可以存儲用于執(zhí)行用戶的計算任務的數(shù)據(jù)和其他信息,而位于相同位置或者可能位于一組不同的一個或多個位置中的第二計算資源群組可被用于執(zhí)行該計算任務。此外,構想用于存儲該數(shù)據(jù)的一個或多個位置可以跨不同的地理區(qū)域分散,而用戶可以對此知曉或不知曉。類似地,構想該計算資源可跨不同地理位置分散,而用戶可以對此知曉或不知曉。
[0027]對各種分布式計算資源的訪問允許用戶執(zhí)行作業(yè)任務(例如,運行進程)而不關心計算資源位于何處。分布式資源還為用戶提供了擴展(scale out)(或收縮(scale in))所使用的資源量以便滿足計算任務的目標(諸如按照指定時間或者以期望的成本價值完成該計算任務)的機會。然而,為用戶提供這種靈活性對分布式計算資源的運營者(和/或擁有者)提出了許多挑戰(zhàn)。為了滿足需求,分布式資源網(wǎng)絡的運營者將優(yōu)選地具有足夠多的可用資源來滿足峰值需求時刻的資源請求。
[0028]示例性計算環(huán)境
[0029]大體上參考附圖,并且首先具體參考圖1,示出了適用于實現(xiàn)本發(fā)明的各實施例的示例性操作環(huán)境,并將其概括指定為計算設備100。計算設備100只是合適的計算環(huán)境的一個示例,并且不旨在對本發(fā)明的使用范圍或功能提出任何限制。也不應將計算設備100解釋為對所示出的任一模塊/組件或其組合有任何依賴性或要求。
[0030]各實施例可以在計算機代碼或機器可使用指令的一般上下文中描述,包括由計算機或諸如個人數(shù)據(jù)助理或其他手持式設備等其他機器執(zhí)行的諸如程序模塊等的計算機可執(zhí)行指令。一般而言,包括例程、程序、對象、模塊、數(shù)據(jù)結構等的程序模塊指的是執(zhí)行特定任務或實現(xiàn)特定抽象數(shù)據(jù)類型的代碼。各實施例可以在各種系統(tǒng)配置中實施,這些系統(tǒng)配置包括手持式設備、消費電子產(chǎn)品、通用計算機、專用計算設備等等。各實施例也可以在其中任務由通過通信網(wǎng)絡鏈接的遠程處理設備執(zhí)行的分布式計算環(huán)境中實施。
[0031]繼續(xù)參考圖1,計算設備100包括直接或間接耦合以下設備的總線110:存儲器112、一個或多個處理器114、一個或多個呈現(xiàn)模塊116、輸入/輸出(I/O)端口 118、I/O模塊120、和說明性電源122??偩€110表示可以是一條或多條總線(諸如地址總線、數(shù)據(jù)總線、或其組合)。盡管為了清楚起見圖1的各框用線條示出,但是在實際上,各模塊的輪廓并不是那樣清楚,并且比喻性地來說,線條更精確地將是灰色的和模糊的。例如,可以將諸如顯示設備等的呈現(xiàn)模塊認為是I/O模塊。而且,處理器也具有存儲器。發(fā)明人此點認識至IJ,這是本領域的特性,并且重申,圖1的圖示只是例示可結合一個或多個實施例來使用的示例性計算設備。諸如“工作站”、“服務器”、“膝上型計算機”、“手持式設備”等分類之間沒有區(qū)別,它們全部都被認為是在圖1的范圍之內的并且被稱為“計算機”或“計算設備”。
[0032]計算設備100通常包括各種計算機可讀介質。作為示例而非限制,計算機可讀介質可以包括隨機存取存儲器(RAM);只讀存儲器(ROM);電可擦除可編程只讀存儲器(EEPROM);閃存或其他存儲器技術;CDR0M、數(shù)字多功能盤(DVD)或其他光或全息介質;磁帶盒、磁帶、磁盤存儲或其他磁存儲設備;或可用于對所需信息進行編碼并且可由計算設備100訪問的任何其他介質。
[0033]存儲器112包括易失性和/或非易失性存儲器形式的非暫態(tài)計算機存儲介質。存儲器可以是可移動的,不可移動的,或兩者的組合。示例性硬件設備包括固態(tài)存儲器、硬盤?定重復出現(xiàn)調度、優(yōu)先級和約0
奢任務的集合,這些任務一起工作以執(zhí)行分3的一個或多個虛擬機上。在后文中參考圖
;務運行在一虛擬機上。用戶可針對每個任勺指針。任務可以在該任務執(zhí)行過程期間在〔件的分層結構。
“廁任務”)是作業(yè)中的一種特殊任務。作用廁任務的情況下執(zhí)行。作業(yè)管理器任務可被用作該作業(yè)的“主”任務。如果一作業(yè)的第一個任務啟動。該廁任務隨后可以向進程并且控制何時提交下一批次任務。然任務也可由該系統(tǒng)之外的一個或多個服務I任務的調度并且管理任務間的依賴關系??梢栽诹硪惶摂M機上重啟該廁任務,以便少一個相關聯(lián)的池來運行與該工作項相對-個或多個池,該帳戶可對該一個或多個池I:作項??稍谟脩籼峤还ぷ黜棔r創(chuàng)建池,或嘗一池進行關聯(lián)以與單個工作項一起使用,使用。另外,構想了:可針對作業(yè)由系統(tǒng)自定時間運行并且通常需要兩個小時來完成。一池,并且在作業(yè)完成時刪除該池。
=項時,可將該工作項與一個或多個虛擬機5占地關聯(lián)(此外,構想了:多個工作項/作方式組織池內的虛擬機。例如,無論虛擬機機組織在單一池中。另一選項是基于地理定地理位置。又一選項是按照不同于地理如,存儲資源、網(wǎng)絡等待時間、用戶位置/偏
《統(tǒng)資源來自動生成該池。自動池創(chuàng)建允許《統(tǒng)自動地創(chuàng)建池。此過程從顧客/用戶/0。
式計算環(huán)境中具有另一用途的虛擬機。例所有者/運營者為了災難恢復目的而所提境可包括被預留的一組或多組虛擬機。這I故障、或導致分布式環(huán)境的一部分不再適I。當被分派給一池的一個或多個專用虛擬:取代丟失的虛擬機。這改善了分布式計算“牛是稀少的,所以具有預留災難恢復機器乾用。為處理故障事件而指定的這些虛擬機廳工作項/作業(yè),而不是浪費這些虛擬機的倉占資源來滿足專用資源的需要,則在這種亭止(并且有可能立即停止),以便該可占鍵。
丨勺虛擬機。通常,任何網(wǎng)絡的峰值負載將不:值負載情形的計算環(huán)境通常將在其他時間原緩沖。當用戶請求額外的專用虛擬機時,數(shù)量的VM,這些VM由帳戶或池保持待機。當需要待機VM時,可以減少待機VM的預留數(shù)量以滿足VM的所需數(shù)量。在一示例性方面中,系統(tǒng)中的VM的總數(shù)可以等于專用VM+預留待機VM+沒有被分派到別處而空閑的可用于計算的VM+為了災難且過度提供而預留的VM。在此示例中,構想了:系統(tǒng)中所使用的可搶占VM的數(shù)量小于或等于預留待機VM+空閑而可用于計算的VM的數(shù)量。
[0057]提供待機機器預留可包括在系統(tǒng)中某處(例如,池級、帳戶級)預留VM能力。待機虛擬機預留不是對虛擬機的分配。相反,待機虛擬機預留預留了在未來占用空閑或可搶占VM并將其改變?yōu)楣┰摮鼗驇羰褂玫膶S肰M的權利??蓪⒋龣CVM (其為計數(shù))與兩個不同的池相關聯(lián)。
[0058]待機機器的一個用途是針對具有僅在特定時間幀期間發(fā)生的高優(yōu)先級計算作業(yè)的用戶。例如,金融公司可能希望對一個或多個金融市場的日?;顒?諸如股票交易或商品交易)執(zhí)行分析。繼續(xù)此示例,金融市場可能按預定日程安排開市和閉市,諸如在上午9:30開市并在下午4:00閉市。金融公司想要聚集在金融市場開市的時間的數(shù)據(jù)以用于執(zhí)行分析或模擬。分析的目標是在第二天市場開市之前為他們的員工提供信息。這種分析可能需要大量的虛擬機,但是虛擬機僅在例如從下午6:00直到第二天早晨3:30之間的時間需要。在此時間期間,金融公司期望保證虛擬機的可用性。在當天的其他時間,該金融公司不需要這些機器。向該金融公司的帳戶分派待機虛擬機預留可以實現(xiàn)這一目標。作為支付預留價格的交換,向金融公司保證在所需時間期間機器的可用性。在所需時間窗口之外,這些虛擬機可用作該金融公司和/或其他用戶的可搶占機器。在執(zhí)行需要取得可搶占VM來完成預留的待機預留時,可在調度的可用性事件之前有序地停止可搶占作業(yè)。
[0059]在將待機VM預留轉換為專用機器時,這被定義為基于時間標準的轉換。換言之,至少部分基于預定時間和/或日期而將待機VM預留轉換為專用機器。基于時間的標準不同于活動標準,活動標準被用于定義活動閾值?;顒娱撝祵诨谝粋€或多個分布式資源的使用和/或性能的閾值。例如,在一帳戶中,顧客可能付費來保留一定數(shù)量的待機VM并且該待機VM預留可被用于基于時間的標準或動態(tài)閾值自動縮放標準之一者。此外,構想了:不管預留時間或其他調度預留策略如何,待機VM預留可在任何點被轉換。例如,用戶(或管理員)可提供以下請求:來自該預留的一個或多個待機VM將被轉換。
[0060]待機VM預留的另一用途是允許在擴張作業(yè)時的改善的性能。例如,零售商店可以使用分布式計算資源來在假日之前的購物季期間處理額外在線流量,諸如用于審閱零售商的網(wǎng)站并下訂單的在線流量。基于過去的經(jīng)驗,零售商期望一定水平的在線活動,并且預留相應數(shù)量的專用虛擬機。然而,在在線活動大于預期的情況下,零售商還將更多機器預留在待機模式中。零售商隨后可以設置一個或多個閾值,所述閾值指示高于預期的活動水平。在這些閾值出現(xiàn)時,待機VM預留可用于轉換空閑的或可搶占的機器以允許零售商處理附加的在線流量而無需使零售商的顧客經(jīng)歷慢響應時間。在此情形中,待機VM預留可在不可預測的時間被轉換為專用機器,因為可能不知道何時滿足活動閾值。當滿足活動閾值時,空閑VM被使用或者可搶占任務被停止而該機器被轉換為專用機器。
[0061 ] 分布式網(wǎng)絡環(huán)境中的計算資源的組織的示例
[0062]分布式計算環(huán)境的用戶通常希望使用分布式計算資源(例如,云計算資源)來執(zhí)行作業(yè)。所述作業(yè)通常涉及對存儲在經(jīng)由該分布式計算環(huán)境(諸如通過網(wǎng)絡(例如因特檢查點庫;日志記錄庫;以及用于提供跨虛文件系統(tǒng)的庫。
找勾建并且在系統(tǒng)代理運行時層408頂上運1任務的運行的附加能力。示例可包括到庫堤供要跨越VI池內、執(zhí)行給定任務的VI使1的作業(yè)或任務定制的方式組織分布式計算
卜境中可用的計算資源。一個選項是使資源I,資源管理層402管理與作業(yè)(即,工作項及存儲在與一任務相關聯(lián)的每個虛擬機上
分組為機器池,其在池級412示出。池可包以機。取決于實施例,單一池可跨越多個群:據(jù)中心的多個群集。單一池可包含大量的量的池中,諸如多達數(shù)十億個池中。
層管理每個任務承租人的大小(將在后文和作業(yè)管理組件416還可負責管理系統(tǒng)中的工作項和作業(yè)的終止和清潔。
[0070]任務管理和調度組件418允許系統(tǒng)的用戶將任務提交(傳遞)到該系統(tǒng)的作業(yè)。此組件負責跨越系統(tǒng)中的所有作業(yè)/工作項調度任務,同時跟蹤這些任務的狀態(tài)。任務管理和調度組件418可包括跨越一個/ 一些/所有任務承租人(例如,任務機)分布的一組任務調度器,從而允許每個調度器僅與有限的一組資源(例如,虛擬機)和任務相關聯(lián)。因此,在一示例性方面中,任務管理和調度組件418允許系統(tǒng)支持在跨越各種任務承租人的虛擬機上運行的數(shù)十億活動任務。
[0071 ] 作業(yè)管理器任務組件420允許JM任務,JM任務可以任選地與每個作業(yè)相關聯(lián),以作為作業(yè)的初始任務被啟動。如同前面討論的,JM任務(也被稱為任務作業(yè)管理器)提供特定作業(yè)內的任務的單一控制點。這允許JM任務向作業(yè)提交附加的任務并且監(jiān)視這些任務的進程,這允許JM任務控制何時終止該作業(yè)。JM任務可以是幫助應用運行時層406控制和運行其系統(tǒng)的機制的示例。
[0072]上面描述的各層可以在包括處于多個地理位置處的處理器的分布式計算環(huán)境中實現(xiàn)。圖5示出了圖解根據(jù)本發(fā)明的方面的可集成在單一分布式計算系統(tǒng)500中的不同位置處的處理器的示例性布置。
[0073]在圖5中,一個或多個任務承租人514可被用來管理虛擬機池。任務承租人514可維護一組虛擬機(如同后文將參考圖9更詳細地討論的)。一個或多個用戶的作業(yè)可作為一個或多個虛擬機池的一部分運行在任務承租人514內的虛擬機上。一個或多個任務承租人514可在給定地理區(qū)域中使用。任務承租人514的責任可包括維護該組虛擬機并基于該任務承租人內的資源利用來增長或收縮該任務承租人。這允許任務承租人514增加任務承租人內的虛擬機的數(shù)量以便容納增加的顧客需求。這還允許任務承租人514釋放未使用的虛擬機以便所述虛擬機能夠被分配給數(shù)據(jù)中心中處理其他顧客的服務的其他托管服務。任務承租人514的另一責任可以是實現(xiàn)池分配/解除分配/管理邏輯的一部分。這允許任務承租人514參與確定如何將虛擬機分派到與顧客的任務相關聯(lián)的池。任務承租人514還可負責該任務承租人內的虛擬機上的任務的調度和執(zhí)行。
[0074]在圖5中示出的實施例中,提供一個或多個任務位置服務512(“TLS”)(如同后文中將針對圖6-8更詳細地討論的),所述任務位置服務控制給定地理區(qū)域中和/或跨越各種地理位置的所有任務承租人514。在圖5中,示出任務位置服務512,其服務被標記為“地理區(qū)域I”和“地理區(qū)域2”的區(qū)域。任務位置服務512的責任可包括管理該給定地理區(qū)域的任務帳戶。任務位置服務512還可提供應用編程接口(API)以便允許用戶與該分布式計算環(huán)境交互。這些API可包括處理與虛擬機池、池管理邏輯、以及跨越給定地理區(qū)域中的任務承租人的池管理邏輯的協(xié)調相關聯(lián)的API。這些API還可包括用于處理用戶所提交的任務、以及用于維護、調度以及終止與該用戶任務相關聯(lián)的工作項或作業(yè)的API。這些API還可包括用于地理區(qū)域中的所有工作項、作業(yè)、任務和池的統(tǒng)計數(shù)據(jù)收集、聚合和報告的API。此外,這些API可包括用于允許基于虛擬機的現(xiàn)貨市場短期地將可用虛擬機作為可搶占VM向用戶拍賣的API。這些API還可包括用于計量使用率并且提供計費支持的API。
[0075]可通過全局位置服務502(“XLS”)將各任務位置服務512鏈接在一起。全局位置服務502可負責帳戶創(chuàng)建和帳戶的管理,包括結合任務位置服務512來管理任務帳戶。例如,該全局位置服務可負責數(shù)據(jù)中心災難情況下的災難恢復以及工作項和作業(yè)的可用性。這可包括由于該數(shù)據(jù)中心不可用而在一不同位置運行工作項或作業(yè),并且允許顧客將其工作項、作業(yè)和池從一個數(shù)據(jù)中心遷移到另一數(shù)據(jù)中心。通常,在任何給定時刻,在系統(tǒng)500中將只存在一個活動的全局位置服務502。該活動全局位置服務502與各個任務位置服務512以及服務組件通信以管理數(shù)據(jù)存儲(未示出)。全局位置服務可維護全局帳戶命名空間,諸如域名服務器504。
[0076]作為圖5的系統(tǒng)的操作的示例,假想顧客或用戶可使用客戶端門戶506訪問系統(tǒng)500以經(jīng)由全局位置服務502所提供的接口來創(chuàng)建任務帳戶。在此示例中,假想顧客被稱為Sally。創(chuàng)建任務帳戶的用戶請求可任選地指定需要在其中創(chuàng)建帳戶的地理區(qū)域。在此示例中,Sally請求與地理區(qū)域I相關聯(lián)的帳戶,其具有地理區(qū)域2作為故障轉移區(qū)域。作為響應,全局位置服務502聯(lián)系與所請求的地理區(qū)域(例如,地理區(qū)域I)相對應的任務位置服務512以便創(chuàng)建該帳戶。如果沒有請求區(qū)域,則該任務帳戶可在按任何方便方法選擇的區(qū)域中創(chuàng)建,諸如基于與進行請求的用戶或可用資源相關聯(lián)的位置。任務位置服務512維護其地理區(qū)域中的所有帳戶的所有信息。在針對地理區(qū)域I的任務位置服務512中成功創(chuàng)建帳戶(并且可能在地理區(qū)域2中創(chuàng)建災難恢復副本)之后,全局位置服務502為Sally的帳戶注冊任務服務端點以便指向地理區(qū)域I的任務位置服務512的虛擬IP地址。例如,域名服務(DNS)記錄可被創(chuàng)建以將諸如“sally, task.core, servicecompany.net”等主機名映射到地理區(qū)域I中的任務位置服務512的虛擬IP地址。在此示例性方面中,這完成了Sally的任務帳戶的創(chuàng)建。此外,構想了:在地理區(qū)域I出現(xiàn)故障的情況下,該全局位置服務可以更新DNS記錄來指向地理區(qū)域2。
[0077]在創(chuàng)建該帳戶之后,顧客Sally可以訪問該任務帳戶并且發(fā)送請求以訪問API以針對主機名“sally, task.core, servicecompany.net”與該分布式計算環(huán)境交互。例如,Sally可訪問API以發(fā)出創(chuàng)建新工作項或任務的請求。DNS服務器隨后可以解析該主機名并且該請求將被路由到正確的任務位置服務512。在此示例中,該請求被路由到地理區(qū)域I的任務位置服務512,該任務位置服務處理該請求并創(chuàng)建所請求的工作項、作業(yè)或任務。
[0078]構想了:在本發(fā)明的示例性方面中,可按任何組合來實現(xiàn)任何數(shù)量的客戶端門戶506、地理區(qū)域508、510、任務位置服務512、和/或任務承租人514。例如,構想了:在一示例性方面中,任務位置服務512可與數(shù)十、數(shù)百或數(shù)千個任務承租人相關聯(lián)。
[0079]圖6示出了圖解根據(jù)本發(fā)明的方面的用于任務位置服務602的可能配置的框圖。在圖6中示出的配置中,任務位置服務可包括一個或多個帳戶服務器612。該帳戶服務器處理給定地理區(qū)域中的帳戶的帳戶管理,包括創(chuàng)建、刪除、或屬性更新。帳戶前端608擔當帳戶服務的前端節(jié)點。帳戶前端608在該圖中所示出的帳戶虛擬IP地址604后。帳戶前端608處理來自全局位置服務的帳戶API請求,諸如用于創(chuàng)建帳戶或刪除帳戶的API請求。
[0080]圖6中的配置還包括一個或多個池服務器614。池服務器614處理給定地理區(qū)域中的虛擬機池的池管理和池事務。池服務器614處理池創(chuàng)建、刪除和屬性更新。池服務器614還管理跨多個任務承租人的高等級虛擬機分配算法。虛擬機分配可將虛擬機與給定用戶的存儲的連接性納入考慮。池服務器還可執(zhí)行與虛擬機的分配有關的其他任務。
[0081]此外,構想了:池服務器614還可包括自動縮放組件616。該自動縮放組件616可被形成為負責運行用戶提供的自動縮放規(guī)則(例如,公式)的模塊,所述自動縮放規(guī)則針對一池自動確定專用、待機和/或可搶占虛擬機的期望數(shù)量。換言之,所述自動縮放組件可負責基于與給定池相關聯(lián)的自動縮放規(guī)則來做出自動縮放決策。自動縮放組件616可接收與該池或者被分派到該池的作業(yè)有關的度量并且向其應用用戶提供的(或系統(tǒng)提供的)規(guī)則以計算該池上的自動縮放動作。自動縮放動作可包括增加或減少專用虛擬機的數(shù)量、增加或減少預留的待機虛擬機的數(shù)量、增加或減少該池的可搶占虛擬機的目標數(shù)量,同時還更新那些資源的競標價格。
[0082]圖6中的配置還包括一個或多個工作項或作業(yè)調度器(“WIJ”)618(如后文參考圖8更詳細地討論的)。WIJ調度器618處理工作項和作業(yè)的創(chuàng)建、刪除和更新。在一示例性實施例中,WIJ還負責基于在相關工作項中指定的日程安排來創(chuàng)建作業(yè)以及向該作業(yè)添加JM任務(如果要添加JM任務的話)。此外,在需要自動池配置(而不是傳統(tǒng)的由用戶手動創(chuàng)建)時,WIJ調度器618可發(fā)起與該工作項相關聯(lián)的池的創(chuàng)建和刪除。WIJ調度器618還可使用通用分區(qū)機制來在任務位置服務內縮放。在一實施例中,在每個任務位置服務中存在多個WIJ調度器618,并且每個WIJ調度器處理一定范圍的工作項。
[0083]池服務器614和WIJ調度器618經(jīng)由任務位置服務前端610從用戶接收請求(如后文在圖7處更詳細地討論的)。任務位置服務前端610還負責調用相應的組件來處理來自用戶的請求。任務位置服務前端610在如該圖中所示出的帳戶虛擬IP地址606后。
[0084]圖6中的配置還包括任務位置服務主機620。在一實施例中,任務位置服務主機620具有兩個主要的職責。首先,任務位置服務主機620擔當用于實現(xiàn)任務位置服務602中的相應服務器的分區(qū)邏輯的主系統(tǒng)。此外,任務位置服務主機620可負責在該任務位置服務的整個地理區(qū)域的每個現(xiàn)貨時間段的開始處計算可搶占虛擬機的新市場價格,或者與負責現(xiàn)貨定價的外部服務協(xié)調可搶占機器的競標請求。它從池服務器和任務承租人收集現(xiàn)有競標和資源可用性信息,并且相應地計算新市場價格或將該信息傳遞給現(xiàn)貨市場服務。它還對池服務器做出關于跨地理位置中的所有任務承租人的可搶占虛擬機的高等級分配引導。
[0085]為了跟蹤計算環(huán)境的活動和行為,任務位置服務主機620可與一個或多個統(tǒng)計數(shù)據(jù)聚集服務器622通信。統(tǒng)計數(shù)據(jù)聚集服務器負責收集和聚集任務、作業(yè)、工作項和池的詳細統(tǒng)計數(shù)據(jù)。該系統(tǒng)中的其他組件發(fā)出任務和虛擬機的精細粒度的統(tǒng)計數(shù)據(jù)。統(tǒng)計聚集服務器將來自任務級或虛擬機級統(tǒng)計數(shù)據(jù)的這些精細粒度的統(tǒng)計數(shù)據(jù)聚集為工作項、帳戶級、和/或池級統(tǒng)計數(shù)據(jù)。所述統(tǒng)計數(shù)據(jù)可經(jīng)由API被披露以使用。此外,統(tǒng)計數(shù)據(jù)聚集服務器可負責為每個帳戶生成每小時計量記錄以供計費使用。
[0086]圖7示出圖解根據(jù)本發(fā)明的方面的示例性作業(yè)位置服務前端(“TLSFE”)700的框圖。在一示例性方面中,TLSFE700可類似于上文討論的圖6的任務位置服務前端610。
[0087]TLSFE700包括請求處理器702、認證和授權模塊704、帳戶管理器組件706、以及商業(yè)邏輯模塊708。構想了:附加或替代的模塊和/或組件可被包括在替代實施例中。
[0088]請求處理器702是負責在HTTP (S)端點上接收和標識并接受用戶請求的組件。請求處理器702隨后可使每個請求排隊并將其轉發(fā)到認證和授權模塊704。認證和授權模塊704負責用戶請求認證和授權。在一示例性方面中,TLSFE使用共享密鑰認證來認證傳入的請求。構想了其它形式的認證。此外,認證和授權模塊704與帳戶管理器組件706交互以獲得關于用戶帳戶和密鑰信息的信息。認證和授權模塊704隨后可確定用戶是否被授權來請求操作的執(zhí)行(例如,該帳戶可在請求的時間被臨時禁用)。[0089]帳戶管理器組件706可被用來封裝存儲/訪問帳戶信息。在一示例性方面中,帳戶管理器組件706在接收到請求時按需加載帳戶信息,這允許將信息本地高速緩存(在存儲器中)以加速頻繁訪問的帳戶的處理。當帳戶屬性(例如,禁用的狀態(tài)、認證密鑰)改變時,可更新帳戶表。當高速緩存的副本(如果存在)過期(這可以是可配置的間隔)時,該TLSFE中運行的帳戶管理器組件706可以看到該改變。
[0090]一旦該用戶所進行的請求通過了認證和授權模塊704,商業(yè)邏輯模塊708處理與該用戶所進行的請求有關的所有商業(yè)邏輯。商業(yè)邏輯模塊708還可與分布式計算系統(tǒng)內的其他任務組件交互。此外,構想了:商業(yè)邏輯模塊708監(jiān)視JM任務完成隊列以找到完成的作業(yè)管理器任務,隨后其允許在任務完成時向圖6的WIJ調度器618傳遞通知。
[0091]圖8示出圖解根據(jù)本發(fā)明的方面的示例性工作項/作業(yè)調度器(“WIJ”)800的框圖。WIJ800可以是圖6的示例性WIJ調度器618。
[0092]WIJ800包括請求處理器802、高速緩存模塊804、心跳模塊806、以及調度模塊808。如同前面討論的,WIJ800可以是負責接受用戶帳戶所提交的工作項并且在工作項日程安排內的適當時間調度作業(yè)的角色。因此,構想了:WIJ800為工作項創(chuàng)建作業(yè)、為每個派生(spawn)的新作業(yè)創(chuàng)建隊列,所述隊列隨后被用來使該作業(yè)的任務排隊。任務承租人(后文參考圖9所討論的)的任務調度器隨后可從該隊列拉取任務并且在該任務承租人的虛擬機上調度所述任務。此外,構想了:WIJ負責工作項和相關作業(yè)的壽命管理,諸如標記工作項/作業(yè)完成以及聯(lián)系適當?shù)娜蝿粘凶馊艘蚤_始作業(yè)。
[0093]請求處理器802是負責處理與從TLSFE接收的請求有關的各種工作項/作業(yè)的模塊(諸如圖6的任務位置服務前端610)。此外,構想了:在帳戶被刪除時,帳戶服務器(例如,圖6的帳戶服務器612)向WIJ800傳送請求。
[0094]高速緩存模塊804是WIJ正在伺服的分區(qū)、用戶帳戶、活動工作項、活動作業(yè)、任務承租人列表等等的存儲器內聞速緩存。此1旲塊可負責針對相關的聞速緩存策略保持聞速緩存是最新的。
[0095]心跳模塊806與任務位置服務主機(例如,圖6的TLSM620)協(xié)調以報告WIJ的健康和負載狀況。此外,構想了:心跳模塊806還經(jīng)由“心跳”協(xié)調從TLSM接收新的分區(qū)分派。
[0096]調度模塊808負責根據(jù)工作項的指定日程安排來調度該工作項的新作業(yè)。該調度模塊還負責將工作項和/或作業(yè)標記為已完成。此外,調度模塊808可負責創(chuàng)建和刪除其壽命綁定于工作項或作業(yè)的壽命的池。
[0097]圖9示出圖解根據(jù)本發(fā)明的方面的任務承租人900的框圖。在一示例性方面中,任務承租人被構想為被實現(xiàn)為圖5的系統(tǒng)500中的任務承租人514。如上所述,任務承租人可幫助管理虛擬機池。在圖9中示出的實施例中,任務承租人包括一個或多個任務承租人前端904。該任務承租人前端904位于任務承租人虛擬IP地址之后,該任務承租人虛擬IP地址內部用于任務承租人和其相應的任務位置服務之間的通信,包括在任務位置服務和任務承租人之間傳遞請求。
[0098]在圖9中示出的實施例中,該任務承租人還包括任務調度器902。任務調度器902可負責做出任務承租人內的本地任務調度決策。任務調度器902決定在它所控制的每個虛擬機上運行什么任務。例如,用戶所提交的工作項或作業(yè)可具有一組隊列,所述隊列包含要被調度的任務的列表。任務調度器902從該組隊列中取出任務,選擇與該作業(yè)相關聯(lián)的池中的一個或多個可用虛擬機,并且聯(lián)系所述虛擬機來調度這些任務。任務調度器902還可基于與作業(yè)相關聯(lián)的優(yōu)先級值來做出調度決策。此外,任務調度器902跟蹤任務承租人內的虛擬機。
[0099]任務調度器902與池服務器一起工作以將虛擬機分配到池/從池解除虛擬機的分配。此外,任務調度器902與所有虛擬機保持心跳、經(jīng)由心跳關于池成員與虛擬機同步,并且控制虛擬機的重啟/重新鏡像。任務調度器902的又一功能可以是跟蹤任務承租人的大小。基于任務承租人內的虛擬機的當前利用率,任務調度器可以增長或收縮該任務承租人,以便該任務承租人具有足夠數(shù)量的虛擬機來運行與該任務承租人相關聯(lián)的任務。類似地,如果該任務承租人中有太多虛擬機保持空閑,可以釋放這些虛擬機以供該數(shù)據(jù)中心中的其他托管服務使用。
[0100]任務調度器902包括以下組件和模塊來實現(xiàn)上述功能性。例如,任務調度器可包括請求處理器910、心跳管理器912、統(tǒng)計數(shù)據(jù)聚集管理器914、調度循環(huán)模塊916、池分配管理器918、以及任務承租人管理器920。
[0101]在一示例性方面中,任務調度器902 “擁有”任務承租人900的虛擬機并且還“擁有”在那些虛擬機上所執(zhí)行的東西。作為結果,構想了:VM池包括跨多個任務承租人的VM。當作業(yè)被分派給池時,任務調度器902可從隊列中取出工作項并且在任務調度器902所“擁有”的虛擬機(例如,任務承租人900的TVM908)上運行那些工作項。與具有該池中的TVM的其他任務承租人相關聯(lián)的其他任務調度器也可從該隊列取出工作項并且在與每個任務承租人的唯一任務調度器中的每一個任務調度器相關聯(lián)的虛擬機上運行那些工作項。
[0102]請求處理器910負責處理從WIJ、池服務器、和/或TLSM接收的各請求。所述請求可被從該任務承租人前端路由至該任務調度器。因此,請求處理器910可使請求排隊以供正確的子組件消費。
[0103]心跳管理器912負責與該任務承租人內的其他虛擬機(例如TVM908)心跳。響應于心跳通信,此模塊收集關于虛擬機健康和任務健康的信息。此外,響應于所接收的心跳消息,此模塊可確定所述虛擬機中的哪些虛擬機空閑并可用于調度新任務。此外,心跳監(jiān)視器可收集關于虛擬機的各種統(tǒng)計數(shù)據(jù)(例如,CPU、存儲器、盤使用)。這些統(tǒng)計數(shù)據(jù)隨后可被傳遞到統(tǒng)計數(shù)據(jù)聚集管理器914。
[0104]統(tǒng)計數(shù)據(jù)聚集管理器914負責按照池來聚集和組織從該任務承租人的各虛擬機收集的各種統(tǒng)計數(shù)據(jù)。所聚集的統(tǒng)計數(shù)據(jù)隨后可被傳遞到池服務器以供在自動縮放操作中使用。
[0105]調度循環(huán)模塊916可負責在池虛擬機上調度作業(yè)任務。池分配管理器918負責與池相關聯(lián)的操作,諸如縮放資源、分配資源、分派作業(yè)/工作項等等,如同本文所討論的。
[0106]任務承租人管理器920是關注任務承租人本身的增長和收縮的模塊。此模塊與分布式計算系統(tǒng)結構交互以擴張/收縮根據(jù)該系統(tǒng)上的負載的任務承租人虛擬機的數(shù)量。此夕卜,構想了:任務承租人管理器920可負責維護自由重鏡像虛擬機的緩沖區(qū)以便快速轉換成任何給定池的專用虛擬機。
[0107]圖9還示出了與任務承租人相關聯(lián)的多個虛擬機。在圖9中示出的實施例中,每個虛擬機包括任務虛擬機908 (TVM)。在一實施例中,任務虛擬機908負責在虛擬機上啟動任務,以及設置任務的目錄結構和許可。任務虛擬機還配置虛擬機上的操作系統(tǒng)防火墻以例性池服務器1000的框圖。在一示例性方9 6的池服務器614。
里器模塊1002,其負責接受傳入的操作(例I擬機分配管理器模塊1004,其執(zhí)行跨越承:決定要選擇哪些任務承租人并且要為池保卜處理器模塊1006也可與池服務器相關聯(lián)。臭。此模塊持續(xù)對事務工作,直到其成功完[中并且因此在故障的情況下可跨越各種系&承租人的針對給定池分配、預留或解除分亂,構想了:自動縮放模塊1008也可與池服女組件616所討論的,該自動縮放組件1008),所述自動縮放規(guī)則針對一池自動確定專
民例性分布式計算系統(tǒng)中的各組件之間的;包括客戶端門戶1102、任務位置服務前端交該作業(yè)的附加任務。該系統(tǒng)支持針對每吹,則該系統(tǒng)可以(可能在不同虛擬機上)(具有廁任務,則該作業(yè)的附加任務可由該2被創(chuàng)建后從系統(tǒng)外提交該任務。
鋳收到添加任務請求之后,該將任務兒據(jù)放入三個作業(yè)隊列之一中。選擇哪個作(例如,僅專用、僅可搶占、或者池中的任何
給定池的虛擬機的所有任務調度器并且向通信1132中所見。用戶可在工作項創(chuàng)建期白終止整個作業(yè)。該系統(tǒng)隨后可維護此信息I輯:該III可等待關于該胃了1任務完成的」1134中的作業(yè)之后發(fā)生。當作業(yè)管理器任-示例性方面中,該廁隊列是系統(tǒng)隊列。該I勺消息之后,它們將該消息出隊((16(1116116)從該隊列接收作業(yè)管理器消息之后,II 了可、隊列條目可具有指向主任務表中的指針,任務表可具有任務狀態(tài),其可幫助13確定,則該任務可能不需要再次運行。這可在任該條目時發(fā)生。此外,構想了:可從任務表定從隊列中挑選的個項中的哪個項最
擬機信息填充在與該任務相對應的任務表皮分派一任務,則該虛擬機可以接管延長其有效地維持了任務上的承租。一旦該穩(wěn)接在運行”(或類似狀態(tài))。一旦針對該任務:運行”(或類似狀態(tài))并且派生任務過程。0應條目。如果該任務碰巧是廁任務(作業(yè)管理器完成條目。
1:理
里被類似地執(zhí)行,然而,在一示例性方面中,戶,所提交的每個任務均與一重試計數(shù)相關以使得資源可用于該JM任務的運行。這可確保該JM任務總是針對作業(yè)重啟,即便在系統(tǒng)故障的情況下。
[0132]池管理
[0133]對于每個任務帳戶,可創(chuàng)建(或關聯(lián))一個或多個池。在一示例性方面中,池中存在兩種類型的虛擬機,并且還存在與該池相關聯(lián)的待機VM預留(如同前面討論的)。該VM可以是專用VM,所述專用VM是由該任務帳戶或池為獨占利益而當前正使用的預留的VM。第二 VM可以是可搶占VM??蓳屨糣M可以是系統(tǒng)中可用于運行可搶占任務的任何非專用VM,包括被預留為待機VM的VM或者系統(tǒng)提供的任何空閑VM??墒褂每蓳屨糣M,直到系統(tǒng)需要所述可搶占VM的資源來用于其他用途為止。
[0134]在一示例性方面中,帳戶可指定池中的專用VM和待機預留VM的各自的數(shù)量。待機VM預留可被轉換為專用VM,也構想了相反的情況。該系統(tǒng)于是可為特定池保持專用和待機資源。
[0135]可將各種屬性與池相關聯(lián)。那些屬性可包括待機VM預留、專用VM的數(shù)量、VM的類型(例如,小型還是大型)、通信要求(如果作業(yè)需要跨任務通信的話)、存儲帳戶緊密度、池元數(shù)據(jù)(例如,用戶所設置的元數(shù)據(jù))、和/或開始任務信息。開始任務信息是在池的初始設置期間以及也在VM重啟時在每個池VM上運行的任務。這些屬性可至少部分定義池以及池的資源。
[0136]如同前面討論的,作業(yè)利用池(以及底層的虛擬機)來運行該作業(yè)的任務。任務在池中的專用或可搶占VM上運行。在一示例性實施例中,待機VM預留不被用來直接運行任務,而是待機VM被轉換為專用或可搶占VM。構想了各個VM的定價可以變化。例如,待機VM預留可以是預留該資源的成本最小,但是通過預留,待機VM預留可用于被快速轉換為專用或可搶占資源。專用VM可具有傳統(tǒng)的計算定價。另一方面,可搶占VM可通過競標操作來定價,競標操作允許現(xiàn)貨定價以及其他可變定價構造的概念。
[0137]池的創(chuàng)建可沿襲與以下示例性步驟類似的過程;然而,構想了替代方法。用戶可通過指定各種參數(shù)來發(fā)起池的創(chuàng)建,諸如池名稱、VM大小、存儲帳戶緊密度、跨任務通信要求、元數(shù)據(jù)等等。用戶可向TLSFE發(fā)送API請求,TLSFE隨后可將相關請求(或相同相求)轉發(fā)到正確的池服務器。在向池服務器發(fā)送請求之前,該系統(tǒng)可認證該用戶。進行接收的池服務器于是可開始具有唯一標識符的池事務。池服務器隨后可為該任務承租人生成VM預留分解以滿足專用VM的目標數(shù)量以及被保持預留為待機的VM的數(shù)量。此預留操作可包括在系統(tǒng)故障的情況下保持該事務,以便池預留可最終獲勝。池服務器于是可定期地傳遞狀態(tài)(即,心跳)更新并檢查任務調度器以保持對預留的更新。在完成該事務后,池服務器可通過以下操作來提交該事務:通知每個任務承租人提交其事務,并且隨后在每個任務承租人響應之后,移除待辦的事務。
[0138]可通過將待機VM預留轉換為專用(或反過來)來更新池。這可以通過系統(tǒng)(或用戶)提供期望數(shù)量的專用和待機VM來完成。池服務器隨后可通過用相關聯(lián)的任務承租人開始新的事務并將新的VM目標傳遞給那些任務承租人來處理池的更新。在任務承租人處,傳入的請求可通過TTFE被路由到任務調度器。如果期望的目標包括增加專用VM的數(shù)量并且預留額外的待機VM,則任務調度器將未分配的VM轉換為專用VM并減少待機計數(shù)。如果仍需要額外的專用VM,則任務調度器分配來自可搶占池的VM。如果沒有足夠的VM可工作項。例如,用戶可通過客戶端門戶提交艮統(tǒng)的任務位置服務。在一示例性方面中,笑工作項路由到該113。例如,如同前面討論地址傳遞各通信。
包括要由一個或多個虛擬機執(zhí)行的二進制例如,所述規(guī)則可例如被系統(tǒng)用來自動/或自動刪除池。所述規(guī)則可實現(xiàn)其他功勺規(guī)則。如同前面討論的,所述規(guī)則可由用息(例如,與該任務帳戶相關聯(lián)的偏好)生@關聯(lián)的任務、和/或池的性質的更廣泛的
上。如同前面討論的,作業(yè)可以通過該系統(tǒng)匸作項接收的規(guī)則/規(guī)范來創(chuàng)建該作業(yè)。在5可包括優(yōu)先級和其他計算改變信息,所述上最終實例化而無需給用戶增加負擔。力池時,將虛擬機自動分配給池以用于處理于完全不同的工作項的作業(yè)。
[0146]在框1216處,構想了:該系統(tǒng)自動刪除該池而無需用戶的干預或請求。可響應于作業(yè)或工作項的完成而刪除池。例如,可在完成每個作業(yè)之后刪除該池。此外,構想了:可在完成作業(yè)之后維護該池以供該帳戶(或另一帳戶)或工作項的未來使用。例如,如果工作項被調度為重復發(fā)生,則按照該作業(yè)重復派生的預期來維護該池并且跨越運行中的作業(yè)保持VM上的狀態(tài)(例如,數(shù)據(jù)文件和應用)是高效的。此外,構想了:使用自動縮放功能,響應于縮放規(guī)則(諸如池上的待辦任務的數(shù)量),該池可將專用VM自動轉換為待機VM或減少VM的數(shù)量。此外,構想了:可接收來自用戶的請求。該請求可包括用于刪除池的指令。
[0147]自動縮放池以及分層結構化
[0148]圖13示出圖解根據(jù)本發(fā)明的方面的一種用于在分布式計算環(huán)境中提供資源的示例性方法1300的框圖。具體而言,構想了:基于規(guī)則、要求和當前資源負載自動縮放資源池允許有效地在分布式計算環(huán)境中提供資源。如同前面討論的,池可以由系統(tǒng)(分布式計算環(huán)境)作為在其上實例化作業(yè)的資源集合來創(chuàng)建。然而,基于資源需求的變化、調度變化、以及其他變量,可能期望增加大小、減小大小、增加/減少特定的VM類型、以及調整與該池相關聯(lián)的其他變量。傳統(tǒng)上,此過程在本質上是手動的,并且依賴于人類干預來手動調整池資源水平。
[0149]構想了:可向資源(諸如池)的縮放提供自動化,以有效利用系統(tǒng)的資源。在一示例性方面中,方法1300允許池的自動縮放而無需用戶的干預。在框1302處,該系統(tǒng)自動確定與池相關聯(lián)的虛擬機的數(shù)量。所述確定可以由池服務器完成。確定數(shù)量可包括確定虛擬機的總數(shù)量或者確定特定類型的虛擬機的總數(shù)量。例如,該確定可以是要確定池中的專用VM的總數(shù)量。該確定可以從該系統(tǒng)的一個或多個組件/模塊所維護的表或其他列表做出。例如,構想了:池服務器可維護具有該池所使用的虛擬機的那些任務承租人的列表。類似地,構想了:任務承租人可維護池所使用的VM的列表(例如,任務調度器可維護這種信息)。因此,該確定可以通過參考該系統(tǒng)內已經(jīng)維護的信息的一個或多個源來做出。
[0150]在框1304處,應用自動縮放規(guī)則以調整與該池相關聯(lián)的虛擬機的數(shù)量。例如,構想了:總的VM的數(shù)量被減少或增加。而且,構想了:特定類型的VM(例如,專用VM)的數(shù)量被增加或減少。如同先前討論的,自動縮放規(guī)則可包括幫助確定池的大小/組成的一個或多個偏好。例如,自動縮放規(guī)則可包括用于基于當前池統(tǒng)計數(shù)據(jù)和調度作業(yè)來確定優(yōu)化的池的一個或多個公式。自動縮放規(guī)則可將關于系統(tǒng)的帳戶度量納入考慮,諸如作業(yè)隊列統(tǒng)計數(shù)據(jù)(例如,等待運行的待辦任務、入隊速率、出隊速率、任務完成速率等)、現(xiàn)貨定價信息、可用資源、資源的效率等等。此外,構想了自動縮放規(guī)則還可將工作項、作業(yè)、和/或任務的期望完成時間納入考慮。此外,構想了:自動縮放規(guī)則可將被優(yōu)選花費的期望金融資源(例如,依賴于以比專用VM成本低的可搶占VM)納入考慮。
[0151]作為應用自動縮放規(guī)則來調整與該池相關聯(lián)的虛擬機的數(shù)量的結果,該系統(tǒng)可動態(tài)分配該池的一個或多個虛擬機,如在框1306所指示的。VM的動態(tài)分配可包括添加一個或多個VM、移除一個或多個VM、改變一個或多個VM的類型。例如,自動縮放規(guī)則的應用可導致將作為專用VM的一個或多個虛擬機添加到該池。此外,構想了:該分配可包括將空閑的或可搶占的VM轉換為專用VM并減少待機計數(shù)。還構想了其他分配
[0152]分配的動態(tài)特性與執(zhí)行分配而無需用戶干預的系統(tǒng)有關。例如,構想了:可按間隔(例如,時間間隔、進程計數(shù)間隔)來應用自動縮放規(guī)則。作為自動運行自動縮放規(guī)則的結果,在此示例性方面中,資源的分配可在分配時無需用戶請求的情況下或者作為請求執(zhí)行分配的用戶輸入的直接結果而發(fā)生。
[0153]圖14示出圖解根據(jù)本發(fā)明的方面的一種用于在分布式計算環(huán)境中提供資源的方法1400的框圖。如同前面針對圖13討論的,構想了:在應用到池時自動縮放規(guī)則的利用和應用允許在分布式計算環(huán)境中提供資源。
[0154]在框1402,從用戶接收工作項。該用戶可通過API傳遞工作項,這可經(jīng)由客戶端門戶到系統(tǒng)的高等級位置服務。工作項可與特定任務帳戶相關聯(lián),該任務帳戶可具有與其相關聯(lián)的帳戶偏好。在框1404,從用戶接收自動縮放規(guī)則。自動縮放規(guī)則可提供針對以下方面的用戶偏好:完成該工作項的時間、該工作項的優(yōu)先級、優(yōu)選的金融資源花費(例如,相對于專用VM優(yōu)選可搶占VM)。自動縮放規(guī)則還可包括一個或多個公式,所述一個或多個公式利用一個或多個與池相關聯(lián)的度量來幫助響應于對池的需求縮放池。
[0155]在框1406,將位于第一數(shù)據(jù)中心中的第一 VM分配給池。該虛擬機的分配可包括將虛擬機作為該池內可用的資源添加。在一示例性方面中,將第一 VM自動分配到第一池。這是在無需指示VM要包括在池中(更別提哪個VM以及哪個池)的用戶干預的情況下完成的。例如,過去可能要求用戶通過標識要包括在池中的資源來建立池。資源的標識可包括標識VM的數(shù)量以及從何處分派VM。在此示例中,系統(tǒng)自行標識池要被創(chuàng)建且多個VM要被分配給該池以便該池滿足期望性能或操作性質。
[0156]在框1408,將第二虛擬機分配給第一池。第二 VM處于第二數(shù)據(jù)中心中,該第二數(shù)據(jù)中心與第一數(shù)據(jù)中心在地理上分開。在一示例性方面中,該第二 VM可來自處于同一數(shù)據(jù)中心中、但是出于不同任務承租人中的一組VM資源。構想了:第二 VM被自動分配給第一池而無需用戶干預。這種自動化(以及該系統(tǒng)在無需用戶干預的情況下執(zhí)行的其他自動化任務)合并了原本在用戶被允許干預時不會被利用的過程和步驟。例如,在本發(fā)明的一示例性實施例內構想了關于要將哪個VM分配給第一(或任意)池的判斷。
[0157]第一任務承租人和第二任務承租人可以是伺服該系統(tǒng)的物理上獨立的數(shù)據(jù)中心(或處于共同的數(shù)據(jù)中心中)。例如,構想了:第一任務承租人可位于第一地理位置(例如,在特定地址、城市、州、地區(qū)、國家、和/或洲)。在一個示例中,構想了:第一任務承租人位于美利堅合眾國的第一區(qū)域(例如,美國西部)而第二任務承租人位于美利堅合眾國的一不同區(qū)域(例如,美國東部)。在此示例中,第一任務承租人和第二任務承租人能夠由共同的或不同的任務位置服務來尋址。這允許池的自動縮放而無需用戶對跨越不同的數(shù)據(jù)中心增長池(或減小池)的復雜事項進行干預。例如,構想了:物理限制先前可能已經(jīng)阻止了池擴張到一物理數(shù)據(jù)中心的大小范圍之外。解除作業(yè)和池的概念與本地VM資源控制下的調度器(任務承租人)的耦合允許池及其作業(yè)擴展以包括兩個或更多個數(shù)據(jù)中心中的資源,而不需要用戶編程或以其他方式干預系統(tǒng)來允許這種擴張。因此,構想了:基于系統(tǒng)自動處理池的擴張,用戶可以設計能夠跨越數(shù)十億個VM并且跨越若干個VM來縮放的工作項。
[0158]在框1410,在第一虛擬機和第二虛擬機上實例化該工作項。工作項的實例化可包括任務承租人中的調度器從隊列中拉走任務并將其分派到一 VM。工作項的實例化還可包括在該虛擬機上調度來自該工作項的任務。實例化還可包括虛擬機從隊列拉取任務以處理該任務。實例化還可包括在該虛擬機處處理任務。因此,工作項的實例化可包括導致該工作項的一部分(例如,任務)被VM處理的任何方面。
[0159]通過將該工作項的作業(yè)實例化到具有第一 VM和第二 VM兩者的池,該工作項由跨越多個數(shù)據(jù)中心縮放的池處理而用戶無需更改該工作項來實現(xiàn)這一結果。因此,構想了:能夠在單一任務承租人所服務的池上運行的同一工作項,也可在無需用戶干預的情況下,在跨越多個離散的任務承租人和數(shù)據(jù)中心的池上運行。
[0160]在框1412,向池應用自動縮放規(guī)則。在一示例性方面中,在無需用戶干預的情況下,該系統(tǒng)自動啟動自動縮放功能。自動縮放規(guī)則可將以下各項納入考慮:當前正被使用的資源、被調度以提交的資源、以及該池所必需的資源、在被分派到該池的作業(yè)的隊列中的待辦工作的量、任務、作業(yè)等等。結合起來,自動縮放規(guī)則允許該池擴張、收縮和改變VM類型。
[0161]例如,構想了:如果向該作業(yè)添加附加的任務,或者用于處理該作業(yè)的時間超出初始預測,則可利用自動縮放規(guī)則來確定將需要多少附加資源來完成該作業(yè)。類似地,構想了:調用自動縮放規(guī)則可導致以下確定:該池中的VM的數(shù)量可能是過剩的并且那些資源中的一部分可以被轉換或丟棄。例如,基于自動縮放規(guī)則,可將專用VM轉換為可搶占甚至是待機VM預留。此外,構想了:作為被應用的自動縮放規(guī)則的確定的結果,可以將一 VM從該池完全釋放。
[0162]在框1414處,進行與池相關聯(lián)的一個或多個VM的重新分配。例如,如果自動縮放規(guī)則確定可將一專用VM從該池釋放,則可將該專用VM從該池放出。類似地,如果自動縮放規(guī)則確定可用VM的數(shù)量不足以實現(xiàn)所需結果(例如,及時完成作業(yè)),則可向該池分配一個或多個額外的VM以用于完成隊列中的或尚未入隊的待辦任務。此外,如同前面討論的,構想了:在一示例性方面中,一個或多個VM的重新分配可包括將VM從第一類型轉換為第二類型。在一示例性方面中,此重新分配被構想為至少部分由與該池相關聯(lián)的池服務器來執(zhí)行。
[0163]解耦的資源、調度和作業(yè)
[0164]資源、調度、和作業(yè)的解耦允許作業(yè)從一個資源池到另一資源池繼續(xù)執(zhí)行。例如,此功能可在跨越不同的計算資源遷移工作并且對工作進行負載平衡時使用。在一具體示例中,如果特定數(shù)據(jù)中心故障(例如,自然災害),則可將該工作遷移到新的數(shù)據(jù)中心來完成該作業(yè)。而且,構想了:資源、調度和作業(yè)的解耦允許作業(yè)跨越若干資源池和調度執(zhí)行,這可允許該作業(yè)實現(xiàn)高度的縮放性,這樣的縮放性否則將是不能獲得的。此外,構想了:池跨越多個調度器、任務承租人、和/或數(shù)據(jù)中心,這允許被分派給該池的作業(yè)也跨越那些資源。
[0165]在一示例性方面中,解耦構想了利用系統(tǒng)中的三個單獨的概念。第一個概念基于虛擬機池的概念。第二個概念是圍繞作業(yè)管理、作業(yè)狀態(tài)、以及作業(yè)隊列形成的。第三個概念涉及調度器(例如,圖9的作業(yè)調度器902)以及這些調度器負責針對這些池將對其調度所分派的作業(yè)的VM。這些概念允許基于多承租關系分布式計算系統(tǒng)的負載平衡需求來對作業(yè)、調度器和池的靈活的重新分派。而且,構想了:這三個概念還允許災難恢復。
[0166]圖15示出圖解根據(jù)本發(fā)明的方面的一種用于在分布式計算環(huán)境中提供解耦的資源、調度以及作業(yè)的方法1500的框圖。在框1502,在系統(tǒng)處接收工作項。例如,可利用在與提交工作項的帳戶相關聯(lián)的任務虛擬IP地址來在任務位置服務處接收工作項??蓮脑摴ぷ黜梽?chuàng)建作業(yè),如在框1504中所示。在一示例性實施例中,作業(yè)創(chuàng)建是工作項應當作為作業(yè)被處理的標識。
[0167]在框1506,將虛擬機分配給第一池。例如,構想了:池服務器可將該VM分配誒第融交易日的開始)利用資源。在此示例中,電國西部地理區(qū)域的資源負擔更重。因此,\考慮,該負載平衡過程也可確定將該作業(yè)在框1514處所示。遷移不限于“擁有權”的,其是將該作業(yè)分派到多個池。此外,遷移9結果,用戶具有作業(yè)正在被單一池執(zhí)行的租人的時候。
5釋放隊列中的任務的承租,以便不同池中中,構想了:作業(yè)的遷移需要將工作項重新勺資源相關聯(lián)地進行重新創(chuàng)建和調度。作業(yè):到第二池。在框1516處,示出作業(yè)在第二:池上運行。第一池的調度器可以是與第一第二池的調度器可以是與第二池相關聯(lián)的:不將工作項/作業(yè)綁定到單一池或單一調??!相關聯(lián)的資源出現(xiàn)故障。
,構想了:任務承租人的任務調度器是與該他優(yōu)點。
1的,并且可以加以利用而無需參考其它特要求的范圍內。
【權利要求】
1.一種用于在分布式計算環(huán)境中提供資源的計算機實現(xiàn)的方法,包括: 從用戶接收工作項; 從所述工作項創(chuàng)建作業(yè); 利用處理器和存儲器,自動地向第一池分配至少第一虛擬機; 在所述第一池上調度所述作業(yè); 在所述第一池上啟動所述作業(yè); 將所述作業(yè)重新分派給第二池,所述第二池包括至少第二虛擬機;以及 在所述第二池上啟動所述作業(yè)。
2.如權利要求1所述的方法,其特征在于,在所述第一池上調度所述作業(yè)是至少部分利用第一調度器執(zhí)行的,所述第一調度器不被用來在所述第二池上調度所述作業(yè)。
3.如權利要求1所述的方法,其特征在于,所述作業(yè)的重新分派是響應于所述第一池內的所檢測到的故障的。
4.如權利要求1所述的方法,其特征在于,所述作業(yè)的重新分派允許所述作業(yè)在所述第二池上繼續(xù)。
5.如權利要求1所述的方法,其特征在于,所述作業(yè)的重新分派是響應于所述第一池的負載平衡確定的。
6.如權利要求1所述的方法,其特征在于,重新分派所述作業(yè)允許將所述作業(yè)從所述第一池遷移到所述第二池而無需用戶干預。
7.一個或多個存儲計算機可用指令的計算機存儲介質,所述計算機可用指令在被具有處理器和存儲器的計算設備執(zhí)行時執(zhí)行一種用于在分布式計算環(huán)境中提供資源的方法,所述方法包括: 利用第一調度器,在所述分布式計算環(huán)境的第一資源池上調度作業(yè); 在所述第一池上啟動所述作業(yè); 在無需用戶干預的情況下,確定所述作業(yè)要從所述分布式計算環(huán)境內的所述第一池遷移到第二池; 利用使用處理器和存儲器的第二調度器,自動在所述第二池上調度所述作業(yè);以及 在所述第二池上啟動所述作業(yè)。
8.如權利要求7所述的計算機存儲介質,其特征在于,所述第一池和所述第二池是通過高等級位置服務選擇的,所述高等級位置服務與和所述第一調度器相關聯(lián)的任務位置服務通信并與和所述第二調度器相關聯(lián)的任務位置服務通信。
9.如權利要求7所述的計算機存儲介質,其特征在于,與所述作業(yè)相關聯(lián)的任務的一部分遷移到所述第二池而與所述任務的另一部分繼續(xù)在所述第一池上被調度。
10.一種用于在分布式計算環(huán)境中提供資源的計算機實現(xiàn)的方法,包括: 在任務位置服務處,從與所述分布式計算環(huán)境中的任務帳戶相關聯(lián)的用戶接收工作項; 利用與所述任務位置服務相關聯(lián)的池服務器,將所述分布式計算環(huán)境的第一虛擬機自動分配給第一池; 在所述第一池上調度第一作業(yè),其中所述第一作業(yè)包括與所述工作項相關聯(lián)的一個或多個任務;基于所述第一池的負載平衡評估,自動確定所述作業(yè)要遷移到所述分布式計算環(huán)境內的第二池; 將與所述工作項相關聯(lián)的至少一個任務遷移到所述第二池;以及 在所述第二池的一個或多個資源上 調度所述至少一個任務。
【文檔編號】G06F15/16GK104040486SQ201380005092
【公開日】2014年9月10日 申請日期:2013年1月7日 優(yōu)先權日:2012年1月9日
【發(fā)明者】B·G·卡爾德, J·王, V·貝德卡, S·??ㄌm, M·米克尼特二世, P·K·貢達, Y·張, S·安東尼, K·曼尼瓦納, A·E·紹爾斯沃德, H·卡特里 申請人:微軟公司