国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      管理由多個計(jì)算系統(tǒng)執(zhí)行程序的制作方法

      文檔序號:6517733閱讀:238來源:國知局
      管理由多個計(jì)算系統(tǒng)執(zhí)行程序的制作方法
      【專利摘要】說明了用于管理程序在多個計(jì)算系統(tǒng)(諸如被組織成多個組的計(jì)算系統(tǒng))上的執(zhí)行的技術(shù)。程序執(zhí)行服務(wù)代表多個客戶或其它用戶管理程序的執(zhí)行,并例如部分基于先前存儲的程序的一個以上的副本的、可以從中獲取所要執(zhí)行的程序的副本位置,選擇合適的計(jì)算系統(tǒng)來執(zhí)行程序的一個以上的實(shí)例。舉例而言,在某些情況下,選擇合適的用以執(zhí)行程序?qū)嵗?jì)算系統(tǒng)是部分基于是否在物理或邏輯上同其它資源(如程序的存儲副本、正在執(zhí)行的程序的副本、和/或可用計(jì)算系統(tǒng))相鄰的方式實(shí)現(xiàn)的。
      【專利說明】管理由多個計(jì)算系統(tǒng)執(zhí)行程序
      [0001]分案申請說明
      [0002]本申請是申請日為2007年3月29日、申請?zhí)枮?00780020255.2 (國際申請?zhí)朠CT/US2007/007601)的、題為“管理由多個計(jì)算系統(tǒng)執(zhí)行程序”的發(fā)明專利申請的分案申請。
      【技術(shù)領(lǐng)域】
      [0003]以下公開主要涉及管理程序在多個計(jì)算機(jī)系統(tǒng)上的執(zhí)行,諸如通過在計(jì)算系統(tǒng)組之間以支持高效地獲取被執(zhí)行的程序副本的方式來交換程序副本。
      【背景技術(shù)】
      [0004]容納大量互聯(lián)計(jì)算系統(tǒng)的數(shù)據(jù)中心目前已十分常見,此類數(shù)據(jù)中心的示例包括:由單個組織以及代表單個組織運(yùn)營的私有數(shù)據(jù)中心,以及由實(shí)體(如企業(yè))運(yùn)營的、在多種商業(yè)模式下為客戶提供對計(jì)算資源的訪問權(quán)限的公共數(shù)據(jù)中心。舉例而言,某些公共數(shù)據(jù)中心的運(yùn)營商為客戶所擁有的各種硬件提供網(wǎng)絡(luò)訪問、功能,以及安全安裝設(shè)施,而其它公共數(shù)據(jù)中心的運(yùn)營商則提供“全套服務(wù)”設(shè)施,后者還包括運(yùn)營商的客戶所使用的實(shí)際硬件資源。然而,由于通常的數(shù)據(jù)中心的規(guī)模和范圍不斷擴(kuò)大,供應(yīng)、管理物理計(jì)算資源的任務(wù)變得越來越為復(fù)雜。
      [0005]商品硬件虛擬化技術(shù)的出現(xiàn)為對管理具有不同需求的大量客戶的大規(guī)模計(jì)算資源的問題提供了部分的解決方案。概況地說,虛擬化技術(shù)使多個客戶能夠有效和安全地共享各種計(jì)算資源。舉例而言,諸如由VMWare、XEN、或User-Mode Linux提供的虛擬化技術(shù)使單個物理計(jì)算機(jī)能在多個用戶之間共享。具體而言,可以為各個用戶提供一個以上由單個物理計(jì)算機(jī)所寄居(hosted)的虛擬機(jī),作為軟件模擬的各虛擬機(jī)起獨(dú)立邏輯計(jì)算系統(tǒng)的作用。各虛擬機(jī)使用戶感到自己是給定硬件計(jì)算資源的唯一操作者和管理者,同時還在各種虛擬機(jī)之間提供應(yīng)用程序隔離和安全功能。此外,某些虛擬化技術(shù)能夠提供跨一個以上物理資源的虛擬資源,例如,單個虛擬機(jī)可以具有多個實(shí)際上跨多個獨(dú)立物理計(jì)算系統(tǒng)的多個虛擬處理器。
      [0006]然而,在數(shù)據(jù)中心以虛擬或物理的方式寄居了大量針對一組不同客戶的應(yīng)用程序或系統(tǒng)的情況下,將產(chǎn)生一個問題,該問題涉及管理軟件應(yīng)用程序副本的存儲、分發(fā)、以及獲取。舉例而言,應(yīng)用程序可能很大,以至于(即使并非不可能)利用足夠的存儲資源來存儲數(shù)據(jù)中心中的每個計(jì)算系統(tǒng)上的每個寄居應(yīng)用程序的本地副本的代價(jià)是很高的。然而,如果可選地維護(hù)一個頻繁向數(shù)據(jù)中心中需要執(zhí)行那些應(yīng)用程序的各計(jì)算系統(tǒng)發(fā)送應(yīng)用程序副本的集中存儲位置,那么就網(wǎng)絡(luò)帶寬資源而言這種方式的代價(jià)也是很高的。以這種可選方式,網(wǎng)絡(luò)帶寬將被應(yīng)用程序復(fù)制傳輸獨(dú)占,并且將會使正在執(zhí)行的應(yīng)用程序無法為其正常工作獲得足夠的網(wǎng)絡(luò)帶寬。此外,在等待應(yīng)用程序副本傳輸?shù)裙ぷ魍瓿蓵r,會對應(yīng)用程序的執(zhí)行引入很大的啟動時延等。此類問題可能因其它因素(如頻繁引入所要執(zhí)行的新應(yīng)用程序和/或頻繁部署應(yīng)用程序的后續(xù)版本)而進(jìn)一步加劇。
      [0007]因此,鑒于這些問題,以有效的方式向執(zhí)行應(yīng)用程序的計(jì)算系統(tǒng)提供用于分發(fā)應(yīng)用程序副本的技術(shù)以及提供各種其他優(yōu)勢是十分有益的。
      【專利附圖】

      【附圖說明】
      [0008]圖1是一幅網(wǎng)絡(luò)圖,示出了多個計(jì)算系統(tǒng)在其中交換和執(zhí)行程序的示例實(shí)施例。
      [0009]圖2示出了存儲和交換程序副本的多組計(jì)算系統(tǒng)的示例。
      [0010]圖3是一幅框圖,示出了適于管理程序在多個計(jì)算系統(tǒng)上的執(zhí)行的計(jì)算系統(tǒng)的示例。
      [0011]圖4A-4B示出了系統(tǒng)管理器模塊的工作過程的實(shí)施例的流程圖。
      [0012]圖5示出了機(jī)器管理器模塊的工作過程的實(shí)施例的流程圖。
      [0013]圖6示出了程序執(zhí)行服務(wù)客戶的工作過程的實(shí)施例的流程圖。
      【具體實(shí)施方式】
      [0014]下面對用于對在多個計(jì)算系統(tǒng)上執(zhí)行程序進(jìn)行管理的技術(shù)予以說明。在某些實(shí)施例中,所述技術(shù)是代表程序執(zhí)行服務(wù)執(zhí)行的,所述程序執(zhí)行服務(wù)用于代表該服務(wù)的多個用戶(例如,客戶)執(zhí)行多個程序。在某些實(shí)施例中,程序執(zhí)行服務(wù)可以利用多種因素(如選定計(jì)算系統(tǒng)可以從中獲取所要執(zhí)行的程序和/或用以執(zhí)行程序?qū)嵗目捎糜?jì)算資源的副本的、先前存儲的一個以上的程序副本的位置),以選擇合適的計(jì)算系統(tǒng)來執(zhí)行程序?qū)嵗?。舉例而言,在某些實(shí)施例中,可以部分基于對已存儲了程序的本地副本的計(jì)算系統(tǒng)的判斷,來選擇合適的計(jì)算系統(tǒng)來執(zhí)行程序?qū)嵗T诹硪粚?shí)施例中,可以部分基于對與每個存儲了這樣一個本地副本的一個以上的計(jì)算系統(tǒng)(在物理上和/或邏輯上)足夠鄰近的計(jì)算系統(tǒng)(如與確定的計(jì)算系統(tǒng)屬于同一組的一個以上的其它計(jì)算系統(tǒng))的判斷,來選擇合適的計(jì)算系統(tǒng)。
      [0015]在某些實(shí)施例中,可用于執(zhí)行程序的多個計(jì)算系統(tǒng)可以包括通過能夠在計(jì)算機(jī)之間交換數(shù)據(jù)的一個以上網(wǎng)絡(luò)或其它數(shù)據(jù)交換媒介相互連接的多個物理計(jì)算機(jī)。多個計(jì)算系統(tǒng)可以,例如,位于同一物理位置(例如,數(shù)據(jù)中心),還可以被分成多個組,并且可以由一個以上的系統(tǒng)管理器模塊以及由多個機(jī)器管理器模塊加以管理,所述系統(tǒng)管理器模塊總體負(fù)責(zé)所述多個計(jì)算系統(tǒng),所述機(jī)器管理器模塊各與一組相關(guān),以管理各組中的計(jì)算系統(tǒng)。至少某些計(jì)算機(jī)可以分別包含足夠的資源(例如,足夠的可寫內(nèi)存和/或一個以上的足夠的內(nèi)存、CPU周期、或其它CPU使用度量、網(wǎng)絡(luò)帶寬、交換空間等),以同時執(zhí)行多個程序。舉例而言,在某些此類實(shí)施例中至少某些計(jì)算機(jī)可以分別寄居多個虛擬機(jī)節(jié)點(diǎn),所述虛擬機(jī)節(jié)點(diǎn)可以分別為獨(dú)立用戶執(zhí)行一個以上的程序。如前所述,至少在某些實(shí)施例中,可以諸如基于在物理或邏輯上十分接近、或具有公共數(shù)據(jù)交換媒介等準(zhǔn)則,將受程序執(zhí)行服務(wù)管理的多個計(jì)算系統(tǒng)組織成多個獨(dú)立的組(例如,每個計(jì)算機(jī)屬于一個單獨(dú)的組)。在一示例中,組的公共數(shù)據(jù)交換媒介可由在組中的計(jì)算系統(tǒng)之間提供高帶寬通信的單個網(wǎng)絡(luò)交換機(jī)和/或機(jī)架背板予以提供(例如,與網(wǎng)絡(luò)交換機(jī)或機(jī)架背板相連接的部分或全部計(jì)算系統(tǒng)可以是組中的成員)。每組計(jì)算系統(tǒng)還可以通過一個以上其它數(shù)據(jù)交換媒介(例如與組的公共數(shù)據(jù)交換媒介相比帶寬較低的其它數(shù)據(jù)交換媒介(例如,基于以太網(wǎng)的配線、無線連接,或其它數(shù)據(jù)連接))與其它計(jì)算系統(tǒng)(例如,其它組的計(jì)算系統(tǒng),或不受程序執(zhí)行服務(wù)管理的遠(yuǎn)程計(jì)算系統(tǒng))相連接。此外,至少在某些實(shí)施例中,某些或全部計(jì)算系統(tǒng)可以分別具有本地程序儲存庫(例如,硬盤或其它本地存儲機(jī)制),所述程序儲存庫可用于例如在執(zhí)行程序之前或執(zhí)行程序時,存儲執(zhí)行所需的程序的本地副本。此外,至少在某些實(shí)施例中,每組多個計(jì)算系統(tǒng)可以使用該組中的一個以上的計(jì)算系統(tǒng)來存儲程序的本地副本,以供組中其它計(jì)算系統(tǒng)使用。
      [0016]在一說明性實(shí)施例中,程序執(zhí)行服務(wù)可以包括執(zhí)行于一個以上的計(jì)算系統(tǒng)上的軟件設(shè)施,以管理程序的執(zhí)行。軟件設(shè)施可以包括一個以上的為各組一個以上的計(jì)算系統(tǒng)所用的機(jī)器管理器模塊,所述機(jī)器管理器模塊管理該組中計(jì)算系統(tǒng)的程序獲取、程序存儲以及程序執(zhí)行。舉例而言,可以為各獨(dú)立物理計(jì)算機(jī)配備獨(dú)立的機(jī)器管理器模塊,例如物理計(jì)算機(jī)的機(jī)器管理器模塊可以執(zhí)行于該計(jì)算機(jī)的至少一個虛擬機(jī)上。此外,在某些實(shí)施例中,軟件設(shè)施可以包括一個以上執(zhí)行于一個以上的計(jì)算系統(tǒng)上的系統(tǒng)管理器模塊,所述系統(tǒng)管理器模塊為正在用于執(zhí)行程序的全部的多個計(jì)算系統(tǒng)管理程序的獲取、存儲以及執(zhí)行。如以下將更為詳細(xì)地予以討論的那樣,系統(tǒng)管理器模塊可以適當(dāng)?shù)赝瑱C(jī)器管理器模塊進(jìn)行交互。
      [0017]至少在某些實(shí)施例中,可以對請求立即執(zhí)行程序?qū)嵗漠?dāng)前執(zhí)行請求予以響應(yīng),開始在一個以上計(jì)算系統(tǒng)上執(zhí)行程序的一個以上的實(shí)例??蛇x地,執(zhí)行的啟動可以基于,先前接收到的、預(yù)定或保留在將來(當(dāng)前時刻)執(zhí)行這些程序?qū)嵗某绦驁?zhí)行請求??梢酝ㄟ^多種方式(如直接從用戶(例如,通過由程序執(zhí)行服務(wù)提供的交互式控制臺或其它GUI),或從自動啟動其它程序或其自身的一個以上實(shí)例(例如,通過由程序執(zhí)行服務(wù)提供的API (或應(yīng)用程序接口),如使用Web服務(wù)的API)的執(zhí)行的用戶執(zhí)行程序)接收程序執(zhí)行請求。
      [0018]程序執(zhí)行請求可以包括多種在啟動執(zhí)行一個以上的程序?qū)嵗^程中所用的信息(如先前注冊的或供未來執(zhí)行的程序的指示,以及需要同時執(zhí)行的程序?qū)嵗臄?shù)量,如表示為一個單獨(dú)的實(shí)例的期望數(shù)量、期望實(shí)例的最小和最大數(shù)量,等)。此外,在某些實(shí)施例中,程序執(zhí)行請求可以包括多種其它類型的信息,諸如:用戶賬戶的指示、或先前注冊的用戶的其它指示(例如,用于識別先前存儲的程序和/或判斷是否所請求的程序?qū)嵗欠竦玫绞跈?quán)的指示);付費(fèi)源的指示,用于向程序執(zhí)行服務(wù)付款,以執(zhí)行程序?qū)嵗怀绦驅(qū)嵗龍?zhí)行的預(yù)先付款或其它授權(quán)的指示(例如,事先購買的對一段時間、程序執(zhí)行實(shí)例的數(shù)目、資源使用量等的有效預(yù)訂);和/或需要立即執(zhí)行和/或存儲起來以備稍后執(zhí)行的程序的可執(zhí)行或其它副本。此外,在某些實(shí)施例中,程序執(zhí)行請求還可以包括許多其它類型的、對執(zhí)行一個以上的程序?qū)嵗钠煤?或要求。此類偏好和/或要求可以包括:對于需要在特定地理和/或邏輯位置中(如在容納有多個可用計(jì)算機(jī)的多個數(shù)據(jù)中心中的一個數(shù)據(jù)中心中、在彼此鄰近的多個計(jì)算系統(tǒng)中、和/或在與執(zhí)行一個以上其它所指示的程序?qū)嵗?例如,同一程序或其它程序的實(shí)例)的計(jì)算系統(tǒng)相鄰近的一個以上的計(jì)算系統(tǒng)中)執(zhí)行的某些或全部程序?qū)嵗闹甘尽4祟惼煤?或要求還可以包括:對在執(zhí)行過程中各自被分配以所指示的資源的某些或全部程序?qū)嵗闹甘尽?br> [0019]在一所指示的時刻接收到請求執(zhí)行程序的一個以上的實(shí)例之后,程序執(zhí)行服務(wù)就確定用于執(zhí)行程序?qū)嵗囊粋€以上的計(jì)算系統(tǒng)。在某些實(shí)施例中,確定所用計(jì)算系統(tǒng)是在請求的時刻執(zhí)行的,即使程序?qū)嵗趯韴?zhí)行也是如此。在其它實(shí)施例中,可以推遲到稍后的時間再確定將來執(zhí)行程序的一個以上的程序?qū)嵗玫挠?jì)算系統(tǒng),例如可以基于那時的可用信息來確定將來的執(zhí)行時刻??梢酝ㄟ^多種方式(包括(例如,在預(yù)先注冊的時刻)基于在程序請求中指定或者為程序和/或相關(guān)用戶指定的任何偏好和/或要求)來確定使用哪個計(jì)算系統(tǒng)來執(zhí)行各個程序?qū)嵗?。舉例而言,如果為執(zhí)行程序?qū)嵗钠煤?或要求的資源確定了準(zhǔn)則,那么可以至少部分基于計(jì)算系統(tǒng)是否具有足夠的可用來滿足這些資源準(zhǔn)則的資源,來確定合適的用于執(zhí)行程序?qū)嵗挠?jì)算系統(tǒng)。
      [0020]在某些實(shí)施例中,程序執(zhí)行服務(wù)可以根據(jù)所要執(zhí)行的一個以上的先前存儲的程序副本的位置,來確定使用哪個計(jì)算系統(tǒng)來執(zhí)行要執(zhí)行的程序。具體而言,如前所述,至少在某些實(shí)施例中,可用于執(zhí)行程序的多個計(jì)算系統(tǒng)可以被組織成組(諸如各個計(jì)算系統(tǒng)可以屬于多組之一)。因此,判斷計(jì)算系統(tǒng)是否適合用于執(zhí)行程序的實(shí)例可以部分基于是否那個計(jì)算系統(tǒng)的組中一個以上的計(jì)算系統(tǒng)存儲了程序的本地副本。通過選擇已在本地存儲了程序副本的計(jì)算系統(tǒng)或?qū)儆诰哂幸粋€以上的本地儲存副本的組的計(jì)算系統(tǒng)來執(zhí)行程序?qū)嵗?,可以獲得各種好處,例如基于獲取程序副本來減少程序執(zhí)行啟動時延。盡管組內(nèi)的一個計(jì)算系統(tǒng)存儲了要執(zhí)行的程序的本地副本,然而由于多種原因(例如,如果具有本地存儲副本的計(jì)算系統(tǒng)當(dāng)前沒有足夠的資源來執(zhí)行程序?qū)嵗绻哂斜镜卮鎯Ω北镜挠?jì)算系統(tǒng)正在執(zhí)行一個以上的程序?qū)嵗?,等?,程序執(zhí)行服務(wù)可以選擇組內(nèi)的一個以上的其它計(jì)算系統(tǒng)在當(dāng)前執(zhí)行程序?qū)嵗?br> [0021]在又一實(shí)施例中,程序執(zhí)行服務(wù)可以根據(jù)各種其它因素,來選擇一個以上的計(jì)算系統(tǒng)來執(zhí)行程序?qū)嵗Ee例而言,當(dāng)用戶請求同時執(zhí)行所指示的程序的多個實(shí)例時,程序執(zhí)行服務(wù)可能選擇將程序?qū)嵗膱?zhí)行分布在屬于不同組的計(jì)算系統(tǒng)間,以例如在特定組網(wǎng)絡(luò)中斷或發(fā)生其它問題的情況下提供增強(qiáng)的可靠性。類似地,在某些實(shí)施例中,(即使單個計(jì)算系統(tǒng)具有足夠的資源來執(zhí)行多個實(shí)例),也可以在多個計(jì)算系統(tǒng)上而不是單個計(jì)算系統(tǒng)上執(zhí)行程序的多個實(shí)例。這種程序?qū)嵗姆植伎梢?,例如,在?zhí)行程序所有實(shí)例的單個計(jì)算系統(tǒng)失敗或同該單個計(jì)算系統(tǒng)失去連接的情況下,提供增強(qiáng)的可靠性。此外,如果受程序執(zhí)行服務(wù)管理的計(jì)算系統(tǒng)在物理(例如,地理上)是分開的,程序執(zhí)行服務(wù)可由用戶指示,或優(yōu)選在位于單個數(shù)據(jù)中心內(nèi)的計(jì)算系統(tǒng)上執(zhí)行程序的多個實(shí)例,以例如為執(zhí)行程序的實(shí)例間的通信提供相對較高的網(wǎng)絡(luò)帶寬??蛇x地,(例如如果程序?qū)嵗龓缀醪淮嬖谙嗷ネㄐ?,?或如果多個程序?qū)嵗С侄鄠€在地理上分散的獨(dú)立的終端用戶或應(yīng)用程序),程序執(zhí)行服務(wù)可以接受指示,或優(yōu)選在多個獨(dú)立的數(shù)據(jù)中心中執(zhí)行多個程序?qū)嵗?br> [0022]在程序執(zhí)行服務(wù)確定了用于執(zhí)行程序?qū)嵗囊粋€以上計(jì)算系統(tǒng)之后,程序執(zhí)行服務(wù)可以通過多種方式啟動這些程序?qū)嵗膱?zhí)行。舉例而言,系統(tǒng)管理器模塊可以向選定的計(jì)算系統(tǒng)提供指令或各種其它執(zhí)行信息。例如,此類其它信息可以包括:對存儲或可能存儲了程序的本地副本的一個以上其它計(jì)算機(jī)的指示。向選定的計(jì)算系統(tǒng)提供的其它類型的信息可以包括:關(guān)于程序?qū)嵗龍?zhí)行時長的指示、關(guān)于分配給程序?qū)嵗馁Y源的指示、向程序?qū)嵗峁┑脑L問權(quán)限的指示、對如何管理程序?qū)嵗膱?zhí)行的任何限制(例如,(如果存在的話)用于使程序?qū)嵗軌蜻M(jìn)行發(fā)送或接收的通信的類型)的指示等。
      [0023]在選定的計(jì)算系統(tǒng)獲知應(yīng)執(zhí)行所指示的程序的一個以上實(shí)例之后,選定的計(jì)算系統(tǒng)嘗試根據(jù)任何接收到的指令或其它相關(guān)信息(例如,預(yù)先定義的偏好或要求)執(zhí)行程序?qū)嵗?。至少在某些?shí)施例中,程序執(zhí)行通知可以由與選定的計(jì)算系統(tǒng)相關(guān)的機(jī)器管理器模塊(例如,在選定計(jì)算系統(tǒng)上執(zhí)行的機(jī)器管理器模塊,或代表選定計(jì)算系統(tǒng)所屬的組執(zhí)行的機(jī)器管理器模塊)接收。在此類實(shí)施例中,機(jī)器管理器模塊可用于管理程序?qū)嵗膱?zhí)行。舉例而言,在選定計(jì)算系統(tǒng)未存儲所要執(zhí)行的所指示的程序的本地副本的情況下,機(jī)器管理器模塊可以獲得或獲取用于執(zhí)行以及用于可選的本地存儲的程序副本。舉例而言,獲取程序副本可以包括:同通知中指示的或已知至少有可能存儲了程序的本地副本的一個以上的計(jì)算機(jī)或其它系統(tǒng)(例如,數(shù)據(jù)存儲系統(tǒng))相聯(lián)系,以請求或獲取程序副本。在不同實(shí)施例中,獲取程序副本可以通過不同方式予以實(shí)現(xiàn),如以下詳細(xì)討論的那樣,獲取程序副本的方式可以包括連同接收到的指示執(zhí)行程序?qū)嵗耐ㄖ黄鸾邮粘绦蚋北尽H缫韵略敿?xì)討論的那樣,至少在某些實(shí)施例中,程序執(zhí)行服務(wù)可以采用多種其它行為來管理程序的執(zhí)行。
      [0024]在另一方案中,可以提供API,所述API允許其它程序可編程地發(fā)出執(zhí)行程序?qū)嵗恼埱?,還可以可編程地執(zhí)行各種其它類型的管理、供應(yīng)操作。此類操作包括但不限于:創(chuàng)建用戶賬戶、保留執(zhí)行資源、注冊所要執(zhí)行的新程序、管理組和訪問策略、監(jiān)控和管理程序?qū)嵗膱?zhí)行等。例如,由API提供的函數(shù)可以由代表用戶的客戶計(jì)算系統(tǒng)和設(shè)備(包括由在程序執(zhí)行服務(wù)的計(jì)算系統(tǒng)上執(zhí)行的程序?qū)嵗?來調(diào)用。
      [0025]為了說明性的目的,以下對某些實(shí)施例進(jìn)行了說明,其中,以特定方式管理特定類型的計(jì)算系統(tǒng)上的特定類型程序的執(zhí)行。為了說明性的目的,提供這些示例,并且為簡潔起見,對這些示例進(jìn)行了簡化。并且本發(fā)明的技術(shù)可用于各種其它情況,以下對其中一些情況進(jìn)行了說明,并且本發(fā)明的技術(shù)不局限于同虛擬機(jī)、數(shù)據(jù)中心或其它特定類型的計(jì)算系統(tǒng)或計(jì)算系統(tǒng)配置一起使用。
      [0026]圖1是一幅網(wǎng)絡(luò)圖,示出了多個計(jì)算系統(tǒng)在其中(在諸如程序執(zhí)行服務(wù)的控制下)交換和執(zhí)行程序的示例實(shí)施例。具體而言,在本示例中,程序執(zhí)行服務(wù)管理在位于數(shù)據(jù)中心100內(nèi)的多個計(jì)算系統(tǒng)上的程序執(zhí)行。在該示例實(shí)施例中,數(shù)據(jù)中心100包括多個機(jī)架105,每個機(jī)架包括多個計(jì)算系統(tǒng)IlOa-C以及機(jī)架支撐計(jì)算系統(tǒng)122。在該示例中,計(jì)算系統(tǒng)IlOa-C分別寄居一個以上的虛擬機(jī)節(jié)點(diǎn)120,以及用于管理虛擬機(jī)的獨(dú)立節(jié)點(diǎn)管理器115。在該示例中,各虛擬機(jī)120可用于提供獨(dú)立的計(jì)算機(jī)環(huán)境以執(zhí)行程序的實(shí)例。在該示例中,機(jī)架支撐計(jì)算系統(tǒng)122向機(jī)架的其他本地計(jì)算系統(tǒng),還可能向位于數(shù)據(jù)中心的其它計(jì)算系統(tǒng)提供各種實(shí)用工具服務(wù)。舉例而言,實(shí)用工具服務(wù)可能包括:為其它計(jì)算系統(tǒng)進(jìn)行數(shù)據(jù)和/或程序存儲、執(zhí)行一個以上的機(jī)器管理模塊以支持其它計(jì)算系統(tǒng),等等。各個計(jì)算系統(tǒng)110可以可選地具有一個獨(dú)立的機(jī)器管理器模塊(例如,被配備為計(jì)算系統(tǒng)的節(jié)點(diǎn)管理器的一部分)和/或具有用于存儲程序的本地副本的本地存儲器(未示出)。在該示例中,計(jì)算系統(tǒng)IlOa-C以及機(jī)架支撐計(jì)算系統(tǒng)122的共享公共的數(shù)據(jù)交換媒介,并且可能均屬于一組的一部分。該公共數(shù)據(jù)交換媒介可同一個以上由例如數(shù)據(jù)中心100內(nèi)的其它機(jī)架或計(jì)算系統(tǒng)所共享的外部數(shù)據(jù)交換媒介相連接。
      [0027]此外,示例數(shù)據(jù)中心100還包括:與節(jié)點(diǎn)管理器125共享公共數(shù)據(jù)交換媒介的附加計(jì)算系統(tǒng)130a-b以及135,并且節(jié)點(diǎn)管理器125管理計(jì)算系統(tǒng)130a_b以及135。在所述示例中,計(jì)算系統(tǒng)135還寄居了多個虛擬計(jì)算機(jī),作為用于為一個以上的用戶執(zhí)行程序?qū)嵗膱?zhí)行環(huán)境,然而計(jì)算系統(tǒng)130a-b沒有寄居獨(dú)立的虛擬機(jī)。在該示例中,可選計(jì)算系統(tǒng)145位于數(shù)據(jù)中心100和外部網(wǎng)絡(luò)170的連接處??蛇x計(jì)算系統(tǒng)145可提供多種服務(wù),以例如充當(dāng)網(wǎng)絡(luò)代理、管理傳入和/或傳出數(shù)據(jù)的傳輸?shù)鹊?。此外,可選系統(tǒng)管理器計(jì)算系統(tǒng)140還被示為協(xié)助管理程序在位于數(shù)據(jù)中心內(nèi)的其它計(jì)算系統(tǒng)上(或可選地在位于一個以上的其它數(shù)據(jù)中心160中的計(jì)算系統(tǒng)上)的執(zhí)行??蛇x系統(tǒng)管理器計(jì)算系統(tǒng)140可執(zhí)行系統(tǒng)管理器模塊。如上所述,除了管理程序的執(zhí)行以外,系統(tǒng)管理器模塊還可以提供多種服務(wù),包括:用戶賬戶的管理(例如,創(chuàng)建、刪除、計(jì)費(fèi)等);對所要執(zhí)行的程序進(jìn)行注冊、存儲,以及分配;收集和處理與程序執(zhí)行相關(guān)的性能以及審核數(shù)據(jù);從客戶或其它用戶獲取執(zhí)行程序所需的費(fèi)用等。
      [0028]在該示例中,數(shù)據(jù)中心100通過網(wǎng)絡(luò)170(如,互聯(lián)網(wǎng))與多個其它系統(tǒng)相連接,所述多個其它系統(tǒng)包括:可由數(shù)據(jù)中心100或第三方的操作員操作的附加計(jì)算系統(tǒng)180、同樣可由數(shù)據(jù)中心100或第三方的操作員操作的附加數(shù)據(jù)中心160、以及可選的系統(tǒng)管理器150。除了提供多種其它服務(wù),系統(tǒng)管理器150可以以類似于系統(tǒng)管理器140的方式,在位于一個以上的數(shù)據(jù)中心100和/或160中的計(jì)算系統(tǒng)上管理程序的執(zhí)行。雖然示例系統(tǒng)管理器150在該示例中被描述為位于任意特定數(shù)據(jù)中心的外部,但是在其它實(shí)施例中它可以位于數(shù)據(jù)中心(如數(shù)據(jù)中心160之一)的內(nèi)部。
      [0029]圖2示出了兩組(例如代表程序執(zhí)行服務(wù))存儲和交換程序副本的計(jì)算系統(tǒng)的示例。應(yīng)當(dāng)理解的是,在實(shí)際的實(shí)施例中,組、計(jì)算系統(tǒng)、以及程序的數(shù)量可能比圖2所示的組要大的多。舉例而言,作為一說明性實(shí)施例,每組可以有40個計(jì)算系統(tǒng),每個數(shù)據(jù)中心可以有100個組,因此每個數(shù)據(jù)中心可以有4000個計(jì)算系統(tǒng),并且每個計(jì)算系統(tǒng)可寄居15個虛擬機(jī)以執(zhí)行客戶的程序?qū)嵗?。此外,如果每組包括具有2兆兆字節(jié)(terabytes)存儲容量的專用計(jì)算系統(tǒng),則每組可存儲2000個千兆字節(jié)(gigabytes)的虛擬機(jī)鏡像程序副本,每個數(shù)據(jù)中心總共200,000個副本??蛇x地,如果每組40個計(jì)算系統(tǒng)分別具有10萬兆的本地存儲容量,則每組可存儲4000個千兆虛擬機(jī)鏡像程序副本,每個數(shù)據(jù)中心總共400,000個副本。如果每個寄存虛擬機(jī)執(zhí)行一個程序,那么這樣的數(shù)據(jù)中心可一次執(zhí)行多達(dá)60,000個程序?qū)嵗?。將意識到的是,在其它實(shí)施例中可以使用其它數(shù)量的組、計(jì)算系統(tǒng)、以及程序,并且可以存儲和執(zhí)行尺寸小得多的和/或具有可變尺寸的程序。
      [0030]在該示例中,圖2示出了 2個組,組A200和組B250。組A包括三個分別名為MA1、MA2、以及MA3的計(jì)算機(jī)210a至C。類似地,組B250包括三個名為MB1、MB2、以及MB3的計(jì)算機(jī)260a至c。每組可具有不同數(shù)量不同類型的計(jì)算機(jī),并且在某些實(shí)施例中,計(jì)算機(jī)可以是屬于多組或不屬于任何組的成員。正如在別處詳細(xì)說明的那樣,各組計(jì)算機(jī)共享該組的公共數(shù)據(jù)交換媒介(未示出)。
      [0031]在一說明性實(shí)施例中,圖2的各計(jì)算機(jī)可執(zhí)行一個以上的程序?qū)嵗?,并且可在本地程序儲存?例如,作為由諸如硬盤或其它存儲設(shè)備等提供的永久性存儲器的一部分)中存儲一個以上的本地程序副本。舉例而言,計(jì)算機(jī)MAl在其程序儲存庫220a中存儲程序P1、P2、P3、P5以及P9的本地副本,并且如方框230a所示,當(dāng)前正在執(zhí)行程序Pl的實(shí)例。在該示例中,各計(jì)算機(jī)上的程序儲存庫的存儲容量被限制為最多存儲五個程序副本,并且各計(jì)算系統(tǒng)的執(zhí)行資源被限制為最多同時執(zhí)行兩個程序?qū)嵗?。在該示例中采用的對程序儲存庫空間以及執(zhí)行程序數(shù)量的限制僅僅是為了用于說明,在其它實(shí)施例中各計(jì)算系統(tǒng)還可具有獨(dú)立的資源。此外,雖然在許多實(shí)施例中,程序儲存庫的空間比執(zhí)行程序?qū)嵗龝r的可用內(nèi)存空間大一個以上的數(shù)量級,但這種情況并不一定是必須的。在其它實(shí)施例中,同時執(zhí)行的程序的最大數(shù)量可以大于、小于或等于本地存儲于程序儲存庫中的程序副本的數(shù)量。因此,至少某些計(jì)算機(jī)或其它系統(tǒng)可以僅提供本地程序儲存庫和可用資源之一以執(zhí)行程序?qū)嵗?。最后,如在別處將予以詳細(xì)說明的那樣,在某些實(shí)施例中,可以在某些情況下將至少某些程序的本地存儲副本從存儲器中移除或清除,以例如在程序儲存庫達(dá)到其容量時,為其它程序副本騰出空間。在某些實(shí)施例中,可以在某些情況下終止或停止至少某些程序的正在執(zhí)行的實(shí)例,以例如在程序執(zhí)行資源達(dá)到其容量時,為其它正在執(zhí)行的程序?qū)嵗v出空間。
      [0032]為了說明的目的,此處給出了程序執(zhí)行服務(wù)的一實(shí)施例的若干種操作的示例。程序執(zhí)行服務(wù)可采用一個或多個指定的、預(yù)定義的和/或習(xí)得的(learned)策略,來影響執(zhí)行程序?qū)嵗谟?jì)算機(jī)上的布置,在該示例中采用了如下所示的一組簡單的策略。首先,如果可能,在一組以上的計(jì)算機(jī)上執(zhí)行多個程序?qū)嵗?。第二,如果可能,在一臺以上的計(jì)算機(jī)上執(zhí)行多個程序?qū)嵗5谌?,如果可能,在已在其程序儲存庫中存儲了該程序副本的?jì)算機(jī)上執(zhí)行程序?qū)嵗?。第四,如果可能,在具有至少一臺已在其程序儲存庫中存儲了該程序的本地副本的計(jì)算機(jī)的組中的成員計(jì)算機(jī)上執(zhí)行程序?qū)嵗W詈?,如果可能,在具有最多可用?zhí)行資源的計(jì)算機(jī)上執(zhí)行程序?qū)嵗?br> [0033]下面開始說明為這六個計(jì)算系統(tǒng)管理程序執(zhí)行的說明性示例,假定程序執(zhí)行服務(wù)的客戶已請求執(zhí)行程序P7的兩個實(shí)例。在這種情況下,鑒于上述策略,程序執(zhí)行服務(wù)的示例實(shí)施例可能選擇在組A中執(zhí)行P7的一個實(shí)例并在組B中執(zhí)行P7的一個實(shí)例,因?yàn)樵摬贾脙A向于將副本分布在一個以上的組中。在組A的計(jì)算機(jī)之間,該組沒有任何一臺計(jì)算機(jī)存儲程序的本地副本,由于計(jì)算機(jī)MA3正在執(zhí)行兩個程序(P8和P9),因此程序執(zhí)行服務(wù)可能選擇不在MA3上執(zhí)行P7的副本。在計(jì)算機(jī)MAl和MA2之間,由于MA2當(dāng)前未執(zhí)行任何程序,因此將選擇MA2來執(zhí)行P7的副本。在所述實(shí)施例中,機(jī)器MA2將從位于組A外部的一個以上的計(jì)算系統(tǒng)獲取程序P7的副本,以用于執(zhí)行并可選地在儲存庫220b中進(jìn)行本地存儲。舉例而言,機(jī)器MA2可從程序執(zhí)行服務(wù)的所有計(jì)算機(jī)所用的遠(yuǎn)程程序儲存庫和/或從程序執(zhí)行服務(wù)的外部位置獲取程序P7的副本。對于組B的計(jì)算機(jī),由于沒有一個計(jì)算系統(tǒng)存儲程序的本地副本,并且每臺計(jì)算機(jī)正在執(zhí)行一個程序,因此程序執(zhí)行服務(wù)可選擇三臺計(jì)算機(jī)中的任意一臺來執(zhí)行P7程序?qū)嵗?。然而,由于MB3當(dāng)前只在其程序儲存庫中存儲了一個程序副本,因此程序執(zhí)行服務(wù)可能選擇機(jī)器MB3。因此,如果需要的話無需從其程序儲存庫中清除已存儲的程序副本,機(jī)器MB3就可以存儲程序P7的本地副本。
      [0034]接下來,再次從圖2所示的初始條件出發(fā),假定程序執(zhí)行服務(wù)的客戶已請求執(zhí)行程序P6的兩個實(shí)例。在這種情況下,鑒于上述策略,由于該布置將把實(shí)例分配在一個以上的組中,因此程序執(zhí)行服務(wù)的示例實(shí)施例可能再次選擇在組A中執(zhí)行P6的一個實(shí)例,并在組B中執(zhí)行P6的一個實(shí)例。在組A的計(jì)算機(jī)之間,由于沒有一個計(jì)算系統(tǒng)存儲了程序P6的本地副本,并且計(jì)算機(jī)MA2是最不忙碌的,因此將可能再次選擇計(jì)算機(jī)MA2。在組B的同等繁忙的計(jì)算機(jī)之中,盡管只有MB2存儲了程序的本地副本,但是由于策略優(yōu)選在同一組內(nèi)的多臺計(jì)算機(jī)上分配單個程序的副本,因此可能不會選擇計(jì)算機(jī)MB2。然而,值得注意的是,由于MB2的程序存儲庫中已存儲P6的副本,因此采用表現(xiàn)為比起可靠性而言更重視效率的不同策略的其它實(shí)施例,事實(shí)上可能剛好選擇在計(jì)算機(jī)MB2上執(zhí)行P6。由于無需從MB3程序儲存庫中清除任何程序副本,因此在剩余的候選計(jì)算機(jī)MB3和MBl之間,程序執(zhí)行服務(wù)可能再次優(yōu)選MB3。因此,在該實(shí)施例中,機(jī)器MB3將從MB2獲取程序P6的副本,以用于執(zhí)行,并可能將其存儲在本地儲存庫270c中。
      [0035]接下來,再次從圖2中所示的初始條件出發(fā),假定程序執(zhí)行服務(wù)的客戶已請求執(zhí)行程序P4的一個實(shí)例。在這種情況下,鑒于上述策略,程序執(zhí)行服務(wù)的示例實(shí)施例將可能選擇在計(jì)算機(jī)MBl上執(zhí)行P4。具體而言,由于不存在正在執(zhí)行的P4的實(shí)例,并且只請求執(zhí)行一個實(shí)例,因此不適用優(yōu)選在多組間分配程序?qū)嵗?、以及?yōu)選避免在單獨(dú)的計(jì)算機(jī)上放置程度的多個執(zhí)行實(shí)例的策略。因此,由于MBl已在其程序儲存庫中存儲了程序P4的本地副本,因此將可能選擇MBl來執(zhí)行P4。
      [0036]接下來,再次從圖2中所示的初始條件出發(fā),假定程序執(zhí)行服務(wù)的客戶已請求執(zhí)行程序PlO的一個實(shí)例。在這種情況下,鑒于上述策略,程序執(zhí)行服務(wù)的示例實(shí)施例將可能選擇在MA2上執(zhí)行P10。與前一示例相同,不適用優(yōu)選在多組間分配用以執(zhí)行的程序?qū)嵗约氨苊庠趩闻_計(jì)算機(jī)上放置程序的多個實(shí)例策略。并且,雖然因?yàn)橛?jì)算機(jī)MA3已在儲存庫中存儲了 PlO的副本,故計(jì)算機(jī)MA3是一個很吸引人的候選計(jì)算機(jī),但是由于MA3已達(dá)到了兩個執(zhí)行程序(P8和P9)的上限,因而不具備在當(dāng)前執(zhí)行PlO的能力。這使得由于MAl和MA2與在其儲存庫中存儲了程序PlO的本地副本的計(jì)算機(jī)(MA3)位于同一組中,計(jì)算機(jī)MAl和MA2優(yōu)先于組B中的任何一臺計(jì)算機(jī)。在MAl和MA2之間,由于MA2最不繁忙,因此可能選擇MA2,并且MA2將從MA3中獲取程序PlO的副本。
      [0037]接下來,再次從圖2中所示的初始條件出發(fā),假定程序執(zhí)行服務(wù)的示例實(shí)施例的客戶已請求執(zhí)行程序P3的6個附加實(shí)例。在這種情況下,鑒于上述策略,程序執(zhí)行服務(wù)將可能在計(jì)算機(jī)MA2上執(zhí)行兩個實(shí)例并在計(jì)算機(jī)MAUMBl、MB2和MB3上各執(zhí)行一個實(shí)例。由于計(jì)算機(jī)MA3已處于兩個執(zhí)行程序(P8和P9)的上限,因此可能不會在計(jì)算機(jī)MA3上執(zhí)行任何實(shí)例。注意在這種情況下,某些實(shí)施例可能從那些程序儲存庫不具有多余容量以存儲程序P3的本地副本的計(jì)算機(jī)中清除所存儲的程序的本地副本。舉例而言,在選擇總是在程序執(zhí)行前在本地程序儲存庫中存儲所要執(zhí)行的程序的副本的實(shí)施例中,計(jì)算機(jī)MAl和MBl可從其各自的程序儲存庫中清除一個本地程序副本。還應(yīng)注意,在這種情況下,與優(yōu)選在多臺計(jì)算機(jī)之間分配執(zhí)行程序的多個實(shí)例的策略相反,計(jì)算機(jī)MA2和MB3將可能最終分別執(zhí)行P3的兩個實(shí)例。然而,由于在給定示例中不存在額外的、用以執(zhí)行P3程序?qū)嵗挠?jì)算機(jī),因此如果想要滿足請求,程序執(zhí)行服務(wù)將選擇在單臺計(jì)算機(jī)上執(zhí)行P3的多個實(shí)例??蛇x地,在某些實(shí)施例中,程序執(zhí)行服務(wù)可為策略分配不同的權(quán)重,使程序執(zhí)行服務(wù)可選擇執(zhí)行少于所請求的數(shù)目的實(shí)例,以例如在計(jì)算機(jī)MA1、MA2、MA3以及MB3上各執(zhí)行一個單獨(dú)的實(shí)例。類似地,在某些實(shí)施例中,如果請求六個以上的程序P3的附加實(shí)例,并且程序和/或請求者的優(yōu)先級足夠高,那么程序執(zhí)行服務(wù)可以(例如通過終止另一個程序?qū)嵗?例如MA3上的程序P8和/或P9的實(shí)例)的執(zhí)行和/或通過在一個當(dāng)前執(zhí)行的程序?qū)嵗=Y(jié)束之后為P3保留下一可用程序?qū)嵗龍?zhí)行的方式)選擇執(zhí)行P3的附加實(shí)例。
      [0038]繼續(xù)參考當(dāng)前示例,由于同組A中的計(jì)算機(jī)MAl和MA2 —樣,組B中的MB2和MB3均存儲了該程序的本地副本,因此計(jì)算機(jī)MBl具有多個可用于獲取執(zhí)行所用的程序P3的副本的來源。在該實(shí)施例中,MBl將請求本組的MB2和MB3提供程序P3的一部分(例如,第一組X比特以及第二組X比特,其中,X是由程序執(zhí)行服務(wù)選定的數(shù)目)。機(jī)器MBl接著監(jiān)控從計(jì)算機(jī)接收到響應(yīng)的速度,并請求響應(yīng)速度更快的計(jì)算機(jī)提供該程序的至少大部分(有可能是全部)的剩余部分。在其它實(shí)施例中,可以其它方式為計(jì)算機(jī)MBl獲取程序P3的副本,所述方式可以是諸如:只從計(jì)算機(jī)MB2和MB3之一請求程序副本、(除了或并不從組B中的MB2和MB3還或而)從組A中的計(jì)算機(jī)MAl和/或MA2請求至少部分程序副本等。
      [0039]圖3是一幅方框圖,示出了適于諸如通過執(zhí)行程序執(zhí)行服務(wù)系統(tǒng)的實(shí)施例等方式來管理在被管理的多個計(jì)算系統(tǒng)上的程序執(zhí)行的示例計(jì)算系統(tǒng)。在該示例中,計(jì)算系統(tǒng)300執(zhí)行系統(tǒng)管理器模塊的實(shí)施例,以協(xié)調(diào)在被管理的多個計(jì)算系統(tǒng)上的程序執(zhí)行。在某些實(shí)施例中,計(jì)算系統(tǒng)300可對應(yīng)于圖1中的系統(tǒng)管理器140或150。此外,一個以上的機(jī)器管理器計(jì)算系統(tǒng)370分別執(zhí)行機(jī)器管理器模塊382,以便于由一個以上的相關(guān)計(jì)算系統(tǒng)獲取和執(zhí)行程序。在某些實(shí)施例中,一個以上的機(jī)器管理器模塊可以分別對應(yīng)于圖1的節(jié)點(diǎn)管理器115或125中的一個。在該示例中,提供多個機(jī)器管理器計(jì)算系統(tǒng),并且其中每一個機(jī)器管理器計(jì)算系統(tǒng)充當(dāng)受系統(tǒng)管理器模塊管理的程序執(zhí)行服務(wù)的多個計(jì)算系統(tǒng)中的一個。在所述示例中,獨(dú)立的機(jī)器管理器模塊執(zhí)行于各個計(jì)算系統(tǒng)370上。在其它實(shí)施例中,各機(jī)器管理器計(jì)算系統(tǒng)上的機(jī)器管理器模塊可管理一個以上的其它計(jì)算系統(tǒng)(例如,其它計(jì)算系統(tǒng)388)。
      [0040]在該示例實(shí)施例中,計(jì)算系統(tǒng)300包括:中央處理單元(“CPU”)335、存儲器340、內(nèi)存345、以及各種輸入/輸出(“I/O”)設(shè)備305,并且所述I/O設(shè)備包括:顯示器310、網(wǎng)絡(luò)連接315、計(jì)算機(jī)可讀介質(zhì)驅(qū)動器320、以及其它I/O設(shè)備330。未示出的其它I/O設(shè)備可包括:鍵盤、鼠標(biāo)或其它定位設(shè)備、麥克風(fēng)、揚(yáng)聲器等。在所述實(shí)施例中,在內(nèi)存345中執(zhí)行系統(tǒng)管理器模塊350,以管理其它計(jì)算系統(tǒng)上的程序執(zhí)行,并且還可以可選地在內(nèi)存345中執(zhí)行一個以上的其它程序355。計(jì)算系統(tǒng)300以及計(jì)算系統(tǒng)370通過網(wǎng)絡(luò)386相互連接并同其它計(jì)算系統(tǒng)388相連接。
      [0041]類似地,各計(jì)算系統(tǒng)370包括:CPU374、各種I/O設(shè)備372、存儲器376、以及內(nèi)存380。在所述實(shí)施例中,在內(nèi)存380中執(zhí)行機(jī)器管理器模塊382,以為程序執(zhí)行服務(wù)(如代表程序執(zhí)行服務(wù)的客戶)管理一個以上的其他程序384在計(jì)算系統(tǒng)上的執(zhí)行。在某些實(shí)施例中,某些或全部計(jì)算系統(tǒng)370可寄居多個虛擬機(jī)。倘若如此,各個執(zhí)行程序384可以是執(zhí)行于單個寄居虛擬機(jī)上的完整的虛擬機(jī)鏡像(例如,具有操作系統(tǒng)和一個以上應(yīng)用程序)。機(jī)器管理器模塊可類似地執(zhí)行于另一寄居虛擬機(jī),如具有特權(quán)的、能夠監(jiān)測其它寄居虛擬機(jī)的虛擬機(jī)。在其它實(shí)施例中,執(zhí)行程序?qū)嵗?84和機(jī)器管理器模塊382可作為執(zhí)行于計(jì)算系統(tǒng)370上的單個操作系統(tǒng)(未示出)上的獨(dú)立進(jìn)程來執(zhí)行。因此,在該示例實(shí)施例中,程序執(zhí)行服務(wù)的能力是由系統(tǒng)管理器350和機(jī)器管理器模塊382之間的交互予以提供的,所述系統(tǒng)管理器350和機(jī)器管理器模塊382利用網(wǎng)絡(luò)386進(jìn)行通信,以共同管理程序在被管理的計(jì)算系統(tǒng)上的分配、獲取以及執(zhí)行。
      [0042]將意識到的是,計(jì)算系統(tǒng)(如計(jì)算系統(tǒng)300和370)僅僅用于說明,而不是用來限制本發(fā)明的范圍的。計(jì)算系統(tǒng)300和370可同其它未示出的設(shè)備相連接,所述其它設(shè)備包括網(wǎng)絡(luò)可訪問的數(shù)據(jù)系統(tǒng)或其它數(shù)據(jù)存儲設(shè)備。更一般地,計(jì)算機(jī)或計(jì)算系統(tǒng)或數(shù)據(jù)存儲系統(tǒng)可以包括可相互作用并執(zhí)行所述各類的功能的硬件或軟件的任意組合,包括但是不局限于:臺式計(jì)算機(jī)或其它計(jì)算機(jī)、數(shù)據(jù)庫服務(wù)器、網(wǎng)絡(luò)存儲設(shè)備以及其它網(wǎng)絡(luò)設(shè)備、PDA、蜂窩電話、無線電話、尋呼機(jī)、電子記事簿、互聯(lián)網(wǎng)設(shè)備、基于電視的(如,采用機(jī)頂盒和/或個人/數(shù)字錄像機(jī)的)系統(tǒng)、以及各種其它包含適當(dāng)?shù)南嗷ネㄐ殴δ艿南M(fèi)產(chǎn)品。此外,在其它實(shí)施例中,可以將由所述系統(tǒng)模塊提供的功能合并于更少的模塊中或分布在附加模塊中。類似地,在某些實(shí)施例中,可能不提供某些所述模塊的功能和/或可以使用其它附加功倉泛。
      [0043]還應(yīng)理解的是,雖然將各個項(xiàng)目說明為在使用時存儲在內(nèi)存中或存儲器上,但是為了進(jìn)行內(nèi)存管理和保持?jǐn)?shù)據(jù)完整性,這些項(xiàng)目或者其部分可在內(nèi)存和其它存儲設(shè)備之間發(fā)生轉(zhuǎn)移??蛇x地,在其它實(shí)施例中,某些或全部軟件組件和/或模塊可執(zhí)行于另一設(shè)備的內(nèi)存中,并利用計(jì)算機(jī)間的通信同所述計(jì)算系統(tǒng)進(jìn)行通信。某些或全部系統(tǒng)模塊或數(shù)據(jù)結(jié)構(gòu)也可以(例如,作為軟件指令或結(jié)構(gòu)體數(shù)據(jù))被存儲在計(jì)算機(jī)可讀介質(zhì)(如可由適當(dāng)?shù)尿?qū)動器或通過合適的連接讀取的硬盤、內(nèi)存、網(wǎng)絡(luò)、或便攜介質(zhì))上。系統(tǒng)模塊和數(shù)據(jù)結(jié)構(gòu)也可作為所產(chǎn)生的數(shù)據(jù)信號(例如,作為載波或其它模擬或數(shù)字傳播信號的一部分)在包括基于無線和基于有線/電纜的媒介在內(nèi)的各種計(jì)算機(jī)可讀傳輸媒介上傳輸,并且可以采取各種形式(例如,作為單獨(dú)或復(fù)用的模擬信號,或作為多個離散的數(shù)字分組或幀)。在其它實(shí)施例中,此類計(jì)算機(jī)程序產(chǎn)品也可采用其它形式。因此,本發(fā)明可以用其它計(jì)算機(jī)系統(tǒng)配置予以實(shí)施。
      [0044]圖4A-4B示出了系統(tǒng)管理器模塊工作過程400的實(shí)施例的流程圖。該過程可通過例如執(zhí)行圖1中的系統(tǒng)管理器模塊140和/或圖3中的系統(tǒng)管理器模塊350的方式予以實(shí)現(xiàn),以例如代表程序執(zhí)行服務(wù)管理多個程序在多個計(jì)算系統(tǒng)上的執(zhí)行。
      [0045]該過程起始于步驟405,并接收與一個以上的程序的執(zhí)行相關(guān)的狀態(tài)消息或請求。接著過程進(jìn)入步驟410,判斷接收到的消息或請求的類型。如果判定已接收到執(zhí)行一個以上的所指示的程序的一個以上的實(shí)例的請求,過程就進(jìn)入步驟415。在步驟415中,該過程確定一組以上的計(jì)算系統(tǒng),以執(zhí)行所指示的程序。在步驟420中,該過程在一個以上的所指示的組的每組中選擇一個以上的計(jì)算系統(tǒng)來執(zhí)行所指示的程序的實(shí)例。可基于多種因素(如一個組是否具有一個以上的、存儲了程序的一個以上的本地副本的計(jì)算系統(tǒng)、適合的計(jì)算資源的可用性、以及組中計(jì)算系統(tǒng)的位置)選擇一個以上的組。在所指定的組中選擇一個計(jì)算系統(tǒng)可類似地基于各種因素(如所存儲的程序的本地副本在組中計(jì)算系統(tǒng)間的位置、以及計(jì)算資源的可用性)。如前所述,在不同實(shí)施例中,可用不同的指定策略以及其它準(zhǔn)則(包括由用戶或其他請求者指定的準(zhǔn)則)作為組和計(jì)算系統(tǒng)選擇的一部分。此外,在其它實(shí)施例中,可能不會獨(dú)立地選擇組以及特定的計(jì)算系統(tǒng),以例如僅僅挑選最適合的一個以上的計(jì)算系統(tǒng)而不對組進(jìn)行考慮(例如,在不使用組的情況下)。
      [0046]接下來,在步驟425,過程通過諸如發(fā)送包括執(zhí)行程序?qū)嵗闹噶钤趦?nèi)的消息,向選定的計(jì)算系統(tǒng)和/或與這些計(jì)算系統(tǒng)相關(guān)的一個以上的機(jī)器管理器模塊提供所要執(zhí)行的程序的指示。在所述實(shí)施例中,獨(dú)立的機(jī)器管理器模塊執(zhí)行于各個計(jì)算系統(tǒng)上,并且接收該消息。如前所述,可向機(jī)器管理器模塊提供多種類型的信息,包括:若干指示,用于說明如何確定需要從中獲取所要執(zhí)行的程序的副本的一個以上的計(jì)算系統(tǒng)??蛇x地,在某些實(shí)施例中,系統(tǒng)管理器可直接向計(jì)算系統(tǒng)提供所指示的程序的副本和/或在無需機(jī)器管理器模塊或其它附加模塊介入的情況下,啟動程序在計(jì)算系統(tǒng)上的執(zhí)行。
      [0047]否則,如果例如在步驟410中判定從用戶接收到注冊新程序的請求,該過程就進(jìn)入步驟440,并存儲程序的指示以及任何相關(guān)的管理信息(如注冊程序的用戶的標(biāo)識)。接下來,在步驟445中,過程可選地開始向一個以上的計(jì)算系統(tǒng)分配所指示的程序的副本。舉例而言,在某些實(shí)施例中,系統(tǒng)管理器可選擇將所存儲的所指示的程序的本地副本分配(seed)到一個以上的數(shù)據(jù)中心內(nèi)的一個以上的計(jì)算系統(tǒng)和/或程序儲存庫中,以提高稍后啟動程序執(zhí)行的效率。
      [0048]否則,如果在步驟410中判定接收到反映一個以上的被管理計(jì)算系統(tǒng)的操作的狀態(tài)消息,過程就進(jìn)入步驟450,并更新一個以上計(jì)算系統(tǒng)的狀態(tài)信息。舉例而言,機(jī)器管理器模塊可能判定相關(guān)計(jì)算系統(tǒng)修改了正在執(zhí)行的程序?qū)嵗?或所存儲的本地程序副本,并且可能相應(yīng)地向系統(tǒng)管理提供狀態(tài)消息。在某些實(shí)施例中,將由機(jī)器管理器模塊周期性地發(fā)送狀態(tài)信息,以使系統(tǒng)管理器能夠獲知在選擇合適的用于執(zhí)行程序的計(jì)算系統(tǒng)時所用的被管理的計(jì)算系統(tǒng)的運(yùn)行狀態(tài)。在其它實(shí)施例中,可在其它時刻(如相關(guān)改變發(fā)生的任何時刻)發(fā)送狀態(tài)信息。在其它實(shí)施例中,系統(tǒng)管理器模塊可以按照需要從機(jī)器管理器模塊請求信息。狀態(tài)消息可包括多種類型的信息,如當(dāng)前執(zhí)行于特定計(jì)算系統(tǒng)上的程序的數(shù)目和標(biāo)識、當(dāng)前存儲在特定計(jì)算機(jī)上的本地程序儲存庫中的程序副本的數(shù)目和標(biāo)識、計(jì)算系統(tǒng)的性能相關(guān)和資源相關(guān)的信息(例如,CPU利用率、網(wǎng)絡(luò)、硬盤、內(nèi)存等)、計(jì)算系統(tǒng)的配置信息、以及與與特定計(jì)算系統(tǒng)上的硬件或軟件相關(guān)的錯誤或失敗條件的報(bào)告。
      [0049]如果在步驟410中判定收到任何其它類型的請求,過程就進(jìn)入步驟455,并視情況執(zhí)行其它所指示的操作。舉例而言,此類操作可包括:響應(yīng)來自系統(tǒng)中其它組件的狀態(tài)查詢、暫?;蚪K止一個以上的正在執(zhí)行的程序的執(zhí)行、將當(dāng)前執(zhí)行的程序從一個計(jì)算系統(tǒng)遷移至另一個計(jì)算系統(tǒng)、關(guān)閉或重啟系統(tǒng)管理器等。
      [0050]在步驟425、445、450以及455之后,過程進(jìn)入步驟430并可選地執(zhí)行任何常規(guī)(housekeeping)任務(wù),如:計(jì)算用戶付費(fèi)信息、更新顯示信息、向節(jié)點(diǎn)管理器或其它組件發(fā)送周期性查詢、輪替日志或其它信息等。接著,過程進(jìn)入步驟495并判斷是否繼續(xù)。倘若繼續(xù),過程就返回步驟405,否則就進(jìn)入步驟499并返回。
      [0051]圖5示出了機(jī)器管理器模塊的工作過程500的流程圖。該過程可通過例如執(zhí)行圖3中的機(jī)器管理器模塊382和/或圖1中的節(jié)點(diǎn)管理器115或125的方式予以實(shí)現(xiàn),以例如便于為一個以上的被管理的相關(guān)計(jì)算系統(tǒng)獲取程序副本和執(zhí)行程序?qū)嵗?。在所述?shí)施例中,各機(jī)器管理器模塊的工作過程是代表被配置為即執(zhí)行一個以上的程序?qū)嵗执鎯σ粋€以上的本地程序副本的單個計(jì)算系統(tǒng)執(zhí)行的,其中,機(jī)器管理器模塊與參考圖4A-B所描述的系統(tǒng)管理器模塊的工作過程協(xié)同工作,為程序執(zhí)行服務(wù)管理被管理的計(jì)算系統(tǒng)的程序執(zhí)行。
      [0052]該過程起始于步驟505,并從諸如系統(tǒng)管理器模塊接收與執(zhí)行一個以上的程序有關(guān)的請求。過程進(jìn)入步驟510以判斷是否接收到執(zhí)行或存儲所指示的程序的請求。如果是,過程就進(jìn)入步驟515,以判斷所指示的程序當(dāng)前是否存儲在被管理的計(jì)算系統(tǒng)的本地程序儲存庫中。否則,過程就進(jìn)入步驟540,以判斷本地程序儲存庫是否具有足夠容量來存儲所指示的程序。如果沒有,過程就進(jìn)入步驟545,并例如根據(jù)在步驟505中接收到的請求中所指示的那樣或基于機(jī)器管理器模塊所采用的清除策略,從本地程序儲存庫中清除一個以上的程序。在步驟545之后,或如果在步驟540中確定本地程序儲存庫的確具有足夠容量用來存儲所指示的程序的本地副本,過程就進(jìn)入步驟550,并從一個以上的確定的其它計(jì)算系統(tǒng)獲取所指示的程序的本地副本。過程可以通過多種方式(包括基于作為在步驟505中接收到的請求的一部分的信息)確定存儲著程序的本地副本的其它計(jì)算系統(tǒng)。此外,可以采用一種以上的其它技術(shù),例如還可以使用向鄰近計(jì)算系統(tǒng)廣播、向中心目錄請求、和/或?qū)Φ葦?shù)據(jù)交換等技術(shù)。在其它實(shí)施例中,可以在步驟505中將程序副本同請求一起提供。接著,過程進(jìn)入步驟555,并在本地程序儲存庫中存儲所獲得的所指示的程序的副本。在步驟555之后,或者如果在步驟515中確定所指示的程序已存儲在儲存庫中,過程就進(jìn)入步驟520,以判斷是否接收到需要執(zhí)行程序的指示。如果收到,過程就進(jìn)入步驟525,并且啟動執(zhí)行所指示的程序。
      [0053]如果在步驟510中判定未接收到存儲或執(zhí)行程序的請求,過程就進(jìn)入步驟535,并視情況執(zhí)行其它所指示的操作。舉例而言,其它操作可以包括:比如對接收到的請求予以響應(yīng)和/或基于收集到的關(guān)于程序性能的信息(如程序行為混亂或過度使用資源),暫?;蚪K止一個以上的程序的執(zhí)行。此外,其它操作可以包括:對對于與當(dāng)前正在執(zhí)行的程序或本地程序儲存庫的內(nèi)容有關(guān)的狀態(tài)信息的請求予以響應(yīng)等。
      [0054]在步驟535、525之后,或者如果在步驟520中判定未接收到執(zhí)行程序的指示,過程就進(jìn)入步驟530,并向一個以上的系統(tǒng)管理器模塊發(fā)送狀態(tài)信息消息。在所述實(shí)施例中,過程在每次操作后向系統(tǒng)管理器模塊發(fā)送狀態(tài)信息消息,從而使系統(tǒng)管理器能夠得知受節(jié)點(diǎn)管理器管理的計(jì)算系統(tǒng)的狀態(tài)。在其它實(shí)施例中,狀態(tài)信息可以在其它時刻并以其它方式發(fā)送。在步驟530之后,過程進(jìn)入步驟595并判斷是否繼續(xù)。倘若繼續(xù),過程就返回步驟505,否則,就進(jìn)入步驟599并返回。雖然此處并未說明,但是過程還可以根據(jù)需要在各時刻執(zhí)行各種內(nèi)務(wù)處理操作。
      [0055]圖6示出了程序執(zhí)行服務(wù)客戶的工作過程的實(shí)施例的流程圖。該過程可通過例如駐留在圖1所示的計(jì)算系統(tǒng)180之一上的應(yīng)用程序予以實(shí)現(xiàn),以例如提供交互式控制臺,令使用者能夠與程序執(zhí)行服務(wù)進(jìn)行交互。該過程可以可選地反映出由程序執(zhí)行服務(wù)以交互方式向用戶提供的和/或以編程方式向用戶程序提供的能力。可選地,該過程可以是由程序執(zhí)行服務(wù)在被管理的計(jì)算系統(tǒng)之一上執(zhí)行的程序之一的一部分,以例如使此類程序能夠動態(tài)地執(zhí)行附加的程序?qū)嵗?,以?shí)現(xiàn)負(fù)載均衡、滿足增長或減少的需求等目的。
      [0056]該過程起始于步驟605,并接收與一個以上的程序的執(zhí)行相關(guān)的請求。在步驟610中,過程確定接收消息的類型。如果請求有關(guān)于新程序注冊(或先前注冊的程序的新版本),過程就進(jìn)入步驟615,并向程序執(zhí)行服務(wù)(例如,向系統(tǒng)管理器模塊)發(fā)送新程序需要注冊的指示。所述指示可以包括:程序的副本或如何獲取程序的指令。如果在步驟610中確定請求與執(zhí)行程序相關(guān),過程就進(jìn)入步驟615,以向程序執(zhí)行服務(wù)(例如,向系統(tǒng)管理器模塊)發(fā)送請求,以執(zhí)行所要執(zhí)行的程序的一個以上的實(shí)例。舉例而言,過程可利用先前從程序執(zhí)行服務(wù)接收到的指示來確定程序和/或?qū)⒋砟膫€用戶執(zhí)行程序?qū)嵗H绻诓襟E610中判定接收到某些其它類型的請求,過程就進(jìn)入步驟625,并視情況執(zhí)行其它所指示的操作。舉例而言,過程可以向程序執(zhí)行服務(wù)發(fā)送請求從而保留計(jì)算資源以在將來執(zhí)行一個以上的所指示的程序?qū)嵗?,向程序?zhí)行服務(wù)發(fā)送與一個以上的程序的當(dāng)前或先前執(zhí)行有關(guān)的狀態(tài)查詢,(例如,作為向程序執(zhí)行服務(wù)注冊用戶的一部分)提供或更新與用戶相關(guān)的信息、撤銷或移除之前注冊的程序、暫?;蚪K止一個以上的程序?qū)嵗膱?zhí)行等。
      [0057]在步驟615、625、或630之后,過程進(jìn)入步驟620,并可選地執(zhí)行額外的常規(guī)任務(wù),以例如更新顯示信息、存儲接收到的響應(yīng)于步驟615、625或630的從程序執(zhí)行服務(wù)(未示出)返回的信息、對程序執(zhí)行服務(wù)進(jìn)行周期性的狀態(tài)查詢等。在步驟620之后,過程進(jìn)入步驟695以判斷是否繼續(xù)處理。倘若繼續(xù),過程就返回步驟606,倘若不繼續(xù),就進(jìn)入步驟699并返回。
      [0058]本領(lǐng)域的技術(shù)人員還將意識到,在某些實(shí)施例中,由上述過程提供的功能可通過其它方式(如將所述功能分入更多過程,或合并為更少的過程)予以提供。類似地,在某些實(shí)施例中,在諸如其它所述過程分別缺少或包括這樣的功能,或當(dāng)所提供的功能的數(shù)量發(fā)生改變的情況下,所述過程可以提供比所描述的功能數(shù)量更多或更少的功能。此外,雖然可能將各個操作說明為是以特定方式(例如,串行或并行)和/或特定順序予以執(zhí)行的,但是本領(lǐng)域技術(shù)人員將意識到,在其它實(shí)施例中,可按照其它順序或其它方式來執(zhí)行操作。本領(lǐng)域技術(shù)人員還將意識到,以上討論的數(shù)據(jù)結(jié)構(gòu)可采用不同方式(如通過將單個數(shù)據(jù)結(jié)構(gòu)分解為多個數(shù)據(jù)結(jié)構(gòu),或?qū)⒍鄠€數(shù)據(jù)結(jié)構(gòu)合并為單個數(shù)據(jù)結(jié)構(gòu))加以組織。類似地,在某些實(shí)施例中,在諸如其它所述數(shù)據(jù)結(jié)構(gòu)分別缺少或包括這樣的信息,或當(dāng)所存儲的信息的數(shù)量或類型發(fā)生改變時,所述數(shù)據(jù)結(jié)構(gòu)可以存儲比所描述的數(shù)量更多或更少的信息。
      [0059]如上所述,各實(shí)施例將程序執(zhí)行服務(wù)的計(jì)算系統(tǒng)組織成一個以上的組,以便于實(shí)現(xiàn)與程序執(zhí)行相關(guān)的策略。此外,計(jì)算系統(tǒng)可以通過其它方式(如采用組層次結(jié)構(gòu))加以組織。舉例而言,最小的組可以各包含單個計(jì)算系統(tǒng),并且各計(jì)算系統(tǒng)將被分配到各自的組中。通過單個網(wǎng)絡(luò)交換機(jī)連接的單個機(jī)器組還可以包含在交換機(jī)級組(switch-levelgroup)中,交換機(jī)級組包含所有通過單個網(wǎng)絡(luò)交換機(jī)進(jìn)行物理連接的計(jì)算系統(tǒng)。交換機(jī)級組還可以包含在數(shù)據(jù)中心級組中,該數(shù)據(jù)中心級組包含位于給定數(shù)據(jù)中心內(nèi)的所有計(jì)算系統(tǒng)。數(shù)據(jù)中心級組還可以包含在全體組(universal group)中,全體組包含多個數(shù)據(jù)中心中的所有計(jì)算系統(tǒng)。按照這樣的組織結(jié)構(gòu),位于各級的組對位于組中其它計(jì)算系統(tǒng)上的程序副本的訪問速度通常逐級變慢,單個機(jī)器組提供最快的訪問速度,全體組提供最慢的訪問速度。由于程序執(zhí)行服務(wù)可以搜索既存儲了所要執(zhí)行的特定程序的副本又具有用于執(zhí)行程序的必不可少的資源的最小的組,因此這樣的組織使得可以高效地實(shí)施用于指導(dǎo)對執(zhí)行程序進(jìn)行最優(yōu)布置的各種策略的應(yīng)用??蛇x地,其它實(shí)施例可能完全不會以組的方式對程序執(zhí)行服務(wù)中的計(jì)算系統(tǒng)進(jìn)行建模。例如,此類實(shí)施例可以向與某些或全部網(wǎng)絡(luò)交換機(jī)相連接的或位于某些或全部硬件機(jī)架上的專用數(shù)據(jù)存儲計(jì)算或其它系統(tǒng)分配某些或全部程序的副本,然后只隨機(jī)地向計(jì)算系統(tǒng)分配所要執(zhí)行的程序。
      [0060]如前所述,對于將計(jì)算系統(tǒng)和/或組選作執(zhí)行程序和/或接收程序副本分配的候選系統(tǒng)和/或組而言,不同的實(shí)施例可能實(shí)施不同策略。在很多情況下,不同的程序放置策略可能需要在諸如可靠性和效率(例如,啟動延遲、網(wǎng)絡(luò)延遲、或吞吐量等)等因素間進(jìn)行折中。布置策略可以考慮以下因素,如:請求執(zhí)行一個以上程序的用戶的偏好;當(dāng)前執(zhí)行的程序的數(shù)目、標(biāo)識、以及位置;當(dāng)前請求執(zhí)行的程序的數(shù)目以及標(biāo)識;安排用于在將來執(zhí)行的程序的數(shù)目以及標(biāo)識;之前存儲的程序副本的位置;網(wǎng)絡(luò)架構(gòu);地理位置等。此外,在某些實(shí)施例中,在某些情況下可以基于用戶請求或其它因素對默認(rèn)的應(yīng)用策略進(jìn)行覆蓋或修改。舉例而言,特定實(shí)施例提供一組默認(rèn)策略,這組默認(rèn)策略可以被用戶在其執(zhí)行一個以上程序的請求中所表達(dá)的偏好所覆蓋。
      [0061]在計(jì)算系統(tǒng)受跨多個數(shù)據(jù)中心的程序執(zhí)行服務(wù)的管理的實(shí)施例中,程序執(zhí)行服務(wù)可以優(yōu)先選擇在同一數(shù)據(jù)中心內(nèi)執(zhí)行單個程序的多個實(shí)例,和/或在同一數(shù)據(jù)中心內(nèi)執(zhí)行同一用戶的多個單獨(dú)實(shí)例。這樣的策略往往使這些程序能夠利用帶寬相對較高的數(shù)據(jù)中心內(nèi)數(shù)據(jù)交互,與實(shí)現(xiàn)程序?qū)嵗g的通信交換。另一方面,某些實(shí)施例可能優(yōu)先選擇將這些程序?qū)嵗植荚诙鄠€數(shù)據(jù)中心內(nèi),以在可能導(dǎo)致整個數(shù)據(jù)中心不能正常工作的功率、網(wǎng)絡(luò)、或其它大規(guī)模中斷(如程序?qū)嵗龓缀醪慌c其它此類程序?qū)嵗ㄐ?的情況下確??煽啃?。此類分布或合并這種程序?qū)嵗钠每梢灶愃频貞?yīng)用于各其它級別的計(jì)算系統(tǒng)組織(諸如物理子網(wǎng)、組、以及個人計(jì)算系統(tǒng))中。此外,某些實(shí)施例可以采用可用于在多個候選計(jì)算系統(tǒng)之間進(jìn)行選擇的策略,如果不進(jìn)行選擇,將無法在程序執(zhí)行服務(wù)的布置策略之下區(qū)分這些候選計(jì)算系統(tǒng)。舉例而言,一實(shí)施例可以從一組同等條件的候選計(jì)算系統(tǒng)中隨機(jī)選擇計(jì)算系統(tǒng),而另一實(shí)施例可以選擇具有最低資源利用率的計(jì)算系統(tǒng),而另一實(shí)施例可以循環(huán)(round-robin)選擇此計(jì)算系統(tǒng)。
      [0062]此外,對于程序執(zhí)行,不同實(shí)施例可以實(shí)施不同的用于在本地程序存儲儲存庫中存儲程序副本的策略。舉例而言,某些實(shí)施例可以始終在在容納本地程序存儲儲存庫的計(jì)算系統(tǒng)上執(zhí)行之前(或期間、或之后),將程序的本地副本存儲在本地程序存儲儲存庫中??蛇x地,在其它實(shí)施例中,可以僅僅將某些程序存儲在這樣的本地程序存儲儲存庫中。此夕卜,在程序儲存庫容量不足無法存儲給定程序的本地副本時,不同實(shí)施例可以采用不同方法。舉例而言,為了騰出空間以存儲新程序,某些實(shí)施例將選擇清除或移除存儲在程序儲存庫中的一個以上的程序副本,以例如清除最近最少使用的副本、最舊的副本、隨機(jī)副本、以不同方式選定的副本、仍存儲在某些其它相關(guān)程序儲存庫(如同一組中的一個以上的其它計(jì)算系統(tǒng)的程序儲存庫)中的程序的副本等。在其它實(shí)施例中,在給定的程序儲存庫空間已滿時不執(zhí)行清除操作(而是例如周期性地(如每天、重啟時等)從程序儲存庫中刪除所有程序,或僅當(dāng)將程序從程序執(zhí)行服務(wù)中撤銷時刪除程序)。
      [0063]在某些實(shí)施例中,程序可以被分解成多個、可能是固定大小的數(shù)據(jù)塊。通過以該方式分解程序,獲取程序副本的計(jì)算系統(tǒng)可以向多個其它已經(jīng)在其程序儲存庫中存儲了所需程序的計(jì)算系統(tǒng)分配請求。當(dāng)某些其它的多個計(jì)算系統(tǒng)對程序塊的請求予以響應(yīng)時,獲取計(jì)算系統(tǒng)可以向這些響應(yīng)計(jì)算系統(tǒng)請求更多程序塊。因此,同較少地響應(yīng)或不響應(yīng)的計(jì)算系統(tǒng)相比,更偏重由具有足夠的可用資源的計(jì)算系統(tǒng)提供程序塊。
      [0064]某些實(shí)施例可以通過諸如僅僅傳遞與可能已經(jīng)存儲在本地程序儲存庫中的其它程序不同的程序部分的方式進(jìn)行優(yōu)化,以提高程序傳遞的效率。對于同一程序的多個、遞增(incremental)版本,或共享大部分代碼或數(shù)據(jù)的不同程序,此方法是十分有利的。舉例而言,如果程序被分解為多個、可能為固定大小的塊,那么在起初向程序執(zhí)行服務(wù)注冊程序時,可以計(jì)算每個塊的校驗(yàn)和并將其保存。之后,當(dāng)需要獲取程序以用于執(zhí)行時,計(jì)算系統(tǒng)可以將程序塊校驗(yàn)和同與存在于一個以上的程序儲存庫中的程序塊相關(guān)的校驗(yàn)和進(jìn)行比較,然后僅僅獲取尚未存儲的程序塊??蛇x地,某些實(shí)施例可以將程序表示為一組一個以上文件,如可執(zhí)行文件、數(shù)據(jù)文件、以及庫文件。在這種情況下,兩個程序可能共同擁有一個以上的文件(如,庫文件),并且給定計(jì)算系統(tǒng)可以選擇僅僅獲取與已儲存在計(jì)算系統(tǒng)程序儲存庫中的文件不同的、需要獲取以用于執(zhí)行的程序的文件。
      [0065]某些實(shí)施例將提供具有全都是固定大小的程序,然而其它實(shí)施例可以支持不同大小的程序。在計(jì)算諸如內(nèi)存或程序儲存庫的系統(tǒng)資源的程序利用率時,固定大小的程序可以簡化程序的處理。在提供具有不同大小的程序的實(shí)施例中,在存儲程序的本地副本和/或執(zhí)行程序?qū)嵗龝r,可應(yīng)用不同算法(包括諸如最優(yōu)匹配、首次匹配等各種裝箱算法)優(yōu)化固定大小資源(諸如內(nèi)存或硬盤空間)的利用,以限制碎片的數(shù)量。
      [0066]此外,某些實(shí)施例可以提供,在請求執(zhí)行程序之前向多個被管理的計(jì)算系統(tǒng)分配或分發(fā)程序副本的功能。雖然某些實(shí)施例將提供至少一個通用程序儲存庫,用以在首次注冊程序時對程序進(jìn)行存儲,但是由于無法在任何相對于執(zhí)行該程序的計(jì)算系統(tǒng)而言的本地程序儲存庫中找到所述程序,因此在程序首次執(zhí)行時,這些實(shí)施例將遭受很大的時延。如果這樣的實(shí)施例被配置為在本地程序儲存庫中存儲所要執(zhí)行的程序的副本,那么與初始執(zhí)行相比,后續(xù)執(zhí)行將招致相對較小的啟動時延。初次執(zhí)行程序啟動時延相對較長的的問題可以通過在請求執(zhí)行程序之前分配或分布程序副本的方式得到解決。此類實(shí)施例可以向?qū)τ谔峁┏绦驁?zhí)行服務(wù)的一個以上的數(shù)據(jù)中心而言的本地程序儲存庫分配程序的一個以上的副本。采用這種方式,當(dāng)?shù)谝淮握埱髨?zhí)行程序時,通??梢栽谙鄬τ谟?jì)算系統(tǒng)或被選中用于執(zhí)行程序的計(jì)算系統(tǒng)而言的本地(例如,至少在同一數(shù)據(jù)中心中的)程序儲存庫中找到程序。
      [0067]此外,某些實(shí)施例可以在同時或重疊啟動執(zhí)行單個程序的多個實(shí)例的情況下進(jìn)行優(yōu)化。在這種環(huán)境下,可能的情況是,需要由多個不同的計(jì)算系統(tǒng)幾乎在同時獲取所要執(zhí)行的程序的副本。如果各個計(jì)算系統(tǒng)獨(dú)立地從遠(yuǎn)程程序儲存庫獲取程序的副本,那么由于各個計(jì)算系統(tǒng)同時開始在網(wǎng)絡(luò)上傳輸相同數(shù)據(jù),因此可能會導(dǎo)致過度利用網(wǎng)絡(luò)或其它資源。在某些環(huán)境下,同步或安排多個計(jì)算系統(tǒng)獲取程序的一個以上的副本的順序,以更好地利用系統(tǒng)資源(例如,通過最小化不必要的網(wǎng)絡(luò)利用),對于多個計(jì)算系統(tǒng)而言可能是十分有利的。舉例而言,當(dāng)選定的用于執(zhí)行程序的多個計(jì)算系統(tǒng)是同組的一部分,且要從該組外部的一個以上的計(jì)算系統(tǒng)獲取程序副本時,對于多個計(jì)算系統(tǒng)中的第一計(jì)算系統(tǒng),首先從該組外部的計(jì)算系統(tǒng)獲取程序副本(并將其存儲在本地程序儲存庫中)可能是十分有利的。在第一計(jì)算系統(tǒng)已獲取程序副本之后,其余的計(jì)算系統(tǒng)可以通過用于該組的公共數(shù)據(jù)交換媒介從第一計(jì)算系統(tǒng)獲取副本。
      [0068]此外,當(dāng)多個計(jì)算系統(tǒng)中的每個計(jì)算系統(tǒng)要獲取程序副本時,可以利用多種其它技術(shù)來有效地利用網(wǎng)絡(luò)和/或其它計(jì)算資源。舉例而言,可以選擇多個計(jì)算系統(tǒng)中的第一計(jì)算系統(tǒng)來管理向多個計(jì)算系統(tǒng)中的其它計(jì)算系統(tǒng)分發(fā)程序副本。如果多個計(jì)算系統(tǒng)中沒有任何一個計(jì)算系統(tǒng)具有存儲在本地程序儲存庫中的程序的存儲副本,選定的計(jì)算系統(tǒng)就可以發(fā)起從遠(yuǎn)程位置傳輸程序的至少某些部分(例如,塊)。當(dāng)選定的計(jì)算系統(tǒng)接收到程序的若干部分時,選定的計(jì)算系統(tǒng)可以將接收到的部分向多個計(jì)算系統(tǒng)中的其它計(jì)算系統(tǒng)進(jìn)行多播。由于較少的冗余數(shù)據(jù)分組將被發(fā)送到連接多個計(jì)算系統(tǒng)的網(wǎng)絡(luò)中,因此與其它網(wǎng)絡(luò)通信機(jī)制(例如,由多個計(jì)算系統(tǒng)中的每個計(jì)算系統(tǒng)基于TCP進(jìn)行傳輸)相比,多播機(jī)制可以產(chǎn)生更好地利用網(wǎng)絡(luò)。可選地,如果多個計(jì)算系統(tǒng)中的一個以上的計(jì)算系統(tǒng)已在本地程序儲存庫中存儲了程序副本,那么選定的計(jì)算系統(tǒng)可以指示具有程序的存儲副本的一個以上的計(jì)算系統(tǒng)中的至少某些計(jì)算系統(tǒng)向多個計(jì)算系統(tǒng)中的其它計(jì)算系統(tǒng)多播程序的至少某些部分(例如,塊),從而分散塊的傳輸負(fù)載,并最小化對于網(wǎng)絡(luò)的其它計(jì)算系統(tǒng)和/或部分的影響。在基于多播機(jī)制分發(fā)程序之后,多個計(jì)算系統(tǒng)中的一個以上的計(jì)算系統(tǒng)可以利用其它通信機(jī)制(例如,TCP),以獲取還未接收到(例如,由于丟棄網(wǎng)絡(luò)包的緣故)的程序的任意部分。其它分發(fā)機(jī)制可以包括:以將負(fù)載分布在網(wǎng)絡(luò)中的多個計(jì)算系統(tǒng)的其它計(jì)算系統(tǒng)和/或部分上的循環(huán)或其它方式,分發(fā)對部分程序的請求。
      [0069]在某些實(shí)施例中,還可以使用更多的技術(shù)。舉例而言,如果使用基于多播的分發(fā)機(jī)制從組中的一計(jì)算系統(tǒng)向本組中的另一計(jì)算系統(tǒng)分發(fā)程序的某些部分,那么由于多播的緣故,可以采用多種技術(shù)來阻止或限制組外的任何網(wǎng)絡(luò)業(yè)務(wù)。舉例而言,可以為多播分組指定較短的生存時間和/或使用分組尋址技術(shù),使交換機(jī)不向未同該交換機(jī)相連的計(jì)算系統(tǒng)傳輸多播分組。此外,某些實(shí)施例可以實(shí)施多種策略,以最小化網(wǎng)絡(luò)資源的使用量,最小化與傳輸或執(zhí)行用以執(zhí)行的程序副本無關(guān)的計(jì)算機(jī)上的負(fù)載,和/或提供網(wǎng)絡(luò)和/或計(jì)算資源的可預(yù)測的性能。舉例而言,無論對多播和/或點(diǎn)對點(diǎn)傳輸,某些實(shí)施例可以限制計(jì)算系統(tǒng)向其它計(jì)算系統(tǒng)傳輸程序副本的速度。此外,當(dāng)中間網(wǎng)絡(luò)設(shè)備在子網(wǎng)之間傳輸承載著程序副本的若干部分的數(shù)據(jù)分組時,某些實(shí)施例可以限制傳輸速度和/或限制中間網(wǎng)絡(luò)設(shè)備(例如,交換機(jī),路由器等)可以使用的網(wǎng)絡(luò)帶寬的比例。中間網(wǎng)絡(luò)設(shè)備可以基于例如特定類型和/或發(fā)往特定地址(例如,屬于特定范圍內(nèi)的多播IP地址)和/或端口來識別此類數(shù)據(jù)分組。在某些實(shí)施例中,可以對如上所述的多種機(jī)制加以組合以實(shí)現(xiàn)各種網(wǎng)絡(luò)利用策略。
      [0070]在某些實(shí)施例中,還可以使用多種技術(shù)來將一個以上的執(zhí)行程序?qū)嵗龔囊粋€以上的計(jì)算系統(tǒng)遷移至一個以上的其它計(jì)算系統(tǒng)。在一方案中,所述遷移可以反映出與執(zhí)行程序?qū)嵗某跏加?jì)算系統(tǒng)相關(guān)的問題(例如,計(jì)算系統(tǒng)和/或?qū)τ?jì)算系統(tǒng)的訪問失敗)。在另一方案中,遷移可以使其它程序?qū)嵗诔跏加?jì)算系統(tǒng)上執(zhí)行,以例如執(zhí)行更高優(yōu)先級的程序,或?qū)⒊绦驅(qū)嵗膱?zhí)行合并在有限數(shù)目的計(jì)算系統(tǒng)上,以例如使原來執(zhí)行程序?qū)嵗挠?jì)算系統(tǒng)能夠由于諸如維護(hù)、緊急保存等需要而得以關(guān)閉。作為一個特定示例,如果在計(jì)算系統(tǒng)上執(zhí)行的一個以上的程序?qū)嵗枰馁Y源多于從該計(jì)算系統(tǒng)所能獲得的資源,一個以上的程序?qū)嵗涂赡苄枰w移至具有更多資源的一個以上的其它計(jì)算系統(tǒng)??捎觅Y源的過度使用可能是由于各種原因(諸如一個以上的計(jì)算系統(tǒng)所具有的資源比預(yù)期的要少,一個以上計(jì)算系統(tǒng)所使用的資源比預(yù)期(允許)的要多,或者在某些實(shí)施例中,相對于一個以上的保留的或正在執(zhí)行的程序?qū)嵗赡苄枰馁Y源而言,有意的過量使用一個以上的計(jì)算系統(tǒng)的可用資源)所導(dǎo)致的。舉例而言,如果程序?qū)嵗A(yù)期的資源需求在可用資源范圍內(nèi),那么最大資源需求可能會超出可用資源。如果程序?qū)嵗龍?zhí)行需要的實(shí)際資源超過可用資源也可能導(dǎo)致過度使用可用資源。程序遷移可以采用多種方式來執(zhí)行,以例如將在初始計(jì)算系統(tǒng)上本地保存的程序副本轉(zhuǎn)移到目標(biāo)目的地計(jì)算系統(tǒng),和/或在目標(biāo)目的地計(jì)算系統(tǒng)上開始執(zhí)行執(zhí)行于初始計(jì)算系統(tǒng)上的程序的新的實(shí)例。如果可能的話,遷移可發(fā)生在初始執(zhí)行程序?qū)嵗Y(jié)束以前,以例如使當(dāng)前的執(zhí)行狀態(tài)信息能夠被傳遞到新的正在執(zhí)行的程序?qū)嵗?,?或?qū)崿F(xiàn)初始和新的程序?qū)嵗g進(jìn)行其它協(xié)調(diào)。
      [0071]某些實(shí)施例可以以收取費(fèi)用的方式向多個客戶提供程序執(zhí)行服務(wù)。在這樣的環(huán)境下,客戶可以交付一定費(fèi)用,以向程序執(zhí)行服務(wù)注冊或提供程序,并請求執(zhí)行此程序。可以使用各種計(jì)費(fèi)模型,使客戶能夠例如按時間(例如,分鐘、小時、天等)購買對程序執(zhí)行服務(wù)資源(例如,網(wǎng)絡(luò)帶寬、內(nèi)存、存儲器、處理器)的各種配置的訪問權(quán)限,購買對一個以上的預(yù)定虛擬或物理硬件配置的訪問權(quán)限,以附加費(fèi)用購買額外付費(fèi)服務(wù)(例如,提供執(zhí)行優(yōu)先權(quán),以例如在發(fā)起執(zhí)行非優(yōu)先客戶的程序之前發(fā)起執(zhí)行優(yōu)先客戶的程序;提供程序儲存庫的放置優(yōu)先權(quán),以例如在清除優(yōu)先客戶的程序之前清除屬于非優(yōu)先客戶的程序等);購買基于每實(shí)例執(zhí)行在指定時段內(nèi)執(zhí)行程序?qū)嵗哪芰?,等等?br> [0072]如上所述,某些實(shí)施例可以利用虛擬計(jì)算系統(tǒng),并且倘若如此由程序執(zhí)行服務(wù)執(zhí)行的程序可以包括完整的虛擬計(jì)算機(jī)鏡像。在此類實(shí)施例中,所要執(zhí)行的程序可以包括:完整的操作系統(tǒng)、文件系統(tǒng)、和/或其它數(shù)據(jù)、還可能包括一個以上的用戶級進(jìn)程。在其它實(shí)施例中,所要執(zhí)行的程序可以包括一種以上協(xié)同工作以提供某些功能的其它類型的可執(zhí)行程序。在另外的其它實(shí)施例中,所要執(zhí)行的程序可以包括一組物理或邏輯指令和數(shù)據(jù),所述指令和數(shù)據(jù)可本地執(zhí)行于供給計(jì)算系統(tǒng)上,也可以通過虛擬計(jì)算系統(tǒng)、解釋器,或其它軟件實(shí)現(xiàn)的硬件抽象間接執(zhí)行。更一般地,在某些實(shí)施例中,所要執(zhí)行的程序可以包括:一個以上的應(yīng)用程序、應(yīng)用框架、庫、存檔文件、類文件、腳本、配置文件、數(shù)據(jù)文件等。
      [0073]雖然對在程序執(zhí)行服務(wù)中利用互通系統(tǒng)管理器模塊和用于管理程序執(zhí)行的機(jī)器管理器模塊的組合來執(zhí)行程序的實(shí)施例進(jìn)行了說明,但是也可以考慮其它實(shí)現(xiàn),以及在多個程序執(zhí)行服務(wù)模塊間分配職責(zé)。舉例而言,在某些實(shí)施例中,單個模塊或組件可以負(fù)責(zé)管理程序在某些或全部所管理的物理計(jì)算系統(tǒng)或虛擬機(jī)上的執(zhí)行。舉例而言,程序可以通過多種遠(yuǎn)程執(zhí)行技術(shù)(例如,reXeC、rSh等)直接執(zhí)行于目標(biāo)計(jì)算系統(tǒng)上。
      [0074]本領(lǐng)域的技術(shù)人員將認(rèn)識到,雖然上述示例實(shí)施例被用在用數(shù)據(jù)中心提供程序執(zhí)行服務(wù)的環(huán)境中,但是上述示例實(shí)施例也可以用于其它實(shí)現(xiàn)情形。舉例而言,所述設(shè)施可用于由企業(yè)或其它機(jī)構(gòu)(例如,大學(xué))運(yùn)營的部門級內(nèi)聯(lián)網(wǎng)環(huán)境,以為其員工和/或成員提供便利??蛇x地,所述技術(shù)可以為分布式計(jì)算系統(tǒng)所采用,從而以分布式方式執(zhí)行大規(guī)模(例如,科學(xué))計(jì)算任務(wù),所述分布式計(jì)算系統(tǒng)包括分別受多個第三方管理和操作的節(jié)點(diǎn)。
      [0075]根據(jù)前述內(nèi)容,將會理解到,雖然此處為了進(jìn)行說明描述了特定的實(shí)施例,但是可以在不背離本發(fā)明的精神和范圍的前提下,對本發(fā)明做大量的改動。因此,本發(fā)明只受所附權(quán)利要求以及在權(quán)利要求中所陳述的內(nèi)容的限制。此外,雖然下面以特定的權(quán)利要求形式對本發(fā)明的某些方案進(jìn)行了說明,但是
      【發(fā)明者】考慮了具有任意可用權(quán)利要求形式的本發(fā)明的各種方案。舉例而言,雖然目前本發(fā)明只有某些方案被描述為包含于計(jì)算機(jī)可讀介質(zhì),但是同樣還可以將其它方案包含于計(jì)算機(jī)可讀介質(zhì)。
      【權(quán)利要求】
      1.一種計(jì)算機(jī)執(zhí)行的方法,包括: 程序執(zhí)行服務(wù)的一個或更多個計(jì)算系統(tǒng)從程序執(zhí)行服務(wù)的客戶端接收一個或更多個請求,接收到的一個或更多個請求至少包括對操作系統(tǒng)的指示以及與執(zhí)行操作系統(tǒng)有關(guān)的配置信息; 由所述一個或更多個計(jì)算系統(tǒng)選擇程序執(zhí)行服務(wù)的一個或更多個計(jì)算節(jié)點(diǎn),以用于執(zhí)行所指示的操作系統(tǒng);以及 由所述一個或更多個計(jì)算系統(tǒng)引起一個或更多個所選計(jì)算節(jié)點(diǎn)在一個或更多個虛擬機(jī)內(nèi)執(zhí)行所指示的操作系統(tǒng)的一個或更多個實(shí)例,執(zhí)行的引起至少部分基于所接收的配置信息。
      2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)執(zhí)行的方法,還包括:由所述一個或更多個計(jì)算系統(tǒng)提供接口。
      3.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)執(zhí)行的方法,其中,所提供的接口包括圖形用戶界面,并且一個或更多個請求經(jīng)由圖形用戶界面接收。
      4.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)執(zhí)行的方法,其中,所提供的接口包括應(yīng)用程序接口(API),并且一個或更多個請求的接收基于客戶端的遠(yuǎn)程計(jì)算系統(tǒng)對API的調(diào)用。
      5.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)執(zhí)行的方法,其中,接收到的配置信息指定程序執(zhí)行服務(wù)的計(jì)算節(jié)點(diǎn)的數(shù)目,用于執(zhí)行運(yùn)行所指示的操作系統(tǒng)的一個或更多個實(shí)例的一個或更多個虛擬機(jī),并且一個或更多個所選計(jì)算節(jié)點(diǎn)包括所指定數(shù)目的計(jì)算節(jié)點(diǎn)。
      6.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)執(zhí)行的方法,其中,所接收的配置信息指定要執(zhí)行的所指示的操作系統(tǒng)的實(shí)例數(shù)目,并且引起一個或更多個所選計(jì)算節(jié)點(diǎn)執(zhí)行所指示的操作系統(tǒng)的一個或更多個實(shí)例包括:引起一個或更多個所選計(jì)算節(jié)點(diǎn)在相等數(shù)目的虛擬機(jī)內(nèi)執(zhí)行所指示的操作系統(tǒng)的指定數(shù)目的實(shí)例。
      7.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)執(zhí)行的方法,其中,所接收的配置信息指定要執(zhí)行的所指示的操作系統(tǒng)的實(shí)例的最小數(shù)目或要執(zhí)行的所指示的操作系統(tǒng)的實(shí)例的最大數(shù)目中的至少一個,并且引起一個或更多個所選計(jì)算節(jié)點(diǎn)執(zhí)行所指示的操作系統(tǒng)的一個或更多個實(shí)例是根據(jù)所指定的實(shí)例的最小和/或最大數(shù)目執(zhí)行的。
      8.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)執(zhí)行的方法,其中,所接收的配置信息指定啟動執(zhí)行所指示的操作系統(tǒng)的一個或更多個實(shí)例的一個或更多個時間,并且引起一個或更多個所選計(jì)算節(jié)點(diǎn)執(zhí)行所指示的操作系統(tǒng)的一個或更多個實(shí)例是根據(jù)所指定的一個或更多個時間執(zhí)行的。
      9.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)執(zhí)行的方法,其中,所接收的配置信息指定終止執(zhí)行所指示的操作系統(tǒng)的一個或更多個實(shí)例的一個或更多個時間,所述方法還包括:由一個或更多個計(jì)算機(jī)系統(tǒng)根據(jù)所指定的一個或更多個時間來管理一個或更多個虛擬機(jī)的執(zhí)行。
      10.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)執(zhí)行的方法,其中,所接收的配置信息指定一個或更多個準(zhǔn)則,所述一個或更多個準(zhǔn)則與要用于執(zhí)行所指示的操作系統(tǒng)的一個或更多個計(jì)算相關(guān)資源有關(guān)。
      11.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)執(zhí)行的方法,其中,所指定的計(jì)算相關(guān)資源準(zhǔn)則與以下至少一項(xiàng)有關(guān):所指示的內(nèi)存容量、所指示的處理器使用量、所指示的網(wǎng)絡(luò)帶寬大小、所指示的硬盤空間大小或所指示的交換空間大小。
      12.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)執(zhí)行的方法,其中,所指定的計(jì)算相關(guān)資源準(zhǔn)則與對將由所述一個或更多個虛擬機(jī)使用的計(jì)算相關(guān)資源的一個或更多個量的指示有關(guān)。
      13.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)執(zhí)行的方法,其中,所指定的計(jì)算相關(guān)資源準(zhǔn)則包括以下至少一項(xiàng):要用于執(zhí)行所指示的操作系統(tǒng)的一個或更多個計(jì)算相關(guān)資源的最小量;或者要用于執(zhí)行所指示的操作系統(tǒng)的一個或更多個計(jì)算相關(guān)資源的最大量。
      14.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)執(zhí)行的方法,其中,所述一個或更多個所選計(jì)算節(jié)點(diǎn)是程序執(zhí)行服務(wù)的位于兩個或更多個不同地理位置的更大量計(jì)算節(jié)點(diǎn)的一部分,其中,所接收的配置信息包括:對執(zhí)行所指示的操作系統(tǒng)的一個或更多個地理位置的指示,并且對一個或更多個計(jì)算節(jié)點(diǎn)的選擇至少部分基于所指示的一個或更多個地理位置。
      15.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)執(zhí)行的方法,其中,所述一個或更多個請求標(biāo)識用戶賬戶,并且所述方法還包括:確定是否授權(quán)用戶賬戶執(zhí)行所指示的操作系統(tǒng)。
      16.根據(jù)權(quán)利要求1所述的方法,還包括: 由一個或更多個計(jì)算機(jī)系統(tǒng)產(chǎn)生執(zhí)行所指示的操作系統(tǒng)的一個或更多個實(shí)例的費(fèi)用信息,并且費(fèi)用信息至少部分基于一個或更多個所選計(jì)算節(jié)點(diǎn)執(zhí)行一個或更多個虛擬機(jī)的時間量。
      17.一種存儲了內(nèi)容的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì),所述內(nèi)容將計(jì)算系統(tǒng)配置為: 經(jīng)由程序執(zhí)行服務(wù)的接 口接收運(yùn)行鏡像的一個或更多個實(shí)例的請求,所述鏡像包括程序,并且所述請求還包括與運(yùn)行一個或更多個實(shí)例有關(guān)的配置信息; 選擇程序執(zhí)行服務(wù)的一個或更多個計(jì)算節(jié)點(diǎn)以作為一個或更多個實(shí)例的主機(jī),其中,使用一個或更多個虛擬機(jī)運(yùn)行所述一個或更多個實(shí)例,對一個或更多個計(jì)算節(jié)點(diǎn)的選擇至少部分基于所述配置信息;以及 對被選為運(yùn)行一個或更多個虛擬機(jī)的一個或更多個計(jì)算節(jié)點(diǎn)進(jìn)行管理。
      18.根據(jù)權(quán)利要求17所述的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì),其中,所述接口包括圖形用戶界面。
      19.根據(jù)權(quán)利要求17所述的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì),其中,所述接口包括應(yīng)用程序接口(API),并且請求的接收基于遠(yuǎn)程計(jì)算系統(tǒng)對API的調(diào)用。
      20.根據(jù)權(quán)利要求17所述的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì),其中,所接收的配置信息指定:用以運(yùn)行鏡像的程序執(zhí)行服務(wù)的計(jì)算節(jié)點(diǎn)的數(shù)目或要運(yùn)行的鏡像的實(shí)例的數(shù)目。
      21.根據(jù)權(quán)利要求17所述的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì),其中,所接收的配置信息指定:要運(yùn)行的鏡像的實(shí)例的最小數(shù)目、或者要運(yùn)行的鏡像的實(shí)例的最大數(shù)目。
      22.根據(jù)權(quán)利要求17所述的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì),其中,所接收的配置信息指定:開始運(yùn)行鏡像的一個或更多個實(shí)例的一個或更多個時間、或者終止鏡像的一個或更多個實(shí)例的一個或更多個時間。
      23.根據(jù)權(quán)利要求17所述的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì),其中,所接收的配置信息指定與要用于運(yùn)行鏡像的一個或更多個實(shí)例的一個或更多個計(jì)算相關(guān)資源有關(guān)的一個或更多個準(zhǔn)則,所指定的準(zhǔn)則與所指示的內(nèi)存容量、所指示的處理器使用量、所指示的網(wǎng)絡(luò)帶寬大小、所指示的硬盤空間大小或所指示的交換空間大小有關(guān)。
      24.根據(jù)權(quán)利要求17所述的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì),其中,所述一個或更多個所選計(jì)算節(jié)點(diǎn)是程序執(zhí)行服務(wù)的位于兩個或更多個不同地理位置的多個計(jì)算節(jié)點(diǎn)的一部分,其中,所接收的配置信息包括:對要運(yùn)行鏡像的至少一些實(shí)例的一個或更多個地理位置的指示,并且對一個或更多個計(jì)算節(jié)點(diǎn)的選擇至少部分基于所指示的一個或更多個地理位置。
      25.根據(jù)權(quán)利要求17所述的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì),其中,所存儲的內(nèi)容還將計(jì)算系統(tǒng)配置為: 確定用于運(yùn)行鏡像的一個或更多個實(shí)例的費(fèi)用,所確定的費(fèi)用至少部分基于運(yùn)行一個或更多個實(shí)例的時間量。
      26.—種系統(tǒng),包括: 一個或更多個計(jì)算系統(tǒng),其中,各個計(jì)算系統(tǒng)具有一個或更多個處理器;以及 至少一個內(nèi)存,所述內(nèi)存包括指令,當(dāng)所述指令被一個或更多個處理器中的至少一個執(zhí)行時,使系統(tǒng): 經(jīng)由接口從客戶端接收請求,所述接口由程序執(zhí)行服務(wù)提供用于配置對程序的執(zhí)行,所接收的請求包括與執(zhí)行至少一個所指示的程序有關(guān)的配置信息; 選擇程序執(zhí)行服務(wù)的一個或更多個計(jì)算節(jié)點(diǎn),用于執(zhí)行所指示的程序;以及 由所選擇的一個或更多個計(jì)算節(jié)點(diǎn)代表客戶端對所指示的程序的一個或更多個實(shí)例的執(zhí)行進(jìn)行管理,對執(zhí)行的管理至少部分基于所接收的配置信息。
      27.根據(jù)權(quán)利要求26所述的系統(tǒng),其中,所述接口包括應(yīng)用程序接口(API),并且請求的接收基于客戶端的遠(yuǎn)程計(jì)算系統(tǒng)對API的調(diào)用。
      28.根據(jù)權(quán)利要求26所述的系統(tǒng),其中,所接收的配置信息指定以下至少一項(xiàng):用于執(zhí)行所指示的程序的程序執(zhí)行服務(wù)的計(jì)算節(jié)點(diǎn)的數(shù)量、和要執(zhí)行的所指示的程序的實(shí)例的數(shù)目。`
      29.根據(jù)權(quán)利要求26所述的系統(tǒng),其中,所接收的配置信息指定以下至少一項(xiàng):啟動執(zhí)行所指示的程序的一個或更多個實(shí)例的一個或更多個時間、或者終止執(zhí)行所指示的程序的一個或更多個實(shí)例的一個或更多個時間。
      30.根據(jù)權(quán)利要求26所述的系統(tǒng),其中,所接收的配置信息指定一個或更多個準(zhǔn)則,所述一個或更多個準(zhǔn)則與要用于執(zhí)行所指示的程序的一個或更多個計(jì)算相關(guān)資源有關(guān),所指定的準(zhǔn)則包括以下至少一項(xiàng):所指示的內(nèi)存容量、所指示的處理器使用量、所指示的網(wǎng)絡(luò)帶寬大小、所指示的硬盤空間大小或所指示的交換空間大小。
      31.根據(jù)權(quán)利要求26所述的系統(tǒng),其中,對執(zhí)行的管理包括:在第一時間,啟動由所選擇的一個或更多個計(jì)算節(jié)點(diǎn)對所指示的程序的一個或更多個實(shí)例的執(zhí)行;并且所述存儲器還包括指令,當(dāng)所述指令被執(zhí)行時,使系統(tǒng): 在比第一時間晚的第二時間,經(jīng)由所述接口從客戶端接收附加配置信息,所述附加配置信息指定與執(zhí)行所指示的程序有關(guān)的一個或更多個修改;以及 響應(yīng)于接收到所述附加配置信息,動態(tài)修改所指示的程序的一個或更多個實(shí)例中至少一個實(shí)例的執(zhí)行。
      【文檔編號】G06F9/455GK103713951SQ201310537815
      【公開日】2014年4月9日 申請日期:2007年3月29日 優(yōu)先權(quán)日:2006年3月31日
      【發(fā)明者】羅蘭·帕特森-瓊斯, 克里斯托弗·C·平卡姆, 本杰明·托布勒, 威廉·R·范比林, 加百利·斯密特, 克里斯托夫·布朗, 昆頓·R·胡利 申請人:亞馬遜技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1