專利名稱:用于動態管理計算容量請求的方法和系統的制作方法
用于動態管理計算容量請求的方法和系統相關申請案本申請要求2010年9月21日提交的美國非臨時申請第12/887,241號的權益,該申請的公開內容的全文據此以引用的方式并入本文。
背景技術:
公司和機構運行使眾多計算系統互連以支持其運營的計算機網絡。計算系統可位于單個地理位置中(例如,作為局域網的一部分)或位于多個不同地理位置中(例如,經由一個或多個專用或公用的中間網絡)。數據中心可以置放大量互連的計算系統,例如專用數據中心是由單個機構進行操作并且公用數據中心是由第三方進行操作以把計算資源提供給客戶。專用和公用數據中心可以對數據中心、機構或其它客戶擁有的硬件提供網絡訪問、電力、硬件資源(例如,計算和存儲)和安全安裝設施。為了幫助提高數據中心資源的利用率,虛擬化技術可以允許單個物理計算機主控作為到連接的計算機用戶的獨立計算機出現而操作作的虛擬機的ー個或多個實例。運用虛擬化,單個物理計算裝置可以動態方式創建、維持或刪除虛擬機。用戶又可基于“按照需要”或至少基干“按照請求”請求來自數據中心的計算機資源并且具備不同量的虛擬機資源。隨著數據中心的規模和范圍増大,提供、支配和管理數據中心的物理和虛擬計算資源已變得越來越復雜。
在附圖各處,參考數字可以重用于指示參考元件之間的對應性。提供附圖以示出本文描述的示例性實施方案且并非g在限制本公開內容的范疇。圖1是示意地示出了可經由通信網絡把計算資源提供給多個用戶計算系統的程序執行服務的示例的網絡圖;圖2A是被配置來管理程序執行服務的用戶要用的計算資源的請求的交互請求管理器的闡釋性組件的方框圖;圖2B示意地示出了程序執行服務的用戶計算系統與交互請求管理器之間的示例性交互的網絡圖;和圖3A和圖3B是示出了由交互請求管理器組件實施的交互請求管理器例程的流程圖。圖3C是示意地示出了交互請求管理器的實施方案可通過其與用戶計算系統進行通信以用于修改分配的計算資源的設置的例程的示例的流程圖。圖4是示意地示出了交互請求管理器的實施方案可通過其與用戶計算系統進行通信以提供供用戶選擇的多個虛擬化環境的例程的示例的流程圖。
具體實施例方式描述用于動態管理對來自計算資源提供者(程序執行服務)的計算容量的請求的系統和方法的實施方案。舉例來說,計算資源可以包括程序執行能力、數據存儲或管理能力、數據庫管理能力、網絡帶寬、應用監控或日志記錄、用于采取糾正措施以解決問題的能力等。在某些實施方式中,用戶可請求生成可在當前或未來使用時段期間管理用戶的計算機資源的虛擬化環境。例如,用戶可請求生成可在使用時段期間運行用戶的自定義軟件應用和為用戶管理或預約合適的程序執行容量、數據存儲容量、數據庫管理選項和/或網絡帶寬的虛擬化環境。計算資源提供者可確定提供者的計算機資源中的哪些可用于滿足用戶的請求并且可在請求的使用時段期間把這些計算機資源分配給用戶。可以高度靈活地選擇用戶請求的使用時段和/或其它參數以滿足用戶的計算機資源需要。用戶請求可以包括用于指定用戶的偏好、限制和/或需求的一個或多個用戶可選擇參數。例如,用戶請求可指定在使用時段期間執行某個特定程序(或多個特定程序)、在使用時段期間使用特定類型或地理分布的計算機資源、使用時段具有希望的開始日期、結束日期和/或持續時間等等。在某些實施方式中,計算資源提供者對可由用戶提交的請求參數的范圍施加很少的限制或沒有限制。作為ー個可能的示例,用戶可能夠請求在可以包括在ー個或多個地理位置的計算機資源的一組計算機資源上執行特定程序。用戶可能夠使用應用編程接ロ(API)或其它類型的計算接ロ把程序和程序執行參數傳達到程序執行服務,用于生成虛擬化環境。例如,用戶可以使用Web應用檔案文件(如Java WAR文件)上傳軟件應用。接著,程序執行服務可以自動配置虛擬化環境(例如,“應用容器”),其可是包括用于用戶程序的應用軟件堆棧以及用于在程序執行服務上執行用戶程序的一個或多個基礎結構服務的運行時環境。應用容器可包括用戶可選擇的操作系統(例如,Linux、Windows等)、應用服務器(例如,ApacheTomcat)、系統或應用配置等。虛擬化環境可被配置來寄宿在特定URL處。基礎結構服務可包括但不限于:負載平衡器,其用于跨請求的計算資源分布工作量;負載調節器,其響應于負載或需求變化而調節計算資源;監控接ロ,其允許用戶監控程序、數據存儲資源(例如,可伸縮容量塊存儲裝置)等的執行。在某些實施方案中,用戶可能夠選擇可包括在容器中的一個或多個程序或服務。例如,用戶可能夠從多個數據庫模型(例如,關系數據庫、SQL數據庫、Oracle數據庫等)中進行選擇。在某些實施方案中,基礎結構服務可被自定義用于用戶而非作為多個用戶之間共享的資源。例如,在某些這類實施方案中,負載平衡器可被單獨自定義用于用戶應用而非在程序執行服務的多個用戶之間進行共享或分布。虛擬化環境的特定實施方案的可能優點是計算系統允許用戶在希望的情況下具有靈活度和對應用容器的內容的控制。例如,在某些情況下,用戶可以僅提供用戶程序,并且計算系統可以自動管理由虛擬化環境使用的所有剰余基礎結構的部署。在其它情況下,用戶可以選擇和/或配置包括在虛擬化環境中的ー個或多個基礎結構服務。在某些情況下,用戶可以選擇在不同地理區域中的計算資源,以便實現用于用戶應用的希望的部署拓撲。可以以任何希望的方式配置或選擇部署拓撲。例如,部署拓撲可以基于用戶的客戶的位置或區域,以便改善應用的性能(例如,減小網絡延時)。作為另ー示例,部署拓撲可以被配置來使用ー個或多個區域或地帯中的計算資源以例如通過改善應用對特定區域或地帶中的計算資源的故障(例如,由于ー個區域或地帯中的不利天氣狀況)的復原能力來改善用戶應用的穩健性。此外,在特定實施方案中,用戶在執行程序期間保持對計算資源的訪問,并且用戶可以在執行期間控制某些或所有計算資源。例如,在某些這類實施方案中,用戶在希望的情況下可以選擇使用戶應用脫離虛擬化環境。在特定收費實施方式中,計算機資源提供者可以向用戶收取針對請求的預約費(例如,當準許該請求時)和/或對于在使用時段期間提供可用計算機資源的使用的使用費。各種類型或級別的費用安排是有可能的。例如,可以由用戶請求用于直接用戶的計算機資源(“按需資源”)。在某些此類情況下,用戶可能不會支付預約費但可能支付更高使用費。作為另ー示例,用戶可能會預約計算機資源以便在未來使用時段期間獲得保證的可用性(“預約的資源”)。可以向用戶收取進行預約的預約費并且還可基于在使用時段期間實際使用的計算機資源量向用戶收取使用費。在某些這類情況下,預約資源的使用費可以從按需資源的使用費打折扣并且/或者可以在更接近使用時段之時而非更接近進行請求之時收取預約費。在另ー示例中,計算機資源提供者可以允許用戶對未使用的計算機資源(“現貨資源”)進行競價。在某些這類情況下,計算機資源提供者可以設置基于資源供應和需求而變化的現貨價格,并且可使資源可用于其競價達到或超過現貨價格的那些用戶。現將參考g在闡釋而非限制本公開內容的特定實施例和實施方案描述本公開內容的各個方面。圖1是示意地示出了可經由通信網絡108把計算資源提供給多個用戶計算系統104的程序執行服務100的示例的網絡圖。例如,程序執行服務100可管理來自用戶的請求以代表用戶執行程序或程序集。至少ー些用戶計算系統104可在遠離程序執行服務100之處。在此示例中,用戶可使用計算系統104以通過通信網絡108訪問程序執行服務100。網絡108可以例如是可能由各個不同方運營的鏈接網絡的可公開訪問的網絡,如互聯網。在其它實施方案中,網絡108可以是專用網,例如非特權用戶完全或部分無法訪問的企業或大學網絡。在其它實施方案中,網絡108可以包括可訪問互聯網和/或從互聯網訪問的一個或多個專用網。程序執行服務100提供用于管理多個用戶的程序的執行的多種功能。在圖1所示的示例中,程序執行服務100包括可代表用戶執行程序的多個計算節點112。計算節點112可以包括ー個或多個物理計算系統116和/或寄宿在ー個或多個物理計算系統上的ー個或多個虛擬機120。例如,主機計算系統可以提供多個虛擬機120并且包括用于管理這些虛擬機的虛擬機(“VM”)管理器124 (例如,系統管理程序或其它虛擬機監控器)。在圖1所示的示例中,每個計算節點112具有可用于執行一個或多個程序的一定量的計算資源。每個計算節點112可以被配置來提供可以例如按處理容量(例如,處理單元的數量和/或大小)、存儲器容量、存儲容量、網絡帶寬容量、非網絡通信帶寬等中的ー個或多個的組合來測量的特定量的程序執行容量。在某些實施方案中,程序執行服務100可以提供預先配置的計算節點112,其中每個預先配置的計算節點具有可用于代表用戶執行程序的類似和/或等量的資源。在其它實施方案中,程序執行服務100可以提供對各個不同計算節點112的選擇,用戶可以從這些節點中選擇節點來代表用戶執行程序。在其它實施方案中,程序執行服務100可以生成特定于用戶和用戶程序的執行的各種計算節點。在某些這類實施方案中,計算節點112可以具有不同量和/或類型的計算資源(例如,處理單元的大小、速度和/或類型;處理單元的數量;存儲器和/或存儲裝置的量;平臺配置,如32位或64位操作系統等)。程序執行服務100可以提供可訪問提供數據、程序和其他用戶信息的大容量存儲的存儲節點134的用戶計算系統104。存儲節點134可以包括任何類型的持久性數據存儲裝置,例如非易失性存儲裝置,如硬盤驅動器、光盤驅動器等。在圖1所示的示例中,計算節點112可經由網絡128訪問存儲節點134。網絡128可以包括多個聯網裝置(未示出),如交換機、邊緣路由器、核心路由器等。網絡128可以但不必須是與圖1所示的網絡108不同的網絡。程序執行服務100的用戶可經由交互請求管理器130與程序執行服務100進行交互以請求程序執行服務的優選和/或所要資源(例如,程序執行容量和/或存儲資源)。交互請求管理器130可經由網絡128連接到計算節點112和存儲節點134。交互請求管理器130可通過網絡108從用戶計算系統104接收資源請求。用戶可以經由交互請求管理器130請求服務100提供用于代表用戶(或由該用戶授權的其他用戶)執行程序的一個或多個計算節點。在某些實施方案中,用戶可以經由交互請求管理器130請求服務100生成可管理和預約可能被需要用于代表用戶執行程序的計算資源的ー個或多個計算節點。在不同實施方案中,可以在請求代表用戶執行程序之時和/或在ー個或多個其它時間(如當用戶進行注冊和/或預訂程序執行服務100的使用服務時)指定計算資源。在某些實施方案中,交互請求管理器130可以對ー個或多個用戶提供預訂和/或注冊服務,使得用戶可以指定與代表用戶執行的一個或多個程序有關的信息(例如,程序、源代碼、一個或多個程序的可尋址位置等)、帳戶信息(例如,用戶名、記賬信息等)、使用條款等。在某些實施方案中,在用戶與交互請求管理器130進行交互以為了服務預訂和/或注冊之后,可以向用戶發出與該用戶相關并且要結合代表該用戶執行程序所使用的一個或多個請求識別符(例如,密鑰、令牌、用戶名、密碼等)。在其它實施方案中,可以提供除交互請求管理器130外的其它模塊以執行與程序執行服務100的預訂和/或注冊服務有關的各種操作。在某些實施方案中,由一或多個物理或虛擬計算系統執行或具體實施交互請求管理器130。例如,在某些實施方案中,具有包括CPU、I/O組件、存儲裝置和存儲器的組件的服務器計算系統可以用來執行交互請求管理器130。I/O組件包括顯示器、到網絡128的網絡連接、計算機可讀介質驅動器和其它I/O裝置(例如,鍵盤、鼠標、揚聲器等)。交互請求管理器130的實施方案可以作為一個或多個可執行程序模塊存儲在服務器的存儲器中,并且交互請求管理器130可通過網絡128與計算節點112 (例如,物理計算系統116和/或VM120)進行交互。交互請求管理器130可經由網絡108從用戶接收對程序執行服務100的計算資源的請求。圖2A是被配置用于管理對代表用戶執行程序的請求的交互請求管理器130的實施方案的說明性組件的方框示意圖。在這個實施方案中,交互請求管理器包括資源生成模塊204、資源調度模塊208、監控和報告模塊212以及記賬模塊216。資源生成模塊204從用戶接收對程序執行服務100的計算資源的請求,例如生成一個或多個計算節點以管理和預約可用于在使用時段期間執行用戶程序的計算資源的請求。用戶可以請求程序執行計算節點立即可用、可以請求在未來時間生成程序執行計算節點或可以請求基于其它條件生成程序執行計算節點。可以由資源生成模塊204以各種方式接收對程序執行計算節點的請求。例如,可直接從用戶(例如,經由由程序執行服務提供的交互控制臺或其它GUI)、從自動開始執行其它程序或其自身的其它實例的用戶的執行程序、從編程工具(例如,命令行工具、集成開發環境(例如,Eclipse)等)、從經由由程序執行服務提供的應用編程接ロ(“API”)(例如,使用Web服務的API)與交互請求管理器進行交互的程序等等接收請求。對計算節點的請求可以包括計算節點的數量和/或類型、要使用的計算節點的最小和/或最大數量、在其期間保證計算節點的可用性的使用時段、請求的到期時間等。請求可以指定在使用時段期間僅在生成的計算節點上執行特定程序。對計算節點的請求可以包括其它類型的偏好、需求和/或限制(例如,存儲容量或網絡帶寬的量、節點的地理和/或邏輯位置、終止條件等)。在某些實施方案中,請求包括用戶程序,并且資源生成模塊204自動提供基礎結構資源使得可由程序執行服務100執行用戶程序。例如,資源生成模塊204可以自動配置虛擬化環境,其可是包括用于用戶程序的應用軟件堆棧以及用于執行用戶程序的一個或多個基礎結構服務的運行時環境。虛擬化環境可包括用戶可選擇的操作系統(例如,Linux、Windows等)、應用服務器(例如,Apache Tomcat)和系統或應用配置等。虛擬化環境可被配置來寄宿在特定URL處。基礎結構服務可包括但不限于:負載平衡器,其用于跨請求的計算資源分布工作量(如應用流量);負載調節器,其響應于負載或需求變化而調節計算資源;監控接ロ,其允許用戶監控程序、數據存儲資源(例如,可伸縮容量塊存儲裝置)等的執行。在某些實施方案中,用戶可能夠選擇由程序執行服務100提供且可包括在虛擬化環境中的一個或多個程序或服務。例如,用戶可能夠從多個數據庫模型(例如,關系數據庫、SQL數據庫、Oracle數據庫等)中進行選擇。在某些實施方案中,基礎結構服務可被自定義用于用戶而非作為程序執行服務100的多個用戶之間共享的資源。例如,在某些這類實施方案中,負載平衡器可被單獨自定義用于用戶應用而非在程序執行服務100的多個用戶之間被共享或分布。在某些實施方案中,虛擬化環境可被配置來允許用戶應用產生進程線程或打開用于與其它應用進行通信的任何合適端ロ(例如,除端ロ 80外的端ロ)。例如,虛擬化環境可以支持超文本傳輸協議安全端ロ(HTTPS)。交互請求管理器130的特定實施方案的可能優點是用戶可以僅把自定義應用上傳到程序執行服務100,且接著交互請求管理器130可生成包括用來在程序執行服務100上執行用戶自定義應用的資源和應用堆棧的虛擬化環境。使得能夠執行用戶程序所需的與交互請求管理器130的用戶交互量范圍可以從相對少的交互(例如,與使用JavaWAR文件上傳程序差不多)到相對高度的交互(例如,用戶可以自定義大致上虛擬化環境的所有方面)。因此,交互請求管理器130的實施方案可以提供虛擬化環境的相對高度的靈活性和可自定義能力。在某些實施方式中,程序執行服務100 (或其它提供者)可以使ー個或多個標準或默認虛擬化環境可供服務100的用戶使用。對程序執行容量的請求可以指定使用時段,在該使用時段期間可使計算資源可用于用戶。在某些實施方式中,程序執行服務100可以對用戶提供在使用時段期間請求的計算資源將可用的保證。在不同實施方案中,可以以不同方式指定使用時段。例如,使用時段可以指示在開始時間開始并且在到期時間結束的指定持續時間(例如,小時、天、周、月、年等數目)。開始時間和/或到期時間可以包括一天中的時間(例如,早上7:00)和日期(例如,2010年I月23日)。開始時間可在某個未來時間,例如未來的一小時或數小時、一天或數天、一周或數周或者一年或數年。在某些情況下,未來使用時段的開始時間可以比請求(或請求的確認)時間至少晚特定時段,例如未來的至少ー小時、一天、一周、一月或更長時間。在交互請求管理器130的某些實施方式中,延遲時段可以發生在由交互請求管理器130接收到對計算節點的請求的時間與準許該請求的時間或將確認提供給用戶的時間之間。例如,延遲時段可能是因由交互請求管理器130或程序執行服務100執行的各種處理操作、管理操作、會計操作等而發生。在某些這類實施方式中,請求的使用時段指的是在這些延遲時段被考慮之后(或大致在其之后)的時段。例如,在特定實施方式中,延遲時段可以是數秒、數分鐘或幾小時。在特定的此類實施方式中,請求的未來使用時段的開始時間可以是超過這樣的延遲時段的未來時間。在交互請求管理器130的特定其它實施方式中,開始時間可以是由程序執行服務100提交、接收或準許用戶請求的時間。在某些情況下,請求可以指示使用時段直到被用戶明確終止才到期(例如,可以不設置到期時間)。持續時間可以在從一小時到一周、一周到一月、一月或數月、一年或數年或某個其它持續時間的范圍中。在某些實施方案中,使用時段可以包括上述(或其它)因素的組合以便對用戶提供調度計算機資源中的高度靈活性。在某些情況下,在程序服務100生成滿足用戶請求的計算節點之后,用戶可對程序或一個或多個計算節點的設置進行ー個或多個更改。例如,用戶可以改變與ー個或多個計算節點相關的存儲裝置或網絡帶寬的量或類型、可以改變與ー個或多個計算節點相關的使用時段或終止條件、可以終止程序的執行等。用戶可以各種方式請求ー個或多個更改,如本文所述。例如,用戶可經由⑶1、命令行工具、集成開發環境(例如,Eclipse)、API調用等請求ー個或多個更改。在由資源生成模塊204接收到對計算節點的請求之后,資源調度模塊208可調度和分配計算節點以滿足請求。例如,在接收到對程序執行容量的請求之后,資源調度模塊208可以確定用于程序執行的ー個或多個計算節點112。在某些實施方案中,即使請求是針對未來的可用性,也在請求之時執行對要使用的計算節點112的確定。在其它實施方案中,計算節點的確定推遲到后來某個時間(例如,在使用時段開始之前),使得確定可基于那時可用的信息。資源調度模塊208可以分配來自計算節點112的一個或多個計算節點以供用戶在請求的使用時段期間利用。在某些實施方案中,分配ー個或多個特定計算節點112(例如,ー個或多個特定物理計算節點116和/或虛擬計算節點120)以供用戶(或授權用戶)在整個使用時段期間優先使用。在其它實施方案中,資源調度模塊208可以分配來自計算節點池的計算節點,而非把特定計算節點分配給特定用戶用于使用時段。計算節點池可以包括有足夠資源用于滿足用戶或授權用戶的程序執行請求的適量計算節點。在某些這類實施方案中,在使用時段期間接收到執行ー個或多個程序的請求之后,可以從計算節點池中選擇足以執行該ー個或多個程序的適量計算節點,并且在選定節點上開始程序執行。在選定量的計算節點不再用于執行請求之后(例如,在請求的執行終止和/或完成之后),可將這些計算節點返回到計算節點池以供用戶或其它授權用戶在使用時段期間使用。在某些實施方式中,分配計算節點池的節點以供用戶(或授權用戶)專用、排他使用或優先使用。在某些這類實施方式中,用戶(或授權用戶)未在使用的計算節點池的節點可以分配給其他用戶用于程序執行,并且如果用戶(或授權用戶)需要這些節點來滿足請求的容量,那么可以終止其他用戶的程序。在使用時段期間,用戶(或授權用戶)可以把對在分配的計算節點上執行ー個或多個程序的請求提交到交互請求管理器130。程序執行請求可以包括用于開始ー個或多個程序的執行的各種信息,如要執行的程序的可執行或其它副本、先前為執行而注冊或以其它方式供應的程序的指示以及要同時執行的程序實例的數量(例如,表示成實例的單個希望數量、希望實例的最小和最大數量等)。請求可以指定用于執行程序的計算節點的數量和/或類型、要使用的計算節點的最小和/或最大數量、請求的到期時間、執行的優選執行時間和/或時段等。請求可以包括對于執行一個或多個程序的其它類型的偏好和/或需求(例如,資源分配、執行的地理和/或邏輯位置、執行與其它程序和/或計算節點的接近度、時間相關的條件、終止條件等)。資源調度模塊208可以以不同方式(包括基于請求中指定或以其它方式指定的針對程序和/或相關用戶的任何偏好、限制和/或需求)確定哪些分配的計算節點要用于執行每個程序實例。例如,如果確定了用于執行程序實例的優選和/或所要資源(例如,存儲器和/或存儲裝置;CPU類型、周期或其它性能度量;網絡容量;平臺類型等)的條件,那么用于執行程序實例的適當計算節點的確定可以至少部分基于計算節點是否具有可用于滿足這些資源條件的足夠資源。在使用時段期間,由資源生成模塊204接收到的代表用戶或授權用戶在分配的計算節點上執行程序的請求可以導致在分配的計算節點中的ー個或多個上開始程序執行。在某些情況下,可以在使用時段期間接收足夠的對程序執行的請求使得所有分配的計算節點是在使用中(例如,執行程序)。在使用時段期間接收到的對程序執行的另外的請求可以被拒絕,或者可以被資源調度模塊208保留或排入隊列直到ー個或多個節點變得可用為止。在某些實施方案中,資源調度模塊208可以執行關于滿足請求的ー個或多個管理操作,例如強制執行與請求相關的使用時段或其它限制、釋放計算資源來滿足請求、授權和/或認證請求和/或請求用戶等。例如,在某些情況下,來自用戶的請求可以指定在使用時段期間僅特定用戶被授權可以訪問分配的計算節點。在某些情況下,來自用戶的請求可以指定在使用時段期間僅在分配的節點上執行ー個或多個指定程序。其它限制可包括對程序執行持續時間的限制、對在程序執行期間發生的費用的限制等。ー個或多個上述限制(或其它限制)的組合可以由用戶指定并由交互請求管理器130在允許訪問分配的計算節點之前檢查。在某些實施方式中,在使用時段到期之后,資源調度模塊208釋放分配的計算節點(例如,專用計算節點或計算節點池中的節點)以供其他用戶使用。在某些這類實施方式中,終止在使用時段到期時執行的程序。在其它實施方式中,不終止此類執行的程序并且允許其繼續執行直到更高優先級的用戶請求訪問計算節點為止。在圖2A所示的實施方案中,監控和報告模塊212在使用時段期間監控和追蹤分配的計算節點的使用并且向用戶報告有關使用的信息和統計數據。例如,監控和報告模塊212可以追蹤在分配的計算節點上執行程序的用戶的使用模式。使用模式可包括訪問節點的用戶的數量或身份、程序執行的開始/結束時間和持續時間和/或其他用戶指定模式或診斷。在某些此類實施方案中,監控和報告模塊212可以把交互反饋(包括例如何時程序可能在計算節點上執行和/或要執行多久、實際或預測的節點需求等的指示)提供給用戶。在某些實施方案中,監控和報告模塊212可生成詳述或匯總使用統計數據的報表并經由電子郵件把該報表傳達給用戶或提供經由Web服務的對報表、使用統計數據或交互反饋的訪問。某些程序執行服務100可收費,使得服務代表用戶執行程序或分配計算資源來獲取由用戶支付的ー筆或多筆費用。在某些收費服務中,交互請求管理器130可以可選地包括圖2A中示意地示出的記賬模塊216。例如,在某些實施方案中,可以基于被分配用于代表用戶執行一個或多個程序的程序執行容量的量和/或類型(如基于被分配用于執行用戶的程序的處理單元的數量、存儲器的量、存儲裝置的量、網絡資源的量等中的ー項或多項)對用戶收取費用。在某些實施方案中,費用可以基于其它因素,如用來執行程序的計算資源的各種特征,例如基于CPU能力或性能、平臺類型(例如,32位、64位等)等。在某些實施方案中,可以基于多種使用因素(如毎次使用服務的價格、使用計算服務的單位時間的價格、每個使用的存儲裝置的價格、每個傳入和/或傳出的數據的價格等)收取費用。費用可以基于諸如與程序執行容量請求有關的各種其它因素和/或與執行程序有關的各種特性(例如,執行連續性、容錯等)。在至少某些實施方案中,程序執行服務可以提供用于代表多個用戶執行程序的各種服務或功能級別、類型和/或等級中的一個或多個,且在某些這類實施方案中,各種費用可以與各種服務級別、類型和/或等級相關。記賬模塊216可監控和追蹤計算機資源的使用并計算應收取的使用費。可以對用戶收取用于預約計算容量的固定費用支付(例如,預付或周期性地開賬単),且在某些情況下對用戶收取其它使用費(例如,與各種資源(如電、物理機柜空間、網絡利用等)的使用相關的可變費用)。例如,當提出在使用時段期間利用計算資源的請求時或當程序執行服務100準許該請求時,可以對提出請求的用戶收取預約費。預約費可以基于例如請求的資源量、使用時段的開始時間和/或持續時間、服務是否將被需要來購買額外計算硬件來滿足請求等。例如,如果開始時間是在不久的將來,那么預約費可以比開始時間是在更遠的將來的情況下更高。此外,可以對用戶(或授權用戶)收取針對在使用時段期間利用資源的使用費。例如,可以基于例如程序執行的持續時間、用來執行程序的資源的類型等對請求在使用時段期間在分配的計算節點上執行程序的授權用戶收取使用費。如上文論述,各種類型或級別的費用安排是有可能的。例如,可以不對請求用于立即使用的按需資源的用戶收取預約費,但是可以對其收取比對支付預約費以預約用于未來使用時段的資源的用戶收取的使用費更高的使用費。記賬模塊216可以追蹤使用、計算適當費用和開賬單給用戶和/或授權用戶(或把記賬信息提供給會計模塊或服務)。在某些情況下,用戶請求可以指示把授權用戶產生的某些或所有使用費開賬單給用戶而非授權用戶。在某些此類情況下,記賬模塊216可以適當地在用戶和授權用戶之間進行費用分配。可與圖2A所示不同地配置交互請求管理器130。例如,可組合、重新安排、添加或刪除由所示模塊提供的各種功能。在某些實施方案中,額外或不同的處理器或模塊可以執行參考圖2A中所示的示例性實施方案描述的某些或所有功能。許多實施方式變化是有可能的。雖然按照程序執行容量的管理進行了大致描述,但是在其它實施方案中,交互請求管理器130可被配置來管理供多個用戶使用的額外或替代類型的計算相關資源和對這些計算相關資源的可用性提供靈活的保證。這些資源可以包括ー個或多個以下項:持久性數據存儲能力(例如,在非易失性存儲器裝置如硬盤驅動器上);臨時數據存儲能力(例如,在易失性存儲器如RAM上);消息排隊和/或傳遞能力;其它類型的通信能力(例如,網絡套接字、虛擬通信電路等);數據庫管理能力;專用帶寬或其它網絡相關資源;非網絡帶寬;輸入裝置能力;輸出裝置能力;CPU周期或其它指令執行能力;等。圖2B是示意地示出了用戶計算系統104a與程序執行服務100的交互請求管理器130之間的示例性交互的網絡圖。程序執行服務100可把計算資源提供給多個用戶計算系統104a、104b、...、104n。在這個說明性示例中,程序執行服務100對用戶計算系統104a、
104b.....104n提供API以用編程方式與交互請求管理器130進行交互。圖2B說明性地
示出了用戶計算系統104a使用請求API傳達對在程序執行服務100的計算資源上執行程序的請求。請求API (I)是經由網絡108傳達并且(2)是由程序執行服務100的交互請求管理器130接收。請求API可包括關于用戶的請求的信息,例如用戶的程序(例如,要執行的程序的可執行或其它副本或先前為執行而注冊或以其它方式供應的程序的指示等)、計算節點的數量和/或類型、要使用的計算節點的最小和/或最大數量、請求在其期間計算節點的可用性(或計算節點被保證可用)的使用時段、請求的到期時間等。請求API可包括關于請求的其它信息,例如與用戶程序或用戶對計算資源的需求有關的偏好、需求和/或限制。例如,請求API可包括關于在使用時段期間準許哪些用戶訪問計算資源、可在使用時段期間執行哪個程序(或哪些程序)、存儲容量或網絡帶寬的量、節點的地理和/或邏輯位置、終止條件等的信息。在圖2B所示的示例中,交互請求管理器130經由網絡108傳達作為由用戶計算系統104a接收的(4)的確認API (3)。確認API可包括與在請求的使用時段期間(或在不同的使用時段期間)程序執行服務100是否可準許請求(全部或部分)有關的信息。確認API還可以包括與用戶請求相關且要在使用時段期間結合訪問分配的計算資源而使用的一個或多個請求識別符(例如,密鑰、令牌、用戶名、密碼等)。確認API可包括其它信息,例如確認可滿足用戶的偏好、需求和/或限制的信息。圖2B說明性地示出了用戶計算系統104a經由API與程序執行服務100的交互請求管理器130以編程方式進行交互。程序執行服務100可經由API從其它用戶計算系統(例
如,用戶計算系統104b.....104n)接收對服務的計算資源的可用性的請求并且可經由API
把確認傳達給其它用戶計算系統(在圖2B的說明性示例中未示出這樣的請求和確認)。交互請求管理器130 (或其它合適組件)可調度來自多個用戶計算系統的請求并且可在各個請求的使用時段期間分配計算資源。程序執行服務100與用戶計算系統之間的其它類型的編程交互(此外或替代地)是有可能的。例如,可直接從用戶(例如,經由由程序執行服務提供的交互控制臺或其它GUI)、從自動開始執行其它程序或其自身的其它實例的用戶的執行程序等接收請求。作為用戶計算系統104a與程序執行服務100的交互請求管理器130之間的交互的額外說明性示例,用戶可以請求交互請求管理器130生成用于用戶程序的應用容器。使用請求API (1),用戶可諸如經由Java WAR文件上傳程序。用戶可使用Web瀏覽器、命令行工具或集成開發環境上傳程序。程序可以是用戶希望的任何應用。例如,程序可以是Web應用。接著,交互請求管理器130可接收程序(例如,請求API (2))。接著,交互請求管理器30可以通過自動生成用于用戶程序的應用容器來處理用戶請求。應用容器可包括使用戶程序能夠可伸縮和容錯的用于用戶的其它服務。在某些實施方案中,交互請求管理器30在沒有來自用戶的進一步輸入的情況下自動生成應用容器(包括基礎結構服務)。在其它實施方案中,用戶可選擇(例如,通過選擇和/或配置包括在容器中的基礎結構服務)對應用容器的生成施加控制度。可創建代表用戶生成應用堆棧、自動伸縮、負載平衡、版本控制、存儲和/或其它服務的應用容器。例如,交互請求管理器130可以生成Linux操作系統、ApacheTomcat服務器、Oracle關系數據庫的實例以及一個或多個服務,例如負載平衡、監控和自動伸縮,用于執行用戶程序。接著,交互請求管理器130可以經由確認API (3)和⑷向用戶確認應用容器的創建。在接收到確認API (4)之后,用戶可以在本地改變程序。例如,用戶可以使用集成開發環境在本地更新和/或測試應用并且可以(例如,經由后續請求API (I)、(2))再次把更新的程序發送到交互請求管理器130。如上文論述,交互請求管理器130可以(在具有或沒有進ー步的用戶輸入的情況下)自動生成或更新用于修訂的程序的應用容器。在生成應用容器之后,用戶可改變由交互請求管理器130生成的服務。用戶可以在用戶程序的執行開始之前或之后使用網頁、交互控制臺等進行這些更改。例如,用戶可以優選Windows操作系統而非Linux操作系統或優選Microsoft SQL數據庫而非Oracle數據庫并且可例如使用API或交互控制臺請求交互請求管理器130進行這些更改。作為另ー示例,用戶可能希望改變Apache Tomcat服務器實例的設置(如使用的端ロ)并且使用例如API或交互控制臺請求更改。作為另ー示例,用戶可以優選關掉負載平衡并且可請求交互請求管理器130停用負載平衡。因此,用戶可以請求任何類型的希望的變化,并且交互請求管理器130可嘗試實施用戶希望的變化。用戶還可與任何其他用戶共享應用容器。用戶還可以隨時請求刪除用戶程序和取消分配應用容器的計算資源。如本文論述,應用容器還可以包括用于用戶程序的監控服務。監控服務可監控應用容器內的用戶程序和/或服務的性能。例如,監控服務可以監控負載平衡和/或自動伸縮服務的性能或監控服務器的性能。監控服務可以把性能的報告提供給用戶。如果在執行用戶程序期間發生任何問題,那么監控服務還可采取糾正措施。例如,如果監控服務檢測到用戶程序沒有響應(例如,ー個或多個計算節點已出現故障),那么監控服務可重啟該ー個或多個計算節點和/或請求額外計算節點來接替有故障的節點。作為另ー示例,如果對用戶應用的需求增加使得存在影響用戶程序的性能的風險,那么監控服務可代表用戶程序分配額外計算資源和/或向用戶通知該分配。用戶可向交互請求管理器130指定如何或何時被通知。例如,用戶可以使用API或交互控制臺指定當出現任何錯誤時交互請求管理器130把電子郵件消息傳達給用戶。作為另ー示例,用戶可以指定交互請求管理器130把關于任何錯誤的電子郵件消息傳達給用戶并且在采取任何糾正措施之前從用戶接收授權。用戶可以任何希望的方式配置通知設置。前述g在作為用戶與交互請求管理器130的各個實施方案之間的交互的類型的說明性示例且并非g在限制。圖3A和圖3B是示意地示出了交互請求管理器例程300的示例性實施方案的流程圖。在某些實施方式中,例程300可通過參考圖1和圖2描述的程序執行服務100的交互請求管理器130的實施方案提供。示例性例程300是按照如下情形描述的:第一用戶請求在使用時段期間的程序執行容量(例如,在程序執行服務的ー個或多個計算節點上執行程序)(參見例如圖3A),并且第二用戶請求對在使用時段期間的程序執行容量進行更改(參見例如圖3B)。如下文將論述的,第一用戶和第二用戶不需要是不同用戶并且可指同一用戶。示例性例程300 g在說明而非限制交互請求管理器130的各個方面。參考圖3A,在方框304處,由交互請求管理器130從第一用戶接收對在使用時段期間由程序執行服務100執行程序的請求。如上文論述,請求可以包括程序、計算節點的數量和/或類型、要使用的計算節點的最小和/或最大數量、在其期間要保證計算節點的可用性的未來使用時段、請求的到期時間等。請求可以指定在使用時段期間僅準許特定用戶訪問計算節點或在使用時段期間僅在計算節點上執行特定程序。對計算資源的請求可以包括其它類型的偏好、需求和/或限制(例如,存儲器或存儲容量的量、網絡帶寬、節點的地理和/或邏輯位置、終止條件等)。在方框308處,交互請求管理器130確定是否可滿足請求。例如,在某些情況下,程序執行服務100可以具有用于滿足請求的足夠容量,或者使用時段是在足夠久遠的未來,使得可獲取額外計算資源(如果需要)。如果可滿足請求,那么在方框320處把可滿足請求的確認提供給第一用戶。例如,可以經由電子郵件給第一用戶傳達消息,或者程序執行服務可以經由Web服務或經由由程序執行服務提供的交互控制臺或其它GUI提供確認。可以經由如參考圖2B論述的確認API提供確認。如果無法全部或部分地滿足請求,那么例程300繼續進行到方框312,在方框312,交互請求管理器嘗試確定是否可與所請求不同地全部或部分地滿足請求。例如,例程300可以確定可在不同的使用時段期間滿足請求或可在請求的使用時段期間部分地(例如,使用比所請求少的節點)滿足請求。在某些情況下,在方框312處,例程300可以確定可取決于ー個或多個額外事件在請求的使用時段期間滿足請求。例如,例程300可以確定可取決于由程序執行服務獲取足夠的額外計算資源并取決于在請求的使用時段開始之前已交付和安裝這些額外資源來滿足請求。在方框316處,例程300把關于與請求有關的ー個或多個可能的修改或偶發事件的信息提供給第一用戶且接著例程300結束。例如,消息可以經由電子郵件傳達給第一用戶,或者程序執行服務可以經由Web服務或經由由程序執行服務提供的交互控制臺或其它⑶I提供信息。可以經由API提供信息(參見例如圖2B)。第一用戶可使用關于與請求有關的可能的修改或偶發事件的信息并且接著如果需要的話重新提交新請求。在所示實施方案中,如果可滿足請求,那么例程300繼續進行到方框324,在方框324,交互請求管理器生成包括用戶程序和用于在程序執行服務上執行該程序的合適基礎結構的虛擬化環境(例如,應用容器)。交互請求管理器確定可執行虛擬化環境的一組計算節點。在某些實施方式中,用戶可以請求要用于執行程序的計算節點的特定數量、地理分布等。計算節點組中計算節點的數量(和/或地理分布)可以但無需與用戶請求的計算節點的數量不同。例如,組中計算節點的數量可以小于請求的數量,因為如果在使用時段期間實際請求的計算節點的數量大于組中計算節點的數量,程序執行服務也具有足夠的額外計算容量。在其它情況下,組中計算節點的數量可以大于請求的數量,以嘗試確保將存在足夠計算節點來可靠地滿足在使用時段期間的預期需求(例如,提供儲備節點,以防組中ー個或多個計算節點發生故障)。在不同實施方案中,用戶可對與虛擬化環境或節點組相關的設置(例如,存儲容量或網絡帶寬的量或類型、節點的地理和/或邏輯位置、終止條件等)進行ー個或多個更改。例程300可驗證可履行或滿足這ー個或多個更改。在方框328處,分配可供第一用戶在使用時段期間利用的計算節點組。如上文參考資源調度模塊208所論述的,分配的計算節點組可以包括特定計算節點或選自計算節點池的節點。參考圖3B,在使用時段期間,第二用戶可以進行與在已分配給第一用戶的計算節點上第一用戶的程序的執行相關的ー個或多個更改。如上述,第二用戶可以但無需與第一用戶不同。在一個示例性情形中,第一用戶可能已請求執行程序。在使用時段期間,第一用戶可提交對在計算節點上執行的程序的設定的ー個或多個更改。在這個示例性情形中,第ニ用戶將與第一用戶是同一用戶。在某些這類情形中,第一用戶的請求可指示僅第一用戶(且沒有其他用戶)可對程序執行或分配的計算節點進行更改。在其它示例性情形中,第二用戶可以是與第一用戶不同的用戶。例如,第一用戶的請求可以指示特定的第二用戶被授權進行相對于在使用時段期間在計算節點上執行的程序的更改。在這個示例性情形中,第二用戶可是與第一用戶不同的用戶。例如,第一用戶可以是最初上傳并請求程序執行容量的應用開發者,而第二用戶可以是監控正在進行的程序執行的網絡管理員或應用開發管理員。在另ー示例性情形中,第一用戶的請求可以指示程序執行服務100的任何用戶皆可對在使用時段期間的程序執行進行更改,前提是這個(第二)用戶要提交正確識別符信息。在此類情形中,第一用戶可以把識別符(例如,密鑰、令牌、密碼等)傳達給各第二用戶。接著,這些第二用戶中的任何一個將在請求在使用時段期間進行更改時使用程序識別符。在某些這類情形中,如果用戶請求了對在分配的計算節點上執行的程序的更改但卻不具有(或未隨請求一起提交)程序識別符,那么交互請求管理器將拒絕請求。在方框336處,交互請求管理器可對第二用戶提供接ロ以使第二用戶能夠請求對被提供用于在計算節點上執行程序的虛擬化環境進行ー個或多個更改。如上文論述,可以多種方式提供該接ロ。例如,可通過經由交互控制臺或其它⑶1、命令行工具、網頁和集成開發環境等提供該接ロ。在方框340處,由交互請求管理器接收來自第二用戶的更改請求。例如,該請求可以是終止程序的執行實例、啟動ー個或多個新實例來執行程序、修改ー個或多個實例的運行時設置等。如上文論述,請求可以是更改分配的計算節點,例如資源分配的類型或量、執行的地理和/或邏輯位置、時間相關條件、終止條件等。在方框344處,交互請求管理器確定是否可準許或滿足來自第二用戶的更改請求。例如,第一用戶的請求可能已指定對可能進行的對計算節點的更改施加ー個或多個要求或限制,并且如果第二用戶的請求不滿足某些或所有要求或限制,那么可以拒絕第二用戶的請求。在其它情況下,對計算節點的更改可能需要額外資源或計算節點,使得無法在第ニ用戶請求之時滿足第二用戶的請求。在這種情況下,在各個實施方案中,交互請求管理器可以拒絕第二用戶的請求或可以保留第二用戶的請求或把其排入隊列直到可產生供第二用戶使用的足夠計算節點為止。在某些實施方式中,交互請求管理器可以把有關何時可滿足請求的預計時間、可如何修改請求使得請求可被立即滿足等的信息提供給第二用戶。在方框348處,如果可滿足來自第二用戶的程序執行請求,那么程序執行服務在可能正在執行第一用戶的程序的計算節點上實施ー個或多個更改。參考圖3A,例程300在方框352處繼續進行,在方框352處,交互請求管理器監控和追蹤在被分配用于程序執行的節點組上的程序執行的使用。如參考監控和報告模塊212論述的,交互請求管理器監控在分配的計算節點上執行程序的用戶(例如,第一用戶)的使用模式。使用模式可包括對分配的節點進行更改的用戶的數量或身份、程序執行的開始/結束時間和持續時間和/或其它用戶指定的模式或診斷。在某些實施方案中,在方框352處,可以把交互反饋(包括例如可能是在何時在分配的計算節點上執行程序和/或要執行多久、對節點的實際或預測需求等的指示)提供給第一用戶或第二用戶。在某些實施方案中,可生成詳述或匯總使用統計數據的報表并經由電子郵件或經由由程序執行服務提供的交互控制臺或其它GUI把報表提供給第一用戶。在程序執行服務要收費的實施方案中,在方框356處,交互請求管理器(或其它會計或記賬管理器)可計算ー筆或多筆費用。例如,可以向第一用戶收取對于請求計算容量的預約費,并且可以向第一用戶或第二用戶收取針對在使用時段期間在分配的節點上執行程序的使用費。在方框360處,可選地可由例程300的實施方案執行其它服務。例如,可執行包括在使用時段到期之后釋放計算節點以供其他用戶使用的各種內務操作。接著,例程300繼續進行到方框364處并結束。圖3C是示意地示出了通過其交互請求管理器的實施方案可與用戶計算系統進行通信以用于確認對計算資源的請求的例程370的示例的流程圖。在某些實施方式中,可通過參考圖1和圖2描述的程序執行服務100的交互請求管理器130的實施方案實施例程370。如參考圖3A的方框304和308論述的,交互請求管理器可從第一用戶接收對在使用時段期間的程序執行容量的請求并且可確定是否可滿足該對程序執行容量的請求。在圖3C的方框374處繼續進行,如果可滿足請求,那么交互請求管理器把確認提供給第一用戶。例如,如參考圖2B和圖3A的方框320論述的,確認可包括與在請求的使用時段期間(或在不同的使用時段期間)程序執行服務是否可準許請求(全部或部分地)有關的信息。確認還可以包括與第一用戶的請求相關并且要結合在使用時段期間對計算資源進行更改而使用的一個或多個請求識別符(例如,密鑰、令牌、用戶名、密碼等)。確認可包括其它信息,例如確認可滿足用戶的偏好、需求和/或限制的信息。在某些實施方式中,經由確認API傳達確認(參見例如圖2B)。在某些情況下,在確認請求之時(在方框374處)與使用時段開始之時之間第一用戶的程序執行需求可以改變。在某些這類情況下,第一用戶可以把請求的修改提交給交互請求管理器。例如,修改的請求可以包括關于要執行的修改的程序、計算節點的修改數量或與計算節點相關的設置、使用時段的修改的開始時間、終止時間和/或持續時間或第一用戶的其它偏好或需求的變化的信息。修改的請求可以是全部或部分地取消初始的請求。相應地,在此類情況下,在方框378處,交互請求管理器可以從第一用戶接收修改的請求并且確定是否可(全部或部分地)滿足修改的請求。在方框382處,交互請求管理器把更新的確認提供給第一用戶,更新的確認可包含與在請求的使用時段期間(其可能已在修改的請求中被修改)程序執行服務是否可準許修改的請求(全部或部分地)或在不同的使用時段期間程序執行服務是否可準許修改的請求(全部或部分地)有關的信息。更新的確認還可以包括與第一用戶的修改的請求相關并且要結合在(可能更新的)未來使用時段期間對計算資源進行ー個或多個更改而使用的一個或多個更新的請求識別符(例如,密鑰、令牌、用戶名、密碼等)。更新的確認可包括其它信息,例如確認可滿足用戶的(可能更新的)偏好、需求和/或限制的信息。在某些實施方式中,更新的確認經由確認API傳達到第一用戶(參見例如圖2B)。在方框386處,交互請求管理器可在使用時段期間從第二用戶接收對對分配給第一用戶的計算容量進行一個或多個更改的請求。如參考圖3B大致描述,交互請求管理器可以處理來自第二用戶的請求。例如,在某些實施方式中,從第二用戶接收的請求可以包括用于在方框374處(和/或如果從第一用戶接收到修改的請求那么在方框382處)傳達給第一用戶的分配的計算容量的請求識別符。圖4是示意地示出了通過其交互請求管理器的實施方案可與用戶計算系統進行通信以用于提供供用戶選擇的多個虛擬化環境(例如,應用容器)的例程400的示例的流程圖。在某些實施方式中,可通過參考圖1和圖2描述的程序執行服務100的交互請求管理器130的實施方案實施例程400。如參考圖3B的方框340論述的,交互請求管理器可被配置來接收與為用戶生成的虛擬化環境有關的至少一個更改。在圖4的方框404處繼續進行,交互請求管理器從第一用戶接收共享虛擬化環境的請求。例如,在交互請求管理器已生成用于第一用戶的虛擬化環境之后,第一用戶可以決定與其他用戶共享該虛擬化環境。為了啟用虛擬化環境共享,第一用戶可以把共享虛擬化環境的請求傳達給交互請求管理器。該請求可以指定要共享哪些虛擬化環境。在某些實施方式中,經由請求API傳達請求(參見例如圖2B)。在示例性例程400的方框408處,交互請求管理器把虛擬化環境添加到虛擬化環境列表以創建虛擬化環境的更新的列表。更新的列表可以包括可以提供給程序執行服務的其他用戶的虛擬化環境的列表。在某些情況下,更新的列表可以包括不僅由第一用戶而且由程序執行服務和/或由程序執行服務的其他用戶提供的虛擬化環境。某些虛擬化環境可以免費提供給用戶,而其它環境可收費才可用。更新的列表可以包括例如虛擬化環境的描述、生成虛擬化環境的用戶的名字、使用虛擬化環境的費用、對適合于與虛擬化環境一起使用的應用的類型的推薦、到類似或有關虛擬化環境的鏈接、與虛擬化環境的性能有關的統計數據、虛擬化環境的屬性的設置等。在某些實施方式中,在交互請求管理器創建更新的列表之后,將確認經由確認API傳達給第一用戶(參見例如圖2B)。在方框412處,交互請求管理器可以把應用容器的更新的列表提供給程序執行服務的第二用戶。第二用戶可與第一用戶相同或不同。在某些實施方式中,交互請求管理器經由Web接口、GU1、API調用等把更新的列表提供給第二用戶。例如,第二用戶可以請求交互請求管理器在使用時段期間執行程序(參見例如圖3A)。在請求過程期間,交互請求管理器可以提供虛擬化環境的更新的列表,使得第二用戶可請求應將哪個虛擬化環境用于執行第二用戶的應用。在某些實施方式中,第二用戶可以提供用于執行第二用戶的應用的一個或多個偏好或需求,并且交互請求管理器可以推薦滿足某些或所有第二用戶的偏好或需求的一個或多個虛擬化環境。例如,第二用戶可以指示對第二用戶的應用的預期需求、用戶的客戶的地理位置、希望的程序執行容量(例如,CPU、存儲器、存儲裝置、帶寬等)等等。交互請求管理器可以識別匹配某些或所有第二用戶的偏好的一個或多個虛擬化環境并且把這個推薦提供給第二用戶。在某些情況下,交互請求管理器可以根據滿足第二用戶的偏好或需求的可能性對推薦的虛擬化環境進行排名或排序。在示例性例程400的方框412處,交互請求管理器可以從第二用戶接收對更新的列表中包括的至少一個虛擬化環境的選擇。在某些實施方式中,第二用戶可以在選擇之前或之后對一個或多個虛擬化環境進行至少一個更改。例如,第二用戶可以在把關于第二用戶的選擇的信息提供給交互請求管理器之前改變特定虛擬化環境的一個或多個設置。接著,交互請求管理器可以使用選定的虛擬化環境執行第二用戶的應用的實例(參見例如圖3A)。在某些實施方案中,在第二用戶已選擇至少一個虛擬化環境之后,可將費用提供給提供了選定的虛擬化環境的第一用戶。例如,如上文論述,可以向第二用戶收取用于使用至少一個選定的虛擬化環境執行用戶的應用的一筆或多筆費用(例如,預約費、使用費等)。一筆或多筆費用的一部分可以提供給第一用戶。例如,提供的費用可以是固定費用或向第二用戶收取的某些或所有費用的一定比例。提供的費用還可以是基于第二用戶已對至少一個選定的虛擬化環境進行的更改的數目、已選擇特定虛擬化環境的用戶的數量、特定虛擬化環境已存在或被使用的持續時間等的分級費用。在示例性例程400的某些實施方式中,第二用戶可以選擇改變選定的虛擬化環境。例如,第一用戶可能已提供基于例如Java的虛擬化環境,而第二用戶可以修改該環境使得其是基于另一編程語言(例如,Ruby)。第二用戶可以選擇與程序執行服務的其他用戶共享包括由第二用戶進行的更改的經過修改的虛擬化環境。第二用戶可以請求交互請求管理器與其他用戶共享這個虛擬化環境(參見例如方框404)并且(可選地)被提供使用費。例如,第三用戶可以選擇第一用戶的虛擬化環境,第一用戶的虛擬化環境的第二用戶的修改版本和/或由程序執行服務和/或由其他用戶提供的虛擬化環境。相應地,可以開發包括很多種虛擬化環境(免費和/或收費)的市場并且使其對程序執行服務的用戶開放。在某些實施方案中,可提供被配置來管理用戶程序的執行的計算系統。該系統可以包括被配置來管理程序執行服務的用戶的程序的執行的交互請求管理器組件。交互請求管理器組件可以被配置來從程序執行服務的用戶接收生成用于在使用時段期間執行用戶應用的虛擬化環境的請求,該請求包括允許程序執行服務至少部分基于用戶應用來執行程序的與用戶應用相關的信息,程序執行服務提供可被配置來執行程序執行服務的多個用戶的程序并生成虛擬化環境的多個計算節點,虛擬化環境包括一個或多個程序服務,程序服務包括:(1)負載平衡器,其被配置來跨虛擬化環境的計算資源分布工作量,(2)監控接口,其被配置來允許用戶監控程序的執行,(3)負載調節器,其被配置來響應于對程序執行的需求的變化而調節計算資源,和(4)多個數據庫管理服務。交互請求管理器組件還可以被配置來在一個或多個計算節點的組上執行虛擬化環境的一個或多個實例、確定對虛擬化環境或對在執行虛擬化環境的一個或多個實例期間在一個或多個計算節點的組上執行虛擬化環境的一個或多個實例的至少一個更改。交互請求管理器組件還可以被配置來在執行虛擬化環境的一個或多個實例期間實施至少一個更改。在某些實施方式中,可以提供被配置來管理用戶程序的執行的計算系統。該系統可以包括被配置來管理程序執行服務的用戶的程序的執行的交互請求管理器組件。交互請求管理器組件可以被配置來從第一用戶接收與程序執行服務的用戶共享為第一用戶生成的第一虛擬化環境的請求、更新可供程序執行服務的用戶選擇的虛擬化環境的列表以提供包括與第一虛擬化環境有關的信息的虛擬化環境的更新的列表,以及把虛擬化環境的更新的列表提供給程序執行服務的用戶。交互請求管理器組件還可以被配置來從程序執行服務的第二用戶接收對更新的列表中包括的第一虛擬化環境的選擇并生成用于第二用戶的第二虛擬化環境,第二虛擬化環境至少部分基于第一虛擬化環境。前面段落中描述的每個過程、方法和算法可以以由一個或多個計算機或計算機處理器執行的代碼模塊的形式具體實施并且通過這樣的代碼模塊完全或部分地自動化。代碼模塊可以存儲在任何類型的非瞬時性計算機可讀介質或計算機存儲裝置(如硬盤驅動器、固態存儲器、光盤等等)上。系統和模塊還可以作為生成的數據信號(例如,作為載波或者其它模擬或數字傳播信號的一部分)在多種計算機可讀傳輸介質(包括基于無線和基于有線/電纜的介質)上傳輸,并且可以采取多種形式(例如,作為單用或復用模擬信號的一部分、或作為多個離散數字數據包或幀)。可以部分或全部以專用電路的形式實施過程和算法。公開的過程和過程步驟的結果可以永久或以其它方式存儲在任何類型的非瞬時性計算機存儲裝置(例如易失性或非易失性存儲裝置)中。上文描述的各個特征和過程可以獨立于彼此使用,或者可以以各種方式進行組合。所有可能的組合和子組合旨在落于本公開內容的范圍內。此外,在某些實施方式中可以省略特定方法或過程塊(方框)。本文描述的方法和過程也不限于任何特定順序,并且與其相關的塊或狀態可按其它適當順序執行。例如,描述的塊或狀態可以按具體公開的次序外的次序執行,或者多個塊或狀態可以組合成單個塊或狀態。示例性塊或狀態可以串行、并行或以某種其它方式執行。塊或狀態可以添加到公開的示例性實施方案中或從其中移除。可以與所描述不同地配置本文描述的示例性系統和組件。例如,元件可以添加到公開的示例性實施方案中、從其中移除或與其相比而進行重新安排。除非另有特別說明或在如使用的上下文內另外所理解,否則本文使用的條件語言(如尤其是“可”、“可能”、“可以”、“例如”等等)通常旨在表達特定實施方案包括而其它實施方案不包括特定特征、元件和/或步驟。因此,這樣的條件語言通常并非旨在暗示特征、元件和/或步驟是以任何方式對一個或多個實施方案所必需的或一個或多個實施方案必定包括用于在具有或沒有程序設計者輸入或提示的情況下決定是否包括這些特征、元件和/或步驟或其是否要在任何特定實施方案中被執行的邏輯。術語“包括”(“comprising”、“including”)、“具有”(“having”)等等是同義的且以開放方式按包括之意使用,并且不排除額外元件、特征、動作、操作等等。此外,術語“或”是以其包括之意(而非以其排除之意)使用,使得當例如用來連接一系列元件時,術語“或”意指其中的一個、某些或所有元件。雖然已描述特定示例性實施方案,但是這些實施方案僅按舉例方式來呈現,且并非旨在限制本文公開的發明的范圍。因此,前文描述中的任何部分并非旨在暗示任何特定特征、特性、步驟、模塊或塊是必要的或不可缺少的。實際上,本文描述的新穎方法和系統可以以多種其它形式具體實施;此外,可以在不脫離本文公開的本發明的精神的情況下對本文描述的方法和系統的形式進行各種省略、置換和改變。權利要求書和其等效物旨在涵蓋諸如將落于本文公開的特定發明的范圍和精神內的形式或修改。
權利要求
1.一種用于動態管理對由程序執行服務提供的計算容量的請求的計算機實施方法,所述方法包括: 在提供多個計算節點的程序執行服務的控制下,其中每個所述計算節點可被配置來執行所述程序執行服務的多個用戶的ー個或多個程序, 從所述程序執行服務的用戶接收生成用于在請求時段期間執行用戶應用的虛擬化環境的請求,所述請求包括與所述用戶應用相關且允許所述程序執行服務至少部分基于所述用戶應用執行程序的信息; 自動生成所述虛擬化環境,所述虛擬化環境包括由所述程序執行服務提供的一個或多個程序服務,所述程序服務包括:(I)負載平衡器,其被配置來跨所述多個計算節點中的一個或多個或者所述虛擬化環境的一個或多個實例分布工作量,(2)監控接ロ,其被配置來允許所述用戶監控所述程序的執行,(3)負載調節器,其被配置來響應于對所述程序的執行的需求的變化而調節所述程序執行服務的計算資源,和(4)多個數據庫管理服務; 從所述程序執行服務的所述多個計算節點確定可滿足所述用戶的所述請求的ー組計算節點; 在所述請求時段期間在所述ー組計算節點上執行所述虛擬化環境的ー個或多個實例; 從所述用戶接收對所述虛擬化環境或對在所述請求時段期間在所述ー組計算節點上執行所述虛擬化環境的所述ー個或多個實例進行至少ー個更改的請求;和在所述請求時段期間自動實施所述至少ー個更改。
2.根據權利要求1所述的方法,其還包括對所述用戶提供用于請求生成所述虛擬化環境或請求改變所述虛擬化環境的計算接ロ。
3.根據前述權利要求中任一項所述的方法,其中生成所述虛擬化環境的所述請求還包括對由所述程序執行服務使用以下項中的一個或多個的請求:(I)操作系統,(2)應用服務器,(3) —個或多個計算節點,其具有所希望的程序執行容量或地理分布,和(4)所述多個數據庫管理服務中的至少ー個。
4.根據前述權利要求中任一項所述的方法,其還包括: 自動識別所述一個或多個實例中的至少ー個的故障;和 自動啟動用于在所述ー組計算節點上執行所述虛擬化環境的至少ー個新實例。
5.根據前述權利要求中任一項所述的方法,其還包括: 自動識別所述一組計算節點中的至少ー個的故障; 自動分配來自所述程序執行服務的所述多個計算節點的至少ー個新計算節點;和 在所述至少一個新計算節點上自動執行所述虛擬化環境的至少ー個新實例。
6.一種被配置來動態管理對計算服務的計算容量的請求的系統,所述系統包括: 計算機存儲器,其被配置來存儲用于動態管理對計算服務的計算容量的請求的ー個或多個程序模塊,所述計算服務包括多個計算節點;和 交互請求管理器,其被配置來與所述計算機存儲器進行通信和執行存儲在所述計算機存儲器中的所述ー個或多個程序模塊,所述程序模塊被配置來: 從用戶接收生成用于在使用時段期間執行用戶應用的虛擬化環境的請求,所述請求包括與所述用戶應用相關且允許所述計算服務至少部分基于所述用戶應用執行程序的信息; 生成所述虛擬化環境,所述虛擬化環境包括ー個或多個程序服務,所述程序服務包括:(I)負載平衡器,其被配置來跨所述多個計算節點中的一個或多個或者所述虛擬化環境的一個或多個實例分布工作量,(2)監控接ロ,其被配置來允許所述用戶監控所述程序的執行,(3)負載調節器,其被配置來響應于對所述程序的執行的需求的變化而調節計算資源,和(4)多個數據庫管理服務; 在所述使用時段期間在所述多個計算節點中的一個或多個的組上執行所述虛擬化環境的一個或多個實例; 從所述用戶接收對所述虛擬化環境或對在所述使用時段期間在所述多個計算節點中的所述ー個或多個的組上執行所述虛擬化環境的所述ー個或多個實例進行至少ー個更改的請求;和 在所述使用時段期間實施所述至少ー個更改。
7.根據權利要求6所述的系統,其中所述計算服務的所述多個計算節點包括一個或多個物理計算系統。
8.根據權利要求7所述的系統,其中所述多個計算節點包括寄宿在所述ー個或多個物理計算系統上的一個或多個虛擬機。
9.根據權利要求6到8中任一項所述的系統,其中所述使用時段包括要開始執行所述一個或多個實例的開始時間和要結束所述ー個或多個實例的執行的結束時間。
10.根據權利要求6到9中任一項所述的系統,其中所述程序模塊還被配置來從所述計算服務的所述多個計算節點確定可滿足對生成所述虛擬化環境的所述用戶的所述請求的ー組計算節點。
11.根據權利要求10所述的系統,其中所述虛擬化環境包括所述負載平衡器,并且所述負載平衡器被配置來在所述使用時段期間跨所述多個計算節點中的所述ー個或多個的組平衡所述虛擬化環境的所述ー個或多個實例的執行。
12.根據權利要求10所述的系統,其中程序模塊還被配置來: 識別所述虛擬化環境的所述ー個或多個實例中的至少ー個的故障;和 在所述多個計算節點中的所述ー個或多個的組上啟動所述虛擬化環境的至少ー個新實例。
13.根據權利要求10所述的系統,其中所述程序模塊還被配置來當在所述虛擬化環境的所述ー個或多個實例的使用中或在所述多個計算節點中的所述ー個或多個的組的使用中檢測到錯誤時通知所述用戶。
14.根據權利要求10所述的系統,其中對所述虛擬化環境進行至少ー個更改的所述請求包括對在在與所述多個計算節點中的所述ー個或多個的組中的所述計算節點中的至少ー些不同的地理位置的計算節點上執行所述虛擬化環境的至少ー個實例的請求。
15.根據權利要求6到14中任一項所述的系統,其中生成所述虛擬化環境的所述請求還包括對在ー個或多個希望的地理區域中執行所述用戶應用的請求。
全文摘要
描述了用于動態管理對來自計算資源提供者的計算容量的請求的系統和方法的實施方案。舉例來說,所述計算資源可以包括程序執行能力、數據存儲或管理能力、網絡帶寬等。所述系統或方法自動分配用于執行與用戶相關的一個或多個程序的計算資源。所述系統和方法可以使所述用戶能夠在所述一個或多個程序的執行已開始之后改變所分配的資源。
文檔編號G06F9/50GK103098027SQ201180043637
公開日2013年5月8日 申請日期2011年7月25日 優先權日2010年9月21日
發明者李·A·阿奇森, 布萊恩·A·懷特, 皮特·D·科恩, 皮特·N·德桑蒂斯, 麥克海爾·蓋博 申請人:亞馬遜技術有限公司