計算機實現方法和計算系統的制作方法
【專利摘要】本發明描述了用于管理程序執行能力的技術,例如針對提供用于為用戶執行一個或多個程序的一組計算節點。在某些情況下,使用中的計算節點組的程序執行能力動態修改可定期進行或者說是以反復的方式進行,例如以聚合在一段時間內待做出的經請求或以其它方式確定的多次修改。所述技術可在某些情況下結合收費性程序執行服務使用,所述收費性程序執行服務代表多個服務用戶來執行多個程序。
【專利說明】計算機實現方法和計算系統
【背景技術】
[0001]多家公司和其它機構對將許多計算系統互連以支持其操作的計算機網絡進行操作,其中例如所述計算系統協同定位(例如,作為局部網絡的一部分)或相反地位于多個不同的地理位置(例如,經由一個或多個專用或公用中間網絡連接)。例如,容納大量互連計算系統的數據中心已變得司空見慣,諸如由單個機構操作且代表單個機構的私用數據中心以及由作為企業的實體操作以向顧客提供計算資源的共用數據中心。一些共用數據中心的操作員向各個顧客所擁有的硬件提供網絡訪問、權限和安全安裝設施,而其它公共數據中心的操作員則提供也包括其顧客可用的硬件資源的“全面服務(full service)”設施。然而,隨著典型數據中心的規模和范圍增加,提供、支配和管理物理計算資源的任務已變得日益復雜。
[0002]商用硬件的虛擬化技術的出現已向具有不同需求的多個用戶提供了關于管理大規模計算資源的一些益處,從而使得各種計算資源可由多個用戶有效且安全地共享。例如,諸如由VMWare、XEN、Linux' s KVM( “內核級虛擬機”)或User-Mode Linux提供的那些虛擬化技術可通過向每個用戶提供一個或多個虛擬機(由單個物理計算機提供)使得單個物理計算機在多個用戶之間被共享,其中每臺此虛擬機均為作為不同邏輯計算系統的軟件模擬,該邏輯計算系統向用戶提供的錯覺是它們是給定硬件計算資源的唯一操作員和管理員,同時還在各個虛擬機之間提供應用程序隔離和安全。
[0003]附圖簡述
[0004]圖1A和圖1B為示出對程序執行服務的多個用戶可用的程序執行能力進行管理的交互作用的示例性實施方案的網絡圖。
[0005]圖2A和圖2B示出對用戶的一組多個計算節點的程序執行能力進行管理,例如以在各個時間并以各種方式動態修改可用程序執行能力的實例。
[0006]圖3為示出用于管理向多個用戶提供的程序執行能力的計算系統的示例性實施方案的框圖。
[0007]圖4示出了程序執行服務系統管理器程序的示例性實施方案的流程圖。
[0008]圖5示出了遞歸能力協調程序的示例性實施方案的流程圖。
[0009]圖6示出了能力修改歸因程序的示例性實施方案的流程圖。
[0010]圖7示出了程序執行服務能力維護管理器程序的示例性實施方案的流程圖。
【具體實施方式】
[0011]描述了對用于執行一個或多個用戶的程序的程序執行能力進行管理的技術。在至少一些實施方案中,所管理的程序執行能力包括供用戶用于執行一個或多個程序的一組一個或多個計算節點。另外,使用時可動態修改與用戶相關的該組計算節點,以便管理用戶可從該組計算節點中獲得的程序執行能力的量。對與用戶相關的該組計算節點的修改在各個實施方案中可具有各種形式(例如,以修改該組中計算節點的數量,例如通過動態添加和/或刪除計算節點),并且在各個實施方案中可以各種方式引發(例如,基于由用戶指定的動態指令、基于用戶預定義的觸發器的滿足情況的自動確定、基于提供該組計算節點的服務的自動化操作等)。以下包括關于可從一組計算節點中獲得的程序執行能力的動態修改的其它細節。另外,在至少一些實施方案中,這些技術可結合代表該服務的多個顧客或其他用戶來執行多個程序的程序執行服務("PES")進行使用,諸如網絡訪問程序執行服務,其提供了用于執行遠程用戶的程序的多個計算節點(例如,在一個或多個物理計算系統上提供的多個物理計算系統和/或虛擬機)。這些技術中的一些或全部也可通過程序執行服務系統管理器模塊和/或程序執行服務能力維護管理器模塊的實施方案自動實施,如下文更詳細地描述。
[0012]如前所述,在各個實施方案中,對用于執行用戶的一個或多個程序的一組計算節點進行的動態修改可具有各種形式且可以各種方式引發。作為一個實例,該組計算節點的程序執行能力可至少部分地通過為該組一部分的計算節點的數量來測量,并且可通過改變該組的計算節點數量來修改(例如,以通過增加計算節點數量來提高程序執行能力,并通過減少計算節點數量來降低程序執行能力)。此類計算節點數量修改可用于(例如)該組中的一些或所有計算節點提供或可獲得相同或類似數量的計算資源(例如,內存量、硬盤空間、CPU執行周期、網絡帶寬等)的情況中,使得計算節點數量的給定百分比變化對應于該組的總計算資源和程序執行能力的相同或類似的百分比變化。在其它實施方案中,該組計算節點中的一些或全部可以一種或多種重要方式在其可獲得的計算資源的量方面有所不同(例如,如果使用兩種或更多種不同類型的計算節點配置,如果每個計算節點均獨立于其它計算節點配置等)或以其它方式在其提供的程序執行能力的類型方面有所不同(例如,根據專用硬件、軟件程序的類型等),但該組的程序執行能力動態修改確可至少部分地基于修改該組計算節點的數量,或相反可基于其它方式(例如,將一種類型的計算節點配置改變為另一種類型),如其它地方更詳細地討論。
[0013]此外,在至少一些實施方案和情況中,一組一個或多個計算節點的程序執行能力可以不同于計算節點的數量的方式進行測量和修改,例如基于該組提供的一種或多種類型的計算資源的總量(例如,內存量、硬盤空間、CPU執行周期、網絡帶寬等)。另外,在至少一些實施方案中,在測量和指定一組計算節點的程序執行能力中可考慮其它因素,諸如一些或所有計算節點的地理位置、一些或所有計算節點之間的相互關系(例如,由至多最大地理距離或至少最小地理距離分隔、由至多最大網絡延時或至少最小網絡延時分隔、分隔成兩個或更多個獨立的數據中心或不會同時失效的其它計算節點集合等)、專用硬件能力和/或軟件能力的可用性等。以下包括關于測量和指定程序執行能力的其它細節。
[0014]對用于執行用戶的一個或多個程序的一組計算節點進行管理的PES或其它系統可自動確定如何和何時以各種方式對該計算節點組進行程序執行能力動態修改。例如,在至少一些實施方案和情況中,PES或其它系統可以直接方式進行某些類型的程序執行能力修改,而其它類型的程序執行能力修改可定期進行或者說是以反復的方式進行(例如,以便延遲和聚合在一段時間內(例如自進行一次或多次聚合修改之前開始)待做出的經請求或以其它方式確定的多次修改。如果在一段時間內聚合多個程序執行能力修改確定值,則關于聚合修改確定值的信息可用于以各種方式來提高程序執行能力修改的實施。例如,如果兩次確定的程序執行能力修改對應于相反類型的修改(例如,以增加和減少計算節點數量、增加和減少可用總內存等),則兩次修改可以各種方式進行聚合,例如通過經選擇來部分或完全相互抵消,或相反通過選擇待進行的兩次修改中的較高優先級來代替另一次修改。另外,如果兩次或更多次確定的程序執行能力修改對應于類似或互補類型的修改(例如,以使計算節點數量全面增加指定量、使可用總內存全面增加指定量等),則那些確定的修改可以各種方式同樣地聚合(例如,以選擇符合某些指定標準的單次確定的修改,諸如最大修改、最小修改、具有最高優先級的修改、首先確定的修改、最后確定的修改等;以累積各種確定的修改并使用累積的修改量;等)。以下包括關于確定如何和何時做出各類程序執行能力修改的其它細節。
[0015]另外,當PES或其它系統對代表用戶來執行一個或多個程序的一組計算節點動態進行程序執行能力修改時,PES或其它系統可進一步進行各種操作以將特定的程序執行能力修改的因果律信息或其它責任歸因。責任歸因可包括(例如)識別已在相關時段內發生的特定事件,其中每個事件均能夠引起程序執行能力動態修改,并且將這些事件中的一件或多件歸因于在該時段期間或之后進行的程序執行能力動態修改中的一些或全部。例如,在至少一些實施方案和情況中,一些程序執行能力動態修改各自可由單個特定事件引發(例如,如果該組計算節點失效或者說是變得不可用,則系統立即自動啟動向該組提供替代計算節點,同時計算節點不可用性成為直接引起系統自動動作以提供替代計算節點的單個事件)。在至少一些實施方案和情況中,其它程序執行能力動態修改各自可歸因于多個事件的組合,這些事件中的每一件均有助于或可能有助于能力修改(例如,如果多個獨立事件各自在一段時間內需要或指示該組的計算節點數量增加,并且這些事件經聚合以在該時段結束時增加單個計算節點的數量,同時各獨立事件成為共同間接引起系統后續自動動作以增加計算節點數量的多個事件)。
[0016]對與用戶相關的計算節點組進行的特定程序執行能力動態修改的責任歸因在以下情況下可具有特別的益處,例如針對至少一些程序執行能力修改而向用戶收費時(例如,如果PES或其它系統為由于提供該組的每個計算節點、程序執行能力的每個其它度量和/或基于其它依據而向消費用戶收費的付費系統)。在此類情況下,用戶可不僅能夠接收和查看關于與特定程序執行能力動態修改相對應的費用的信息,而且能夠接收和查看相關的責任歸因信息,以便用戶能夠確認那些程序執行能力動態修改的原因和適當性。在至少一些此類實施方案中,責任歸因信息可以人可讀格式產生以便向用戶顯示,以使用戶能夠理解各個自動動作為何由人可讀信息中所包括的PES或其它系統來采取的解釋。在其它實施方案中,也可以各種其它方式(包括通過自動啟動其它操作的PES或其它系統)來使用此類責任歸因信息。另外,在至少一些實施方案中,可響應于從用戶或其它來源處接收的各類詢問來產生和/或使用責任歸因信息,這些詢問諸如關于識別哪些(多個)事件為引起一組一個或多個計算節點可用性發生指示的特定程序執行能力修改或其它變化的原因的請求和/或關于哪些(多次)程序執行能力修改或其它計算節點組的(多個)可用性變化由一個或多個指示的事件引起的請求。以下包括關于確定和使用程序執行能力動態修改的責任歸因信息的其它細節。
[0017]在各種情況下,用于自動管理程序執行能力動態修改的所述技術可提供各種益處。例如,通過聚合多個經請求或確定的程序執行能力動態修改以進行綜合考慮,PES或其它系統也許能夠優化如何進行聚合修改,以及將計算節點的反復變化最小化,這可使進行額外變化的一些或所有計算節點在一段時間內暫時不可用。另外,用戶可預定義基于一組計算節點的性能特性的各類觸發器,同時在特定觸發器被滿足時,視情況自動提高或降低程序執行能力(例如,以被動(reactively)提高一組計算節點的程序執行能力,從而滿足計算節點組的計算負荷的暫時性增加;主動(proactively)提高或降低一組計算節點的程序執行能力,從而滿足其它程序執行能力的即將出現的預期需求和/或滿足現有程序執行能力的即將出現的預期需求缺乏,例如根據關于特定性能特性和/或指示程序執行能力的重復使用模式的歷史數據的隨時間變化的趨勢;等)。或者,用戶可希望將一組計算節點的程序執行能力保持在指定水平或其附近(例如,計算節點的指定所需恒量),并且可對該組計算節點自動進行各種修改以將可用程序執行能力保持在該指定水平(例如,以將已偏離指定所需量的實際計算節點數量恢復至該指定所需量)。例如當該組計算節點中的每個執行相同程序的不同復本(例如,以用作該組中的總計算負荷的替代形式),并且修改計算節點的數量以管理由每個計算節點處理的工作量時,可使用此類技術,或者說是將這些技術用于一組中的各個計算節點并未各自執行相同程序的不同復本的情況中(例如,如果該組計算節點的不同子集各自執行不同程序的復本,例如以使某些計算節點執行應用服務器程序且使其它計算節點執行相關的數據庫服務器程序;如果這些計算節點中的一些或全部諸如以分布式方式實施單個程序的不同部分;等)。此外,當向組添加附加計算節點時,PES或其它系統在至少某些情況中還可任選地采取其它動作,例如以提供所添加的計算節點來準備執行一個或多個程序,或在所添加的計算節點上進一步自動引發一個或多個程序的執行。
[0018]如前所述,用戶可預定義與動態修改多組計算節點的程序執行能力相關的各類觸發器,并且那些觸發器隨后可用于引發用戶的計算節點組的相應程序執行能力自動化動態修改。作為一個實例,可定義指定計算節點的特定所需量或一種或多種計算資源的所需總量的觸發器,例如其可用于將相應計算節點組自動保持在所需計算節點數量或所需計算資源總量,或相反用于改變指定的計算節點數量或計算資源總量(如果滿足指定標準)。在其它情況中,可定義指定一種或多種計算資源的計算節點數量或總量的特定絕對或相對變化的觸發器,例如如果計算節點組的一種或多種指示的性能特性達到指定閾值或者說是滿足指定標準,則其可被觸發(例如,保持在指定時段的指定沮圍內;表不特定趨勢,諸如指定時段內的指定變化量,或諸如特定“加速度(accelerat1n) ”或變化速率;符合或對應于一種或多種指定模式(例如來自表示程序執行能力的重復使用模式的歷史數據);滿足多種性能特性的指定邏輯或值的其它組合,例如可使用邏輯算子(諸如AND、N0T、0R等)和/或以其它方式將其組合;等)。在其它實施方案和情況中,預定義的觸發器可根據不屬于計算節點組的性能特性的信息以其它方式來被滿足(例如,基于符合一個或多個指定時間(為特定觸發器的標準的一部分或全部)的當前時間;基于在以不同于性能特性的方式測量的當前計算節點組上執行的一個或多個程序的狀態信息,諸如正如由(例如)經排列或者說是已知或期望由一個或多個程序完成的工作量表示的當前計算負荷;基于未由當前計算節點組執行的一個或多個其它執行程序的性能特性或其它狀態信息,例如如果當前計算節點組與其它執行程序交互或者說是支持這些程序,以便在其它執行程序上的計算負荷增加或減少時,例如提高當前計算節點組的程序執行能力;等)。此類性能特性可基于該組計算節點中的一個或多個的任何可測量的屬性或與這些節點的操作相對應的其它尺度,包括以下非排他性清單項:單個計算節點的一種或多種計算資源的絕對或相對使用量(例如,所使用的可用內存的百分量或CPU周期利用率、所使用的網絡帶寬的絕對量等);所有該組計算節點的一種或多種計算資源的絕對或相對總使用量;響應于來自外部計算系統的通信中的絕對或相對延時(latency)或其它延遲(delay)量;計算節點在完成一個或多個所需動作中的絕對或相對失效量;等。此外,在至少一些實施方案和情況中,觸發器的滿足情況并非使該觸發器直接指定將在被滿足時發生的特定程序執行能力修改,而是可使指定系統或模塊獲得通知,并且該系統或模塊可請求進行特定的程序執行能力修改(例如,未改變的預定義的能力修改;例如基于當時的條件在通知時動態確定的能力修改;等)。另外,在一些實施方案中,PES或其它系統可進行各種操作以監測一組計算節點,以便確定與該組相關的觸發器的一些或所有性能特性,或可以其它方式從另一個來源獲得此類監測的性能特性(例如,從監測所述計算節點的第三方軟件、從在計算節點上執行以監測該計算節點和任選地報告監測信息的軟件等)。此外,在一些實施方案中,PES或其它系統可具有在滿足觸發器的指示觸發標準時引發程序執行能力動態修改的系統定義觸發器,或可在指定情況下以其它方式自動確定以對計算節點組做出某些類型的變化。
[0019]當定義的觸發器指定一種或多種計算資源的計算節點數量或總量的特定絕對或相對變化,并且基于相應計算節點組的當前情況自動確定來滿足定義的觸發器的一個或多個指定標準時,PES或其它系統可自動確定是否和如何對觸發器進行指定的程序執行能力修改。例如,可立即進行某些類型的指定程序執行能力修改(例如,終止使用一個或多個計算節點的請求、基于用戶已指定用于立即實施的觸發器的請求等),而可將其它類型的指定程序執行能力修改延遲到聚合時段結束時,以將其視為在該時段期間請求或者說是確定的聚合的多次程序執行能力修改的一部分。類似地,例如基于程序執行能力動態修改的類型、基于來自用戶的立即或延遲實施的顯式請求等,可確定由用戶動態請求的程序執行能力修改(例如,經由⑶I,或者PES或其它系統的圖形用戶界面;通過經由定義的API或者PES或其它系統的應用程序編程接口的用戶程序;等)以立即進行和/或以類似的方式暫時延遲和聚合。此外,當確定如何管理確定的多次程序執行能力修改的組合時,在某些情況下,不同的優先級可與確定的不同修改相關。如果如此,例如對于賦予與被滿足的觸發器不同的優先級(例如,較高或較低優先級)的動態指定的用戶請求或其它用戶指令、賦予不同優先級的不同類型的經確定修改而言(例如,對于與提高程序執行能力的請求相比賦予較高優先級的降低程序執行能力的請求而言)等,可以各種方式來評估此類優先級。以下包括關于使用用戶定義的觸發器且確定性能特性的其它細節。
[0020]此外,在至少一些實施方案中,基于追蹤和使用相應計算節點組的多個屬性,或者說是基于各自均與該組中一個或多個計算節點相關的可控參數,PES或其它系統可管理定期或者說是反復聚合的多次經確定程序執行能力修改。作為一個實例,將計算節點組的計算節點數量用作與該計算節點組的程序執行能力相對應的尺度,PES或其它系統可針對該計算節點組而保持和使用至少三種相互關聯的度量,如下所述:計算節點組的所需計算節點數量,例如在啟動該計算節點組時,相關用戶可對其進行初始設定,并且該數量可根據觸發器的滿足情況和/或動態指定的用戶請求來修改;該組中當前可用計算節點的實際計算節點數量(例如,通過對該組計算節點的連續或反復監測來確定);和該組中當前可用計算節點的正式記錄的計算節點數量(例如,正如在最后一次引發一次或多次程序執行能力動態修改時所確定,并且任選地不時通過連續或反復監測來更新)。所述計算節點組的此類多個屬性可以各種方式用于(例如)連續或反復地測量實際數量并由此更新正式記錄的數量(例如,基于對該組計算節點進行監測),并且用于定期嘗試將最近正式記錄的數量更新以符合當前所需數量(例如,當考慮如何和是否要對多次聚合的經確定修改進行組合時)。
[0021]如前所述,PES或其它系統可進一步進行各種操作以將做出的特定程序執行能力動態修改的因果律信息或其它責任歸因。例如,如前所述,可追蹤與計算節點組的程序執行能力動態修改的請求相對應的事件,包括所接收的用戶指定的動態指令和經自動確定被滿足的預定義的觸發器,以及在一些實施方案中由PES或其它系統自動采取的動作(例如,基于進行的監測,例如如果確定計算節點已凍結或者說是不可用于進行所需活動,自動關閉或者說是終止將計算節點用作其當前計算節點組的一部分)。類似地,可同樣地追蹤計算節點組的程序執行能力的實際變化,諸如與發生的事件和/或其它能力變化相對應的變化(例如,計算節點失效或者說是變得不可用的例子)。作為一個實例,可將各種事件相關信息儲存在第一數據庫表中,并且可將關于能力變化或其它可用性變化的各種信息儲存在第二數據庫表中。如果識別特定事件和特定可用性變化之間的關系(例如,特定事件致使特定可用性變化立即發生),則可通過將相同的關結相關標識符與關于該事件和該可用性變化的其它信息一起保存來追蹤所述事件和可用性變化之間的相應關結。在多個事件可單獨或組合地引起特定可用性變化但因果律不歸因于單個事件的其它情況中,可將單個關結相關標識符與關于所述可用性變化和那些事件中的每個的其它信息一起儲存,并且還可與關于一個或多個其它可用性變化的其它信息一起保存(如果它們類似地可單獨或組合地歸因于那些相同的多個事件)。因此,例如如果給定計算節點組的多個事件發生在單個聚合時段期間并且一個或多個程序執行能力變化發生在該相同的聚合時段期間或緊接其后發生(例如,作為在該聚合時段結束時進行的協調活動的一部分),并且如果那些事件均不可直接歸因于所述一個或多個能力變化中的任一者,則所有這些多個事件的組合都可歸因于所述一個或多個能力變化中的每個。以下包括關于此因果律歸因的進一步細節(包括參照圖2B)。
[0022]另外,以類似的方式,多個此類所需、實際和正式屬性可被追蹤且用于與計算節點組的程序執行能力相對應的一個或多個其它可控參數,諸如所需的第一組、實際和正式量的CPU周期總平均利用率、所需的第二組、實際和正式量的網絡帶寬總平均利用率等。此夕卜,當同時追蹤和使用與計算節點組的程序執行能力相對應的多個參數時,PES或其它系統可嘗試管理所有參數,例如以修改計算節點組,以便同時獲得所需的CPU周期總平均利用率和所需的網絡帶寬總平均利用率。作為另一個實例,計算節點組的多個參數可包括該組中各個計算節點的計算節點數量和指定地理位置(例如,介于第一數據中心的該組計算節點的15%和20%之間,剩余的該組計算節點位于一個或多個其它數據中心),同時PES或其它系統嘗試同時管理該組的計算節點數量和計算節點地理位置。以下包括關于使用多個屬性來追蹤和管理一個或多個程序執行能力參數的其它細節。
[0023]另外,在各個實施方案中,PES或其它系統可使用戶以各種方式訪問計算節點。例如,在一些實施方案中,可將可從用于執行程序的PES處獲得的計算節點中的至少一些分配給一個或多個用戶,以便那些用戶可優先使用,使得那些用戶中的每個相對于其他用戶可優先使用那些計算節點。在一個此實施方案中,這些用戶的優先訪問可基于可專有或專屬使用指定時段的那些計算節點(例如以類似于租用的方式)的每個用戶。另外,在一些實施方案中,例如當計算節點未被分配有這些計算節點的用戶使用時和/或當分配有計算節點的用戶明確地使已分配的計算節點可由其他用戶使用時,分配給一個或多個用戶以專有或優先使用的計算節點中的至少一些有時可用作過量程序執行能力供其他用戶使用。這樣,分配給第一組用戶的至少一些程序執行能力有時可用于(例如在非保證的基礎上)代表其他用戶來暫時執行程序(例如,如果需要該程序執行能力來用于其它目的,諸如一個或多個其他用戶的優先或保留使用,則使得過量程序執行能力的使用權可被取消)。此外,在一些實施方案中,PES可包括按需計算節點,其可用于滿足用戶執行程序的動態接收請求(例如,在那些用戶請求時、在指示的將來時間、在指示的將來時段內的一段時間等執行),使得可執行該請求所指示的一個或多個程序,其前提是足以滿足請求的執行的計算節點在所請求的時間時(或附近)可用(但不保證會滿足該請求)時。另外,在一些實施方案中,在立即(或預定)執行的該按需請求被滿足且代表各個用戶來成功引發一個或多個程序的執行之后,可保證繼續使用按需計算節點直到將來的某個時間,諸如各個用戶所選擇的某個時間,任選地受到某些限制的某個時間,(例如,應當保證PES不會先占用于其它目的的用途,但不保證執行程序的計算節點會失效)。在一些實施方案中,用于提供按需可變程序執行能力的計算節點可不同于用于提供專有程序執行能力的計算節點和/或用于提供過量程序執行能力的計算節點,因此如果未使用用于提供按需可變程序執行能力的計算節點中的一些,則在一些實施方案中,這些節點可用于提供過量程序執行能力,直到收到按需可變程序執行能力請求,而在其它實施方案中,這些節點可能不會用于提供過量程序執行能力。在其它實施方案中,僅可提供單一類型的程序執行能力,和/或可提供其它類型的程序執行能力。
[0024]圖1A為示出對可用于提供程序執行能力以執行多個用戶的程序的計算節點進行管理的程序執行服務的實例的網絡圖。為了進行說明性的目的,以下描述了一些實例和實施方案,其中以特定方式來提供和管理特定類型的程序執行能力。另外,在下述實例和實施方案中的一些中,由一組計算節點提供的程序執行能力可以特定方式(例如,基于計算節點的數量)來測量,可以特定方式(例如,通過追蹤所需、實際和正式屬性相對于一個或多個程序執行能力尺度的用途)來管理,可通過相關用戶以各種方式(例如,基于預定義觸發器和/或動態指定指令的用途)進行控制,可以特定方式進行修改(例如,通過聚合在一段時間內確定和延遲的至少一些程序執行能力修改,然后在該時段結束時進行一次或多次相應的聚合修改,例如以修改一組中計算節點的數量)等。提供這些實例用于進行說明性的目的且為了簡潔起見而將其簡化,并且應當理解到,本發明的技術可用于各種其它情況中,而下面僅描述了這些情況中的一些。
[0025]在圖1A的實例中,各個用戶(未示出)正在將各個客戶計算系統130用于通過網絡100與由程序執行服務提供實體105提供的PES進行交互,同時PES的一些功能通過程序執行服務系統管理器("PESSM")模塊110的圖示實施方案提供于該實例中,而其它功能通過程序執行服務能力維護管理器("PESCMM")模塊115的圖示實施方案提供于該實例中。PESSM模塊110可例如幫助特定用戶來配置待用于執行這些用戶的程序的多組計算節點,包括為這些組指定初始所需計算節點數量并且指定用于隨后對計算節點數量自動做出動態修改的觸發器。在該實例中,PES使各個計算節點120可用于執行用戶的程序,但在其它實施方案中,用于至少一些組中的計算節點中的至少一些可以其它方式來提供(例如,可通過用戶和/或第三方諸如外部計算系統140來提供,但由PES進行管理)。另外,PESCMM模塊115可有助于連續或反復監測在使用中的計算節點組,并且任選地嘗試代替失效或者說是變得不可用的任何計算節點,以便將程序執行能力保持在先前確定的水平。
[0026]網絡100可例如為鏈接網絡的可公開訪問網絡,其可能由不同的各方(諸如因特網)進行操作。在其它實施方案中,網絡100可為專用網,諸如非特權用戶完全或部分地不可訪問的企業網或校園網。在其它實施方案中,網絡100可包括可訪問因特網和/或可通過因特網訪問的一個或多個專用網。在圖示實施方案中,PESSM模塊110和PESCMM模塊115各自可包括在一個或多個計算系統(未示出)上執行的軟件指令。另外,模塊110和115以及各個計算節點120可以各種方式(諸如在單個數據中心)或者說是以使用一組協同定位的計算系統的方式,或相反以使用各個不同地理位置處的各種計算系統的分布式方式來提供。
[0027]在一些實施方案中,圖示的計算節點120可包括在一個或多個物理計算系統上提供的多個物理計算系統和/或多個虛擬機(如參照圖1B更詳細地描述)。每個計算節點120均具有一定量的可用于執行一個或多個程序的計算資源,(例如)以提供特定量的程序執行能力,例如所述程序執行能力可例如通過一種或多種處理能力(例如,處理單元的數量和/或尺寸)、存儲容量、儲存容量、網絡帶寬容量等的組合來測量。在一些實施方案中,PES供應商105可提供預配置的計算節點,其中每個預配置的計算節點均具有相等或者說是類似量的可用于代表用戶來執行程序的資源,而在其它實施方案中,PES供應商105可提供各種不同計算節點的選擇,用戶可從中選擇以代表該用戶來執行程序,例如其中每項選擇均具有不同量和/或類型的計算資源(例如,處理單元的尺寸、速度和/或類型;處理單元的數量;內存量和/或存儲量;平臺配置,諸如32位或64位;等)。
[0028]在該圖示實施方案中,程序執行服務提供用于管理多個用戶中每一者的多組一個或多個計算節點120的功能。如其它地方更詳細地討論,所述各個用戶可與PESSM模塊110進行交互,以指定開始使用多組計算節點來代表用戶執行程序的請求。在各個實施方案中,可在代表用戶在一組計算節點上執行一個或多個程序的請求時和/或在一個或多個其它時間(例如當用戶最初注冊和/或預訂使用PES的服務時)指定此類資源。在一些實施方案中,PESSM模塊110可向一個或多個用戶提供預訂和/或注冊服務,使得用戶可指定與代表用戶來執行的一個或多個程序相關的信息(例如,一個或多個程序的程序、源代碼、可尋址位置等)、帳號信息(例如,用戶名、計費信息等)、使用條款等。在一些實施方案中,在用戶與PESSM模塊110進行交互以預訂和/或注冊來獲得服務之后,可向該用戶發布與該用戶相關且將結合代表用戶的執行程序來使用的一個或多個標識符(例如,鍵碼、令牌、用戶名等)。在其它實施方案中,可提供與PESSM模塊110(未示出)不同的模塊,以進行與PES的預訂和/或注冊服務相關的各種操作。
[0029]從用戶接收使用一個或多個計算節點的請求之后,PESSMl模塊110可確定是否存在足夠數量的計算節點120 (其具有滿足所述請求的可用資源),并且如果如此,PESSMl模塊110可代表用戶在適量的計算節點上開始執行所述請求的一個或多個程序。在用戶預定將來在一組一個或多個計算節點上執行一個或多個程序的請求的情況中,PESSM模塊110可嘗試立即保留適量計算節點以在一個或多個將來時間執行一個或多個程序,和/或可延遲將所述計算節點用于直到稍后的時間(例如,諸如當所述一個或多個將來時間發生時)才執行的決定。在圖示實施方案中,如果PESSM模塊110不能針對用戶請求來分配計算節點,則所述請求可能失效,使得程序無法執行。在這些情況中,用戶可再次提交已失效的請求,以稍后執行。如前所述,在一些實施方案中,例如根據所用計算節點的數量、所用計算節點的類型、使用計算節點的持續時間、計算節點進行的特定操作(例如,數據傳送和/或儲存)等,可向用戶收取與使用PES相關的各種費用。
[0030]在提供一組一個或多個計算節點用于代表用戶來執行一個或多個程序之后,可以各種方式來管理所述計算節點組。例如,如前所述,PESCMM模塊115可監測該組計算節點,例如以確定一些或所有計算節點的性能特性,包括實際計算節點數量或由該組計算節點提供的實際程序執行能力的其它度量。如果(例如)一個或多個計算節點失效或者說是變得不可用,則可改變該組的實際程序執行能力,并且在至少一些實施方案中,模塊115可進行各種操作來保持所述計算節點組在這些情況下的程序執行能力(例如,通過向該組添加替代計算節點以取代不可用的計算節點)。另外,模塊115可使用關于所述計算節點組的經確定的實際計算節點數量的信息,以例如在檢測實際計算節點數量發生變化時、定期地等更新所述計算節點組的正式記錄的計算節點數量。
[0031]另外,PESSM模塊110也可有助于以各種方式來管理所述計算節點組。例如,如前所述,與該組相關的用戶可具有先前指定的一個或多個數量修改觸發器,其指定將向該組做出的計算節點數量變化的類型(如果滿足各個指定標準)。此外,在至少一些實施方案中,與該組相關的用戶可在各個時間動態指定對其相關計算節點組的操作變化,包括對該組計算節點的數量變化。作為管理所述計算節點組的一部分,模塊110可追蹤所述計算節點組的所需計算節點數量,并且定期將所述計算節點組的正式記錄的計算節點數量與所述計算節點組的所需計算節點數量進行協調。例如根據一個或多個用戶指定的預定義觸發器的滿足情況和/或一個或多個動態指定的用戶指令,此定期協調可包括追蹤和聚合在聚合時段期間發生的計算節點數量的經請求的修改。在該時段結束時,模塊110然后可確定是否和如何進行聚合的計算節點數量修改,并且可根據聚合的計算節點數量修改來更新所需計算節點數量。然后,模塊110可通過啟動聚合的計算節點數量修改,以及更新正式記錄的計算節點數量以匹配將由聚合的計算節點數量修改引起的新的所需計算節點數量來對所需和正式記錄的計算節點數量進行協調。此外,在當前的實際計算節點數量在該時段結束時不同于正式記錄的計算節點數量的情況中,還可根據實際計算節點數量對所需和正式記錄的計算節點數量進行協調,使得進行開始聚合的計算節點數量修改,以將當前的實際計算節點數量更新為當前所需的計算節點數量。模塊110還可反復地,諸如每次經過指定時段時、每次已經請求了最小量的計算節點數量變化時等進行此類定期協調活動。
[0032]此外,PESSM模塊110可進行其它活動,以追蹤針對特定計算節點組發生的事件和特定程序執行能力變化。至少一些程序執行能力變化信息可與由模塊110引發以作為定期或反復協調活動的一部分的程序執行能力動態修改相對應,并且任選地在某些情況下還可包括由PESCMM模塊115進行的監測中的程序執行能力變化信息(例如,以對應于失效或者說是變得不可用的計算節點,或計算節點組的程序執行能力的其它類型的所檢測變化)。模塊110還可例如根據進行的定期或其它反復協調活動在各個時間(或相反在其它時間)進行自動確定,以將特定能力變化的因果律或其它責任歸因于特定事件。
[0033]雖然針對向各個用戶提供各類功能的PES描述了圖1A的上述示例性實施方案,但應當理解到可以存在各種其它實施方案。例如,在至少一些實施方案中,單個計算節點120的未使用部分(例如,未使用的處理單元時鐘周期、內存的未使用部分等)可供一個或多個用戶使用,使得第一用戶的一個或多個程序可與一個或多個其他用戶的那些程序共享單個計算節點的資源。另外,雖然針對程序執行服務和程序執行能力描述了一些實施方案,但應當理解到所述技術可用于管理各個其它組計算節點或其它類型的計算相關資源的使用權。可經管理以供多個用戶使用的其它類型的計算相關資源的實例的非排他性清單項可包括如下內容:持久性數據存儲能力(例如,在非易失性存儲設備,諸如硬盤驅動器上);臨時數據存儲能力(例如,在易失性存儲器,諸如RAM上);消息排隊和/或傳遞能力;其它類型的通信能力(例如,網絡插座、虛擬通信電路等);數據庫管理能力;專有帶寬或其它網絡相關資源;輸入裝置能力;輸出裝置能力;CPU周期或其它指令執行能力;等。
[0034]圖1B示出了其中可采用包括多個物理計算系統的一個或多個數據中心來提供程序執行服務的實施方案。具體地講,圖1B為示出其中程序執行服務的PESSM模塊180和PESCMM模塊160采用所述一個或多個數據中心處的各個計算系統來管理代表用戶的一個或多個程序的執行的示例性實施方案的網絡圖。圖示實例包括PES使用的數據中心170,數據中心170連接至數據中心170外部的因特網196。在該實例中,因特網196提供訪問各種外部計算系統的權利,諸如經由專用網194的計算系統190以及可直接訪問的計算系統192。專用網194可為例如從專用網194外部的非特權計算系統完全或部分地不可訪問的企業網。計算系統192可包括例如直接連接至因特網(例如,經由電話或電纜調制解調器、數字用戶線路("DSL")等)的家用計算系統。另外,示出了經由因特網196連接至數據中心170的一個或多個其它數據中心198,例如數據中心198在至少一些實施方案中可被PES進一步使用。
[0035]示例性數據中心170包括許多物理主機計算系統175、物理計算系統182、PES的PESSM模塊180和PES的PESCMM模塊160。在該實例中,主機計算系統175各自提供多個虛擬機,并且具有管理那些虛擬機的虛擬機("VM")管理器組件(例如,管理程序或其它虛擬機監視器),例如針對具有多個虛擬機177a和VM管理器組件179a的主機計算系統175a所示出。其它主機計算系統175b可同樣地包括此類組件,為了簡潔起見,此處未示出那些其它組件,并且一些或所有計算系統182可任選地同樣具有一個或多個此類虛擬機和/或VM管理器組件(未示出)。由主機計算系統提供的虛擬機中的每個均可作為不同的計算節點用于PES中,例如以使主機計算系統上的第一虛擬機計算節點成為第一用戶的第一計算節點組的一部分,并且使所述相同主機計算系統上的第二虛擬機計算節點成為第二用戶的第二計算節點組的一部分。或者,在其它實施方案中,所述數據中心處的物理主機計算系統中的一些或全部可能不提供任何虛擬機,例如相反直接作為代表PES的最終消費用戶來執行一個或多個程序的計算節點。此外,在一些實施方案中,各個計算系統175和182均可具有不同的能力,可具有不同的相關使用費,可支持不同類型的用戶程序(例如,不同尺寸的虛擬機的軟件映像例子,或具有不同類型的資源標準和/或計算資源使用率,諸如不同模式的I/O和存儲器存取以及網絡使用率的程序)等。如果如此,則可根據一個或多個此類因素對特定用戶和/或其程序進行分組(例如自動地),這些因素還可用作選擇計算系統來執行特定程序的約束條件和/或首選項。示例性數據中心170還包括可包括多個聯網裝置(未示出)(諸如轉換器、邊緣路由器和核心路由器)的內部網絡172,以及連接至內部網絡172的計算系統175和182、PESCMM模塊160和PESSM模塊180。各個主機計算系統175和其它計算系統182均可以各種方式來設置,包括通過將其分組在共享共用底板或其它互連介質的機架中。此外,可采用一個或多個計算系統(未示出)來執行模塊160和180中的每個。
[0036]圖示的PESSM模塊180和PESCMM模塊160實施所述技術中的至少一些,以便管理在采用計算系統175和182來提供的多組計算節點上執行程序,如其它地方更詳細地描述。當選擇特定計算節點來執行用戶的一個或多個程序時,在一些實施方案中,PESSM模塊可通過與VM管理器組件或控制所述所選計算節點的程序的執行的其它管理器組件進行交互來開始執行那些程序,或者可在所選計算節點上直接執行程序。PES的用戶可使用各種計算系統,諸如計算系統190或192,或其它數據中心198之一處的計算系統以與PESSM模塊180進行交互。
[0037]應當理解到,圖1B的數據中心僅提供用于說明性的目的,并且在其它實施方案中可以其它方式來提供程序執行服務和其它軟件執行服務。例如,相反地可采用數據中心170外部的一個或多個其它計算系統,諸如計算系統190、192或者數據中心198處的計算系統來提供PESSM模塊180和/或PESCMM模塊160。
[0038]圖2A示出了對提供用于執行示例性用戶的一個或多個程序的一組示例性計算節點進行管理的技術的實例,諸如可由PESSM模塊和/或PESCMM模塊的實施方案自動實施的技術。具體地講,在該實例中,特定用戶(以下簡稱用戶UUU且在圖2A中未示出)已開始使用一組多個計算節點以代表該用戶各自執行所指示的程序的復本,例如以用作替代計算節點來處理由所述執行程序提供的服務所接收的請求(例如,以便平衡該服務在整個該組的多個計算節點中的計算負荷)。如時間線坐標圖210中所示出,用戶在時間Tl已請求提供計算節點組,并且已為該組的8個計算節點指定初始所需計算節點數量215a。信息250對各個用戶定義的觸發器指示,用戶已在例如初始請求時向計算節點組指定。另外,時間線坐標圖205示出了關于將被追蹤用于計算節點組且將用于確定觸發器250是否被滿足的性能特性的兩種實例類型的信息,所述信息在該實例中包括計算節點組的CPU總平均利用率205a和計算節點組的網絡帶寬總平均利用率205b。
[0039]響應于與開始提供計算節點組的所接收的用戶請求相對應的時間Tl時的事件El,示例性PES (未示出)根據初始所需的計算節點數量向用戶啟動最初包括八個計算節點的計算節點組。另外,向八個計算節點同樣地設置計算節點組的正式記錄的計算節點數量225。然而,如時間線坐標圖210中所示,所述八個計算節點實際上并未立即可用,因為需要一段時間來提供這些計算節點且使其可用作計算節點組的一部分,包括通過PES或用戶來使程序復本在這些計算節點中的每個上執行。具體地講,在經過時間Tl之后的初始時間后,計算節點組的程序執行能力發生變化Cl 255,該變化在時間Tl時開始,在大約時間T2時結束,并且與可用的八個計算節點中的前四個相對應。因此,追蹤用于計算節點組的實際計算節點數量220在所述時間從O增加至4。另外,同時或此后不久,時間線坐標圖205表明,根據該組中可用計算節點的操作而開始追蹤CPU總平均利用率205a和網絡帶寬總平均利用率205b的性能特性。
[0040]在該實例中,PES(或其它第三方系統)以大致連續的方式對該組計算節點進行監測,使得以最新的方式來保持性能特性205a和205b以及實際計算節點數量220的信息。然而,在該實例中,僅定期對計算節點組的計算節點數量進行至少某些類型的動態修改,例如以在聚合時段260期間聚合至少某些類型的經請求的修改,并且以在分別在所需、實際和正式記錄的計算節點數量215、220和225之間的聚合時段結束時進行協調活動。因此,在第一聚合時段260a期間,計算節點組的計算節點數量發生額外變化255。例如,在使前四個計算節點可用的變化Cl之后,在大約時間T3時結束的后續變化C2與可用作計算節點組的一部分的三個附加計算節點相對應。
[0041]然而,在該實例中,例如由于最初選擇的計算節點存在的硬件問題(或相反在其它情況中,由于在時間Tl時僅7個計算節點可用于計算節點組中,其中一旦第八個計算節點隨后可用,便將其動態添加),最初請求的第八個計算節點不能及時可用。因此,示出了事件E2 265發生在變化C2之后不久(在大約時間T4時),其中PES終止原來的第八個計算節點(如果需要)(例如,如果其被凍結在中間狀態下),并且開始提供第八個替代計算節點。如參照圖2B更詳細地討論,在該實例中,PES已引起與添加初始的第八個計算節點相對應的時間Tl時的變化ClOa,但該變化ClOa未能通過已添加且可用的實際第八個計算節點來完成,因此變化ClOa未在時間線坐標圖210的實際計算節點數量220中體現,也未以其它方式在圖2A中示出。相反,在該實例中,事件E2被分成同時或接近同時發生的兩個不同的事件E2a和E2b (未單獨示出)。具體地講,在該實例中,PES記錄與未能正確初始化(例如在指定期限內)的第八個計算節點相對應的時間T4時的事件E2a,并且PES自動引發時間T4時的變化ClOb (未示出)以終止未能正確初始化的初始的第八個計算節點。此外,在該實例中,初始的第八個計算節點由于事件E2a而發生的實際終止本身被視為時間T4時的個別事件E2b,個別事件E2b自動引發立即提供第八個替代計算節點。使得第一事件的變化引起的結果本身可被視為引起另一種變化的第二事件的此類鏈接事件和相應變化結果在追蹤事件和相應變化結果之間的相互關系中可提供各種益處,如其它地方更詳細地討論。隨后,根據事件E2b在時間T4時開始,并且在時間T5時結束的變化C3 255使實際計算節點數量從七個變為八個,因為第八個替代計算節點可用作計算節點組的一部分。
[0042]在計算節點組的八個計算節點以預期的方式操作聚合時段260a的一部分之后,在大約時間T7,實際計算節點數量220發生另一種變化C4 255,該變化由失效或者說是變得不可用的計算節點中的一個促使。相應事件E3 265與變化C4大約同時發生,其中PES終止不可用計算節點(如果需要),并且任選地自動開始提供替代計算節點。具體地講,以類似于此前針對事件E2所討論的方式,事件E3在該實例中被分成同時或接近同時發生的兩個不同的事件E3a和E3b (未單獨示出)。因此,PES在該實例中記錄與經檢測已變得不可用的計算節點相對應的時間T7時的事件E3a,并且PES自動引發時間T7時的活動以終止不可用計算節點,例如以直接引起變化C4。此外,在該實例中,不可用計算節點由于事件E3a而發生的終止本身被視為在大約時間T7時自動引發以立即提供替代計算節點的個別事件E3b,但在其它實施方案和情況中,替代計算節點的任何這種提供相反地將被延遲直到在聚合時段260a結束時進行的協調活動H1。隨后,在該實例中,變化C5 255在大約時間T9時結束,該變化將實際計算節點數量恢復至八個,這由事件E3b直接引起,因為所述替代計算節點可用作計算節點組的一部分。在該實例中,暫時不更新正式記錄的計算節點數量225以對應于變化C4和C5,也不更新以對應于先前的變化C1-C3,但在其它實施方案中,可更新正式記錄的計算節點數量225以反映一些或所有此類變化,例如以連續或反復地將正式記錄的計算節點數量225保持在與所更新的實際計算節點數量220 —致的狀態中。在該實例中,在聚合時段260a的其余時間內未發生其它計算節點能力可用性變化或事件,包括所有指定的觸發器250不被滿足,并且未接收動態指定的用戶指令。因此,在所述時段260a結束時的時間Tll時,考慮了第一組協調活動H1,但無需任何活動,因為當前所需、實際和正式記錄的計算節點數量215、220和225分別在八個計算節點處均匹配。如果在聚合時段260a期間未進行代替不可用計算節點的變化C5 (如該實例中所示),則在該聚合時段之后,該變化相反地會作為協調活動Hl的一部分被引起,以便代替所述時間處的不可用計算節點(例如,結合在聚合時段260a期間請求或引起的任何其它動態可用性變化)。
[0043]然而,在第二聚合時段260b期間,發生了其它事件。具體地講,事件E5 265首先發生在大約時間T16時,從而與PES做出的自動確定相對應,即已通過提高CPU總平均利用率205a來使觸發器TR-1250a被滿足,如時間線坐標圖205中通過CPU總平均利用率205a線上的第一個黑色橢圓所圖示。對于十二個經請求的全部所需計算節點數量215c而言(或者無論當前所需的計算節點數量如何,可請求將所更新的所需計算節點數量設置為十二個),觸發器TR-1的滿足情況引發了將所需計算節點數量215增加4個計算節點的請求。類似地,在經過另外的額外時間之后,事件E6 265接下來發生在大約時間T18時,從而與確定已通過提高網絡帶寬總平均利用率205b來使觸發器TR-N 250c被滿足相對應,如時間線坐標圖205中通過網絡帶寬總平均利用率205b線上的黑色橢圓所圖示。對于十個經請求的全部所需計算節點數量215d而言(或者無論當前所需的計算節點數量如何,可請求將所更新的所需計算節點數量設置為十個),觸發器TR-N的滿足情況引發了將所需計算節點數量215增加2個計算節點的請求。在經過較短的額外時間之后,事件E4 265發生在大約時間T19時,其中對于十一個經請求的全部所需計算節點數量215b而言(或者無論當前所需的計算節點數量如何,可請求將所更新的所需計算節點數量設置為十一個),與計算節點組相關的用戶提供了將所需計算節點數量215增加3個計算節點的動態指定請求。可例如根據注意到CPU總平均利用率205a為較高、計算節點組上的總計算負荷正在增加等的用戶來做出該請求。
[0044]最后,在聚合時段260b結束之前不久,額外變化C6發生在大約時間T20時,該變化由失效或者說是變得不可用的該組計算節點中的一個促使。相應事件E9與變化C6大約同時發生,其中PES終止不可用計算節點(如果需要)。在該實例中,然而PES并非立即開始提供替代計算節點,而是決定等待直到即將進行的第二組協調活動H2在時間T21時開始(例如,根據時間T21之前所剩余的少量時間、根據替代計算節點的此類延遲提供等,所述延遲為在使用時變得不可用的任何計算節點的默認動作),因為可能的是將根據那些協調活動來減少計算節點組中計算節點的數量,并且無需所述替代計算節點。在其它實施方案中,PES相反地可立即開始提供替代計算節點(例如,基于在任何情況下未延遲不可用計算節點的替代;基于在該情況下未延遲不可用計算節點的替代(由于所需計算節點數量作為協調活動H2的一部分而可能增加而非減少);基于在該情況下未延遲不可用計算節點的替代(由于其它因素,諸如用戶在稍后的時間T3之前已對八個計算節點進行支付);等)。具體地講,以類似于此前針對事件E2和E3所討論的方式,事件E9被分成同時或接近同時發生的兩個不同的事件E9a和E9b (未單獨示出)。因此,PES在該實例中記錄與經檢測已變得不可用的計算節點相對應的時間T20時的事件E9a,并且PES自動引發時間T20時的活動以終止不可用計算節點,例如以直接引起變化C6。此外,在該實例中,不可用計算節點由于事件E9a而發生的終止本身被視為大約時間T20時的個別事件E9b,該事件引發將該組的附加計算節點用作替代計算節點的請求,例如以將所需計算節點數量215保持在八個計算節點的所需數量215a。在該實例中,以類似于事件E4-E6的方式來處理事件E9b的請求,該請求被延遲直到將在當前聚合時段260b結束時進行的協調活動H2,但在其它實施方案和情況中,相反地可立即開始替代計算節點的這種提供。另外,在該實例中,未以類似于此前針對變化C4和C5描述的方式來更新正式記錄的計算節點數量225以對應于變化C6,但在其它實施方案中,可更新正式記錄的計算節點數量225以反映此類變化。
[0045]因此,在第二聚合時段260b結束時,開始協調活動H2,并且在該情況下會引起對計算節點組的動態修改。具體地講,PES在該實例中將與事件E4、E5、E6和E9b的各種經請求的所需計算節點數量215b、215c、215d和215a相對應的經請求的修改聚合,并且決定對八個先前所需計算節點數量215a做出聚合的動態數量修改,同時聚合的動態數量修改在該實例中增加了四個附加計算節點(例如,基于采用經請求的數量修改中的最大值),以便對應于十二個所更新的當前所需計算節點數量215e。在其它實施方案中,可以其它方式來確定聚合的動態數量修改,例如以選擇聚合的動態數量修改以便根據事件E9b來保持先前所需計算節點數量215a (例如,從而導致從當前的實際計算節點數量增加一個計算節點),以采用事件E4-E6的經請求的數量修改中的最小值(例如,從而導致從當前所需的計算節點數量增加兩個計算節點),以采用事件E4-E6的經請求的數量修改的平均值(例如,從而導致從當前所需的計算節點數量增加三個計算節點),以采用事件E4-E6的經請求的數量修改的聚合值(例如,從而導致從當前所需的計算節點數量增加九個計算節點),以采用事件E4-E6的經請求的數量修改的最高優先級(例如,從而導致從當前所需的計算節點數量增加三個計算節點,其前提是例如相比事件E5和E6的觸發器滿足情況,E4的用戶指令被視為具有較高優先級),以采用事件E4-E6的經請求的數量修改中第一次請求的修改或最后一次請求的修改(例如,從而導致從當前所需的計算節點數量分別增加四個或三個計算節點)等。在其中用戶指令事件相比觸發器滿足事件具有較高優先級的一些實施方案和情況中(例如,如果用戶指令始終會覆蓋來自觸發器滿足事件的任何經請求的動態修改),PES還可防止其它觸發器滿足事件發生在接收用戶指令事件之后的聚合時段期間,例如以在該實例中忽略(或絕不確定)發生在針對事件E4來接收用戶指令之后的任何觸發器滿足事件。此外,在該實例中,在協調活動H2時,當前實際和正式記錄的計算節點數量220和225在七個和八個計算節點處分別不同。因此,作為協調活動H2的一部分,PES開始向計算節點組提供五個附加計算節點,以將七個當前的實際計算節點數量增加至十二個新更新的所需計算節點數量,并且進一步更新正式記錄的計算節點數量225以符合十二個新更新的所需計算節點數量。因此,在該實例中,5個計算節點的能力可用性變化間接地由以下方式引起:根據事件E9b來代替由于變化C7而變得不可用的一個計算節點,以及增加與來自事件E4、E5和E6的所確定的聚合數量修改相對應的4個附加計算節點。
[0046]在第三聚合時段260c期間,進一步發生其它事件和計算節點能力可用性變化。具體地講,變化C7在大約時間T22時結束,其中當前可用的計算節點數量增加了五個至總共十二個計算節點,以反映其可用性在時間T21時開始的五個附加計算節點,并且實際計算節點數量220由此被更新。如時間線坐標圖205所示,CPU總平均利用率205a和網絡帶寬總平均利用率205b均在變化C7之后降低,其中CPU總平均利用率205a迅速下降。具體地講,在該實例中,CPU總平均利用率205a最終降至低于與觸發器250b的指定標準相對應的20%的閾值,從而致使事件ES發生(包括確定觸發器TR-3250b已被滿足),如時間線坐標圖205中通過CPU總平均利用率205a線上的第二個黑色橢圓所圖示。對于十個經請求的全部所需計算節點數量215f而言(或者無論當前所需的計算節點數量如何,可請求將所更新的所需計算節點數量設置為十個),觸發器的滿足情況引發了將所需計算節點數量215減少2個計算節點的請求。
[0047]最后,在聚合時段260c結束之前,額外變化C8發生在大約時間T28時,該變化由失效或者說是變得不可用的該組計算節點中的一個促使。相應事件ElO與變化CS大約同時發生,其中PES終止不可用計算節點(如果需要)。以類似于針對變化C6的方式,PES在該實例中選擇等待直到第三組協調活動H3在時間T31時開始,而非立即開始替代不可用計算節點(例如,因為事件ES使得可能或很可能的是,計算節點組中計算節點的所需數量此后會減少),但在其它實施方案中,PES相反地可立即開始提供替代計算節點,具體地講,以類似于此前針對事件E2、E3和E9所述的方式,事件ElO在該實例中被分成同時或接近同時發生的兩個不同的事件ElOa和ElOb (未單獨示出)。因此,在該實例中,PES記錄與經檢測已變得不可用的計算節點相對應的時間T28時的事件ElOa,并且PES自動引發時間T28時的活動以終止不可用計算節點,例如以直接引起變化CS。此外,在該實例中,不可用計算節點由于事件ElOa而發生的終止本身被視為大約時間T28時的個別事件ElOb,該事件引發將該組的附加計算節點用作替代計算節點的請求,例如以將所需計算節點數量215保持在十二個計算節點的所需數量215e。在該實例中,以類似于事件E9b的方式來處理事件ElOb的請求,該請求被延遲直到將在當前聚合時段260c結束時進行的協調活動H3,但在其它實施方案和情況中,相反地可立即開始替代計算節點的這種提供。另外,在該實例中,未以類似于此前針對變化C4-C6所述的方式來更新正式記錄的計算節點數量225以對應于變化C8,但在其它實施方案中,可更新正式記錄的計算節點數量225以反映此類變化。
[0048]因此,在第三聚合時段260c結束時,開始協調活動H3,并且會導致計算節點組發生變化。具體地講,PES在該實例中將與已經發生在時段260b期間的事件(在該實例中僅為事件ES和ElOb)相對應的經請求的修改聚合,并且決定對十二個先前所需計算節點數量215e做出聚合的動態數量修改,所述修改在該實例中減少了兩個計算節點,以便對應于十個所更新的當前所需計算節點數量215g。此外,在協調活動H3時,當前實際和正式記錄的計算節點數量220和225在十一個和十二個計算節點處分別不同。因此,作為協調活動H3的一部分,PES按照十一個計算節點的當前實際計算節點能力來引發十二個當前正式的計算節點數量發生變化,以達到十個當前所需的實際計算節點數量,以便將現有計算節點之一從計算節點組中移除(例如,以任選地在完成已開始的一些或所有動作之后終止在已移除的計算節點上執行程序,并且以使該計算節點可供其他用戶將來使用)。因此,在該實例中,在時間T31時將現有計算節點之一移除的能力可用性變化間接地由以下方式引起:終止關于事件ElOb的一組計算節點,以及請求減少與事件E8相對應的2個計算節點。PES進一步更新正式記錄的計算節點數量225以符合十個新更新的所需計算節點數量。在時間T31之后不久,最終變化C9在大約時間T32時結束,其中當前可用的計算節點數量減少了一個至總共十個計算節點,以反映在時間T31時開始從計算節點組中移除的計算節點,并且實際計算節點數量220由此被更新,在其它實施方案中,在決定做出所述變化時,變化C9可基本上立即發生在時間T31,例如其前提是立即將待移除的計算節點從計算節點組的其它活動中退出,甚至在已移除的計算節點暫時執行且可用于繼續進行操作時。
[0049]另外,雖然在該實例中所示出的協調活動H1、H2和H3發生在單個時間點,但應當理解到一些或所有協調活動可實際上發生在一段時間內,并且還可具有持續一段時間的其它效果。例如,在至少一些實施方案中,由PES引發的對計算節點組的程序執行能力的一些或所有變化可產生可能不允許至少一些其它類型的事件或變化的臨時鎖定期。可引起此鎖定的PES-指示的程序執行能力變化可包括例如作為協調活動的一部分來引起的程序執行能力增加和/或降低(例如,添加新計算節點、移除現有計算節點等),和/或響應于PES決定(例如,計算節點失效、接收用戶指令、用戶指定的觸發器的滿足情況等)而立即引發的程序執行能力變化。此類鎖定可具有各種類型的持續時間(例如,直至指定的結果或發生,例如直到所添加的計算節點已變得可用;指定的持續時間,諸如所添加的計算節點變得可用的平均或預期時間;等),并且在一些實施方案中可根據PES引發的變化的類型而有所不同。在此類鎖定期間,可能不允許至少某些類型的事件或變化,例如不允許在該鎖定持續時間期間用戶指定的觸發器被滿足(或通過忽略任何此類觸發器滿足情況),和/或不允許在該鎖定持續時間期間接受用戶指令(或通過忽略任何此類用戶指令)。此外,在一些實施方案中,與計算節點組相關的用戶可同樣地指定以與鎖定冷卻期類似的方式操作的冷卻期,諸如緊接鎖定或相反地發生在其它時間的指定時間量的冷卻期。如同鎖定,在冷卻期間,可能不允許至少某些類型的事件或變化,例如以不允許在冷卻期間用戶指定的觸發器被滿足(或通過忽略任何此類觸發器滿足情況)。應當理解到,在其它實施方案中,用戶和/或PES可以其它方式來控制對計算節點組的修改。
[0050]因此,這樣,PES操作以管理由一組計算節點提供給用戶的程序執行能力,包括以根據各種情況對該計算節點組做出各種動態修改。應當理解到,圖2A中示出的事件和變化僅提供用于進行示意性的目的,并且PES的所述實際事件、變化和其它操作在其它實施方案和情況中可能不同。
[0051]圖2B示出了用于將因果關系信息自動歸因于此前參照圖2A所討論的計算節點數量動態修改的技術的實例,諸如可由PESSM模塊的實施方案自動進行的技術。具體地講,圖2B示出了儲存與圖2A所示信息中的一些相對應的信息的兩個實例數據庫表數據結構,其中圖2B的實例表280儲存與圖2A的示例性計算節點組(圖2B中稱為“第I組”)發生的示例性計算節點能力可用性變化有關的各種信息,并且圖2B的實例表290儲存與圖2A的示例性計算節點組(第I組)發生的示例性事件有關的各種信息。
[0052]實例表280包括各自對應于參照圖2A所討論的示例性變化Cl-ClO中之一的各行或項285a-285k,其中示出了各行的各欄或列280a_280x。具體地講,在該實例中,各行包括唯一標識符("ID") 280a,與變化相對應的適用計算節點組的ID 280b、程序執行能力變化的類型280c、程序執行能力變化的預期結果的指示280d、關于變化的各種詳情280e、變化的開始和結束時間280f和280g、發生變化或者說是與變化相關的聚合時段280h (在該實例中為基于在聚合時段結束時進行的協調活動所提及的聚合時段)、變化-事件關結ID 280x和任選的各種其它信息。作為一個示例性實例,行285a對應于第I組的變化Cl,變化Cl對應于第I組的計算節點數量的變化,該變化涉及增加4個計算節點并且在聚合時段Hl期間于時間T02時結束。其它行包括類似的信息。
[0053]實例表290包括各自對應于參照圖2A所述的示例性事件El-ElO中之一的各行或項295a-295m,其中示出了各行的各欄或列290a_290x。具體地講,在該實例中,各行包括唯一標識符("ID〃) 290a、與事件相對應的適用計算節點的ID 290b、事件的類型290c、關于事件來源的信息290d、事件的時間290e、發生事件或者說是與事件相關的聚合時段290f (在該實例中指基于在聚合時段結束時進行的協調活動)、變化-事件關結ID 290x和任選的各種其它信息(例如,與所接收的用戶指令相關的特定用戶)。作為一個示例性實例,行295h對應于第I組的事件E4,該事件E4對應于在聚合時段H2期間的時間T19時所接收的用戶指令,該指令請求第I組的所需計算節點數量增加3個計算節點。其它行包括類似的信息。
[0054]在圖2B的實例中,表280和290的變化-事件關結ID信息280x和290x反映了被歸因以反映變化和事件之間的關系的因果關系信息。具體地講,在該實例中,如果表280和290中的行針對變化-事件關結ID信息280x和290x而共享共同的值,則其反映了相應事件和變化之間的被歸因的因果關系。作為一個實例,如此前參照圖2A所討論,事件E3b對應于提供變為不可用的計算節點的替代計算節點,所述計算節點可直接歸因于對應于由此將計算節點添加至該組的變化C5。因此,行295e (對應于事件E3b)和行285g (對應于變化C5)共享共同的關結標識符。
[0055]相反地,與在協調活動H2期間開始的添加五個計算節點相對應的變化C7不具有可直接歸因于該變化的單個事件。具體地講,事件E4、E5和E6各自請求對第I組進行動態修改,這些動態修改經聚合且共同用于促使針對變化C7而添加五個計算節點中的四個。因而,行295f-295h (對應于事件E4-E6)和行285i (對應于變化C7)均共享共同的關結標識符。此外,在圖2A的實例中,被添加作為變化C7的一部分的五個計算節點之一為由于變化C6而變得不可用的計算節點的替代節點,同時開始對應于事件E9b的替代計算節點。因此,行295j (對應于事件E9b)和行285i (對應于變化C7)也共享相同的共同關結標識符。在其它實施方案中,如果通過提供對應于事件E4-E6的四個附加計算節點以單獨地在事件E9b中開始提供替代計算節點,例如以立即代替不可用計算節點,則所述替代計算節點的相應變化將在時段260b和由此進行的協調活動H2結束之前發生,并且將在表280中與事件E9b和共享不同的相應關結標識符的所述額外變化單獨地示出。另外,雖然針對變化C7而添加的五個計算節點以聚合的方式在表280的單行中示出,但在其它實施方案中,所添加的每個計算節點均可在表280的單獨的行285中表示,并且如果如此,其各自共享相同的關結標識符N7,該關結標識符N7目前針對聚合變化C7的唯一行285i而示出。
[0056]此外,在該實例中,在表280中追蹤了變化,這些變化不僅對應于基于動態用戶指令和/或被滿足的用戶觸發器的計算節點數量的動態修改,還基于計算節點數量的意外變化(例如,由于計算節點失效或者說是變得不可用)。此類變化基于監測活動來檢測,并且被示為觸發額外變化的事件(例如提供替代計算節點),但在其它實施方案中,可以其它方式對其進行處理,例如不追蹤此類變化和/或不將系統啟動的替代活動視為事件。此外,雖然表280和290中的變化-事件關結信息未對可直接歸因于一個或多個相應事件(例如,立即引發那些變化的事件)的變化與可間接歸因于一個或多個相應事件(例如,例如在協調活動期間聚合在一起且共同引起那些變化的事件)的變化進行區分,但在其它實施方案中,可進一步追蹤此類信息。
[0057]如前所述,對計算節點組的特定程序執行能力動態修改的責任歸因可提供各種益處,包括向與計算節點組相關的用戶提供為何會發生變化的解釋。還可響應于從用戶或其它來源處接收的各類詢問來產生和/或使用此類責任歸因信息,這些詢問諸如關于識別哪些(多個)事件為引起一組一個或多個計算節點的可用性發生指示的特定程序執行能力修改或其它變化的原因的請求和/或關于哪些(多次)程序執行能力修改或其它計算節點組的(多個)可用性變化由一個或多個指示的事件引起的請求。參照圖2B所討論,表280和290中示出的關結信息提供了一種用于追蹤和提供責任歸因信息的機制。例如,對于圖2A中與變化C7相對應的添加5個計算節點而言,用戶可能想知道為何添加了 5個計算節點(例如,特別是按照添加3個計算節點的事件E4的用戶指令)。通過采用圖2B中示出的關結信息,PES或其它系統可易于自動生成人可讀的解釋。例如,響應于關于與圖2A的變化Cl相對應的添加四個計算節點的原因的用戶請求,PES或其它系統可例如指示以下內容:“變化COl由時間Tl時的事件EOl直接引起。事件EOl為來自用戶UUU以開始提供一組8個計算節點的請求”。該信息可這樣產生:通過采用行285a中對應于變化Cl的關結信息280x以識別表290中對應于事件El的行295a,并且以所需方式從行285a和295a中提取和格式化信息(例如,以基于用戶請求或先前的用戶首選項的格式、以基于PES默認值的格式等)。類似地,響應于關于執行用戶指令El以開始提供該組八個計算節點的用戶請求,PES或其它系統可例如指示以下內容:“時間Tl時的事件EOl直接引起變化C01、C02和C03。變化COl為添加4個計算節點,其在時間Tl時開始并且在時間T2時結束。變化C02為添加3個計算節點,其在時間Tl時開始并且在時間T3時結束。變化C03為添加I個計算節點,其在時間Tl時開始,但未結束”。作為另一個實例,響應于關于與圖2A的變化C7相對應的添加五個計算節點的原因的用戶請求,PES或其它系統可例如指示以下內容:“變化C07由發生在時段Tll至T21期間的事件E05、E06、E04和E09b間接引起。事件E05為基于觸發器TR-1的滿足情況的4個附加計算節點的請求。事件E06為基于觸發器TR-N的滿足情況的2個附加計算節點的請求。事件E04為基于來自用戶UUU的用戶提供動態指令的3個附加計算節點的請求。事件E09b為基于該組中不可用計算節點的自動終止的I個替代計算節點的請求”。作為對此類文本串的補充或替代,責任歸因信息還可以各種其它形式諸如自動報表(例如,以表格、圖表等)以及以定期或其它預定方式來產生。應當理解到,在其它實施方案中,此類責任歸因信息可以各種其它方式來產生和使用。
[0058]應當理解到,關于圖2B中示出的事件和變化的信息僅提供用于進行示意性的目的,并且對于所儲存的信息而言,此類信息的儲存在其它實施方案中可以各種其它方式來進行。此外,在其它實施方案中,PES可儲存關于用戶和計算節點組的各種其它類型的信息,例如以提供儲存關于用戶定義的觸發器、關于監測的性能測量信息、關于用戶賬號等的信息的附加表。
[0059]另外,圖2A和2B的前述實例提供用于進行示意性的目的,并且其它實施方案可以各種方式不同于這些實例。例如,雖然在這些實例中,程序執行能力根據計算節點的數量來測量和修改,例如其前提是各種可用計算節點被視為等效(例如,具有等效的計算資源),但可提供其它實施方案,其中各種可用計算節點可為具有不同特性(例如不同的處理能力、內存量、平臺規格等)的不同類型,和/或其中以不同于計算節點數量的方式來追蹤程序執行能力。在一些此類實施方案中,各種請求可包括一個或多個特定類型的計算節點的指示,所述計算節點用于被選擇來執行與所述請求相關的程序的多組計算節點中,并且那些請求僅可在相應的指定類型的計算節點上實現。
[0060]另外,在至少一些實施方案中,PES或其它系統還可進行作為管理多組計算節點的一部分的其它類型的活動。例如,如前所述,PES或其它系統可決定在各個時間從計算節點組中添加或移除計算節點,各個時間包括如下:在聚合時段結束時進行的協調活動期間(響應于在所述時段期間被滿足的一個或多個觸發器和/或在所述時段期間接收的用戶指令);在響應于經指定或確定而具有瞬即效應的用戶指令或觸發器滿足情況的任何時間;在響應于PES或其它系統的自動活動例如以代替失效的計算節點和/或終止并移除當前操作被禁止的計算節點的任何時間;等。在至少一些實施方案中,PES或其它系統還可在確定至少一些此類計算節點組修改的確切時間時考慮其它因素。例如,在用戶將負責針對給定時段使用給定數量的計算節點的情況中(例如,已經收取了 X個計算節點在下一小時的費用),此類信息可用于確定關于計算節點組的至少某些類型的修改的時間。如果PES或其它系統決定將該組中計算節點的數量減少至低于X,則PES或其它系統可決定在實際上將計算節點數量減少至低于X之前,等待直到接近給定時段或給定時段結束時(例如,在已向用戶收取費用的小時結束時)。類似地,如果一組計算節點在接近進行新的協調活動時失效(例如,在接近將經請求的計算節點數量修改聚合期間的一段時間結束時),則PES或其它系統可決定對實際節點數量和任選的正式記錄的節點數量進行更新,以反映所述失效,但無需立即開始添加替代計算節點-這樣,如果已確定在協調活動期間聚合經請求的計算節點數量修改可將該組的計算節點數量減少一個或多個計算節點,則失效的計算節點可用作一個減少的此類節點,而非終止該組的執行計算節點。
[0061]在一些實施方案中,PES或其它系統可同時管理對計算節點組進行的多次不同類型的修改。作為一個實例,可采用單個位置處的計算節點來將計算節點組管理在當前所需的計算節點數量,但用戶可決定為計算節點組指定第二類型的尺度,使得該組中計算節點的指定的所需子集位于不同的第二位置。如果如此,PES或其它系統可操作以通過各種方式來滿足第二尺度的期望值,各種方式包括通過將任何新計算節點逐步添加至第二位置處的組中并且從第一位置處的組中逐步移除任何現有計算節點直到實現第二尺度的期望值,或者立即終止第一位置處的組中的現有計算節點以能夠使替代計算節點添加至第二位置處的組中。此類逐步添加和/或移除可以其它地方更詳細地討論的方式中的任何方式來觸發,包括代替不可用計算節點、響應于動態指定的用戶指令和/或被滿足的用戶指定的觸發器來修改計算節點數量等。另外,雖然計算節點數量和位置在該實例中為同時均衡,但可以類似的方式來進行各種其它類型的變化(例如,例如根據具有不同相關數量的計算資源的不同類型將現有計算節點從第一種類型改變為第二種類型)。此外,雖然通過改變計算節點數量在一些實例中進行了程序執行能力修改,但在其它實施方案中,此類能力修改可通過改變該組中一個或多個計算節點的程序執行能力來進行(例如,通過用具有或多或少的一種或多種類型的相關計算資源的第二計算節點代替第一計算節點、通過對已成為該組的一部分的計算節點中的一個節點可用的一種或多種計算資源的量進行修改等)。
[0062]如前所述,PES可在各個實施方案中提供和使用各類功能,并且這些功能可以各種方式提供。例如,在一些實施方案中,可從PES獲得的程序執行能力可包括多個計算節點,所述計算節點用于代表用戶來執行程序,例如通過經由一個或多個網絡或能夠在計算機之間傳輸數據的其它數據交換介質互連的多個物理計算機。這些計算機中的至少一些可在一些實施方案中各自包括同時執行多個程序的足夠的計算相關資源(例如,足夠的可寫內存、非易失性存儲、CPU周期或其它CPU使用率度量、網絡帶寬、交換空間等),并且這些計算機中的至少一些在一些此類實施方案中可各自提供多個虛擬機計算節點,所述虛擬機計算節點各自可代表不同的用戶來執行一個或多個程序。此外,在各個實施方案中,PES可代表多個用戶來執行各類程序。例如,代表用戶來執行的此類程序可包括一個或多個操作系統、應用(例如,服務器和/或其它軟件應用)、實用程序、程序庫等。另外,在至少一些實施方案中,此類程序可包括可執行的軟件映像,諸如虛擬機映像,其在一個或多個虛擬機計算節點上可啟動或者說是可受載,并且各自可包括操作系統軟件、用于一個或多個應用程序的軟件,和/或配置信息等。
[0063]在至少一些實施方案中,通過PES在一組一個或多個計算節點上執行一個或多個程序可響應于立即執行那些程序的當前執行請求來引發。或者,所述引發可基于此前接收的程序執行請求,該請求可對當前時間內的那些程序預定或者說是保留日后執行。程序執行請求可以各種方式來接收,例如直接從用戶處接收(例如,經由交互式控制臺或由程序執行服務提供的其它GUI),或者從自動引發一個或多個其它程序或其它實例的自行執行的用戶執行程序處接收(例如,經由程序執行服務提供的API,諸如使用網絡服務的API)。程序執行請求可包括用于引發一個或多個程序的執行的各種信息,諸如可執行的程序或待執行的程序的其它復本、此前經注冊或者說是提供用于執行的程序的指示,和待同時執行的許多程序實例(例如,表示為單個所需數量的實例、最小和最大數量的所需實例等),以及用于執行一個或多個程序的各種其它類型的首選項和/或要求(例如,資源分配、用于執行的地理和/或邏輯位置、其它程序和/或計算節點的臨近執行、時間相關標準等)。
[0064]在接收用于在指示的時間執行一個或多個程序實例的請求之后,PES可決定將一個或多個計算節點用于執行程序實例的一組中。在一些實施方案中,使用計算節點(即使用于將來執行)的決定在所述請求時進行。在其它實施方案中,將計算節點用于將來執行一個或多個程序實例的決定可基于當時可用的信息而被延遲至稍后的時間,諸如將來的執行時間。在一些實施方案中,將哪些計算節點用于代表用戶來執行一個或多個程序的決定在執行請求之前做出,例如在用戶預訂和/或注冊以使用PES的時間和/或執行用戶程序的請求之前的另一個時間。例如,在一些此類實施方案中,一個或多個計算節點在一段時間內可與用戶相關,使得可在所述期間的任何時間(諸如接收在所述期間執行所述用戶的軟件的請求的任何時間)代表該用戶在相關的計算節點上執行程序。另外,在一些實施方案中,將哪些計算節點用于代表用戶來執行程序的決定可在一個或多個計算節點和/或一個或多個計算節點的計算資源可用于執行所述用戶的程序時做出,例如以在計算節點未被使用和/或可以其它方式用于執行程序時,在一個或多個計算節點上執行一個或多個待處理請求的程序。
[0065]將哪些計算節點用于執行各程序復本或實例的決定可以各種方式做出,包括基于在請求中指定的或者說是為程序和/或相關用戶指定的任何首選項和/或要求(例如,在注冊時間等)。例如,如果確定了用于執行程序實例的優選和/或所需資源(例如,內存和/或存儲;CPU類型、周期或其它性能度量;網絡容量;平臺類型等)的標準,則將適當的計算節點用于執行程序實例的決定可至少部分地基于計算節點是否具有可用于滿足那些資源標準的足夠資源。關于執行和配置程序以在程序執行服務上執行的其它細節包括在2006年 3 月 31 日提交的名稱為"Managing Execut1n of Programs by Multiple ComputingSystems"的待審的美國專利申請N0.11/395,463中,該專利全文據此以引入的方式并入本文。
[0066]在一些實施方案中,費用可與PES的使用相關,使得PES可代表用戶來執行程序以交換該用戶對一項或多項費用的付款。例如,在一些實施方案中,根據分配用于代表用戶來執行一個或多個程序的程序執行能力的量和/或類型,例如根據分配用于執行該用戶的程序的許多處理單元中的一個或多個、內存量、存儲量、網絡資源量等,可以向該用戶收取費用。在一些實施方案中,費用可基于其它因素,諸如用于執行程序的計算資源的各種特性,例如基于CPU能力或性能、平臺類型(例如,32位、64位等)等。在一些實施方案中,費用可根據各種使用因素來收取,諸如每次使用服務的價格、使用計算服務的每個時間單位的價格、每個所用存儲量的價格、每個傳入和/或傳出的數據的價格等。在至少一些實施方案中,如下文更詳細地討論,費用可基于各種其它因素,諸如關于執行程序的各種性質(例如,執行連續性、故障容差等)。在至少一些實施方案中,PES供應商可提供用于代表多個用戶來執行程序的各種等級、類型和/或水平的服務或功能中的一種或多種,并且在一些此類實施方案中,各種費用可與各種等級、類型和/或水平的服務相關。另外,例如,等級可用于由PES提供的特定類型的功能,例如以針對第一數量的程序執行能力功能收取第一等級的費用(例如,高達所用計算節點的指定的第一閾值)、針對第二數量的程序執行能力功能收取第二等級的費用(例如,較低價格等級)(例如,高于所用計算節點的指定的第一閾值和高達所用計算節點的指定的第二閾值)等。關于與程序執行服務相關的各種費用的其它細節包括在2007年12月21日提交的名稱為"Providing Configurable Pricing forExecut1n of Software Images〃的待審的美國專利申請N0.11/963,331中,該專利全文據此以引入的方式并入本文。
[0067]此外,PES可在各個實施方案中提供和使用各種其它類型的功能,如其它地方更詳細地討論。
[0068]圖3為示出適用于對管理多個用戶的多組計算節點的技術進行實施的系統的示例性實施方案的框圖。具體地講,圖3示出了適用于提供程序執行服務的至少一些功能的服務器計算系統300,以及程序執行服務的用戶可以使用的各個客戶計算系統350、程序執行服務可以使用的計算節點360、和其它計算系統380。在圖示實施方案中,服務器計算系統300具有以下部件,其包括CPU 305、各種1/0部件310、存儲裝置320和存儲器330。圖示的1/0部件包括顯示器311、網絡接線312、計算機可讀介質驅動器313和其它1/0設備315 (例如,鍵盤、鼠標、揚聲器等)。另外,圖示的用戶計算系統350具有與服務器計算系統300的部件相類似的部件,其包括CPU 351、1/0部件352、存儲裝置354和存儲器357。其它計算系統380和計算節點360各自也可包括與參照服務器計算系統300所示出的部件中的一些或全部相類似的部件,但為了簡潔起見,在該實例中未示出此類部件。
[0069]程序執行服務系統管理器模塊340的實施方案正在存儲器330中執行,并且通過網絡390(例如,經由因特網和/或萬維網、經由私用蜂窩網絡等)與計算系統350和380以及計算節點360進行交互。在該示例性實施方案中,PESSM 340包括關于管理(例如結合由PESSM340管理的程序執行服務)與用戶計算系統350進行交互的各個用戶(未示出)對多個計算節點360的使用的功能。其它計算系統350和380以及計算節點360可將各種軟件作為與PESSM的交互作用的一部分來執行。例如,用戶計算系統350可在存儲器357中執行軟件以與PESSM 340進行交互(例如,作為萬維網瀏覽器或專用客戶端應用程序的一部分),例如以配置和/或請求代表那些系統的用戶在一個或多個計算節點360上以各種方式來執行程序,以及以實施各種其它類型的動作,如其它地方更詳細地討論。可將關于PESSM模塊340的功能的各種信息儲存在存儲裝置320中,諸如關于用于代表多個用戶來執行程序的配置、執行和/或注冊的信息322、關于計算節點組的程序執行能力修改的信息324 (例如,關于用戶指定的預定義觸發器的信息;關于來自用戶的動態指定的能力修改指令的信息;關于計算節點性能測量的信息和關于確定指定的觸發器是否被滿足的其它信息;各組的所需、實際和正式記錄的計算節點數量的當前值;等),以及關于特定計算節點組的特定程序執行能力修改的因果關系歸因的信息326(例如,通過列出所發生的至少一些事件和各組計算節點的至少一些變化,并且將特定事件與特定變化聯系起來,例如以類似于圖2B和其它地方所討論的方式)。
[0070]在PESSM模塊340接收在一組一個或多個計算節點360上執行一個或多個程序的請求(或其它指示)之后,PESSM模塊340選擇該組的一個或多個計算節點,并且引發那些程序在那些計算節點360上的執行。另外,PESSM模塊340可進一步與計算節點360進行交互,以隨后終止所引發的程序在所述計算節點上的執行,將所述程序中的一個或多個移動至一個或多個其它計算節點360或計算系統380等。計算節點360在各個實施方案中可具有各種形式,例如以包括許多物理計算系統和/或在一個或多個物理計算系統上執行的許多虛擬機。在一些實施方案中,服務器計算系統300和計算節點360可為數據中心或其它組的協同定位計算系統的一部分,或者可以其它方式為專用網的計算節點。另外,在一些實施方案中,PESSM模塊340可與一個或多個其它計算系統380進行交互,以啟動或終止一個或多個程序在那些計算系統上的執行,例如其前提是計算系統380由提供計算節點以供其他用戶使用的一個或多個第三方參與者提供。在一些實施方案中,PESSM模塊340可進一步或相反地管理一種或多種類型的計算相關資源或服務(除程序執行服務之外)(例如,持久性或臨時數據存儲服務、消息服務、數據庫服務等)的使用權。
[0071]另外,程序執行服務能力維護管理器模塊345的實施方案正在存儲器330中執行,并且在該實施方案中通過網絡390與計算節點360進行交互。具體地講,在該示例性實施方案中,PESCMM模塊345包括關于監測計算節點360中的一個或多個或者說是與其進行交互以追蹤那些計算節點的使用的功能,例如以確定計算節點組的當前實際程序執行能力和/或確定與計算節點組的一些或所有計算節點相對應的當前性能特性。如前所述,此類信息可儲存在存儲裝置320上和/或其它位置,并且可以各種方式被模塊340和345使用。例如,在一些實施方案中,如果模塊345發現計算節點已失效或者說是變得不可用(例如,作為提供或者說是初始化計算節點以用作計算節點組的一部分的過程中的一部分,在計算節點已用做計算節點組的一部分之后等),則模塊345可自動采取動作以將不可用計算節點用新計算節點來代替。在其它實施方案中,模塊345可能相反地不可對計算節點進行一些或所有監測,例如其前提是模塊345相反地從另一個來源處獲得關于計算節點組的當前實際程序執行能力和/或與計算節點組的一些或所有計算節點相對應的當前性能特性的信息,然后視情況將該信息用于維持計算節點組的程序執行能力。
[0072]應當理解到,計算系統300、350和380以及計算節點360僅為示例性的,并且并非旨在限定本發明的范圍。所述計算系統和/或節點相反地可各自包括多個交互計算系統或設備,并且所述計算系統/節點可包括通過一個或多個網絡(諸如因特網)、經由萬維網或經由專用網(例如移動通信網絡等)連接至未示出的其它設備。更一般地說,計算節點或其它計算系統可包括可進行交互且執行所述類型的功能的硬件或軟件的任何組合,包括但不限于臺式電腦或其它計算機、數據庫服務器、網絡存儲設備和其它網絡設備、PDA、手機、無線電話、尋呼機、電子整理器、因特網設備、電視系統(例如,采用機頂盒和/或個人/數字視頻錄像機),以及包含適當通信能力的各種其它消費品。另外,由圖示的模塊340和/或345提供的功能可在一些實施方案中分配于其它模塊中。類似地,在一些實施方案中,可能不可提供模塊340和/或345的一些功能和/或其它附加功能可能是可用的。
[0073]也應當理解到,雖然各個項目在使用時被示為儲存在存儲器中或存儲裝置上,但這些項目或其部分可在為了存儲管理和數據完整性的存儲器和其它存儲設備之間傳送。或者,在其它實施方案中,所述軟件模塊和/或系統中的一些或全部可在另一臺設備上的存儲器中執行,并且經由計算機之間通信與圖示的計算系統進行通信。此外,在一些實施方案中,所述系統和/或模塊中的一些或全部可以其它方式來實施或提供,這些方式諸如至少部分地以固件和/或硬件的方式,包括(但不限于)一個或多個專用集成電路(ASIC)、標準集成電路、控制器(例如,通過執行適當的指令,并且包括微控制器和/或嵌入式控制器)、現場可編程門陣列(FPGA)、復雜可編程邏輯器件(CPLD)等。也可將所述模塊、系統和數據結構中的一些或全部(例如,作為軟件指令或結構化數據)儲存在計算機可讀介質上,諸如硬盤、存儲器、網絡,或者通過適當的驅動器或經由適當的連接件讀取的便攜式介質物件。所述系統、模塊和數據結構也可作為產生的數據信號(例如,作為載波或者其它模擬或數字傳播信號的一部分)在各種計算機可讀傳輸介質(包括無線和有線/電纜介質)上傳輸,并且可采取各種形式(例如,作為單一或多路模擬信號的一部分,或者作為多個離散數字包或幀)。在其它實施方案中,此類計算機程序產品也可采取其它形式。因此,本發明可通過其它計算機系統配置來實施。
[0074]圖4為程序執行服務系統管理器程序400的示例性實施方案的流程圖。所述程序可通過以下方式來提供,例如執行圖1A和圖1B各自的PESSM模塊110和180,和/或圖3的PESSM模塊340,例如以有助于管理用戶對多組計算節點的使用,以及在某些情況下進行其它類型的管理操作。在該圖示實施方案中,程序400管理程序執行服務的各個使用方面,該程序執行服務提供了代表多個用戶來執行程序的程序執行能力。
[0075]在圖示實施方案中,所述程序從接收信息或請求的圖框405處開始。所述程序繼續至圖框410,以確定所接收的請求或信息(諸如來自用戶的請求)是否是關于引發一個或多個程序在一組計算節點上的執行。如果是,所述程序繼續至圖框415,以獲得關于經請求的程序執行的信息,諸如計算節點組的程序執行能力的初始所需量(例如,所需計算節點數量)、任選地一個或多個待執行的程序以及任選地一個或多個用戶指定的能力修改觸發器。如其它地方所討論,在一些實施方案中,用戶可從各類計算節點中的一個或多個中選擇和/或可以其它方式指定各種量和/或類型的所需計算資源(例如,處理單元類型/量、內存量、平臺規格等)。在圖框420中,所述程序然后選擇計算節點以用于該組中,并且在圖框425中,開始使那些所選計算節點可供用戶使用,例如通過提供所選計算節點并且任選地引發一個或多個待執行的程序的執行。所述程序也將該組中的所選計算節點的所需程序執行能力指定為該組的正式記錄的初始程序執行能力。當代表用戶可使用計算節點時,可以各種方式使該用戶獲知其可用性,或在其它實施方案中,計算節點可以自動方式進行操作,而無需用戶的進一步交互。所述程序然后繼續至圖框430,以儲存關于計算節點組的信息,包括該組的任何用戶指定的觸發器。
[0076]如果相反地在圖框410處確定未接收到引發一組計算節點的執行的請求,則所述程序相反地繼續至圖框440,以確定是否接收到關于修改現有計算節點組的程序執行能力的請求。如果是,所述程序繼續至圖框445,以接收和儲存關于修改所指示的現有計算節點組的程序執行能力的動態指定的用戶指令。在圖示實施方案中,用戶指令可與發生在當前聚合時段期間的其它可能的程序執行能力修改請求聚合在一起,并且在下次進行協調活動期間進行進一步處理(例如參照圖框465-477),但在其它實施方案中,相反地可立即執行至少一些此類用戶指定的修改請求。
[0077]如果相反地在圖框440處確定未接收到修改一組計算節點的程序執行能力的請求,則所述程序相反地繼續至圖框460,以確定是否當前要針對一個或多個計算節點組的程序執行能力進行定期或者說是反復的協調活動,例如在此計算節點組的程序執行能力修改請求的聚合時段結束時。如果是,所述程序繼續至圖框465,以確定當前進行協調活動的一個或多個計算節點組(例如,聚合時段已結束的計算節點組和一個或多個程序執行能力動態修改已被聚合的計算節點組),并且在圖框467中,選擇下一個經確定的計算節點組,從第一個開始。所述程序然后繼續至圖框470,以執行進行反復能力協調活動的程序,其中此程序的一個實例將參照圖5更詳細地描述。所述程序接下來繼續至圖框475,以執行進行關于程序執行能力修改的因果關系歸因的活動(在圖框470中進行)的程序,其中此程序的一個實例將參照圖6更詳細地描述。在圖框475之后,所述程序繼續至圖框477,以確定是否要處理更多經確定的計算節點組,并且如果是,所述程序返回至圖框467,以選擇下一個經確定的此計算節點組。
[0078]如果相反地在圖框460處確定當前未針對一個或多個計算節點組的程序執行能力進行定期或者說是反復的協調活動,則所述程序相反地繼續至圖框480,以任選地進行一個或多個其它指示的操作。此類操作可包括例如以下中的一個或多個:關于進行其它類型的程序執行的用戶請求(如果所提供的程序執行服務提供了此類其它程序執行類型),例如以在單個計算節點上執行單個程序;未立即執行的用戶指定的程序執行能力修改請求(例如,終止執行所指示的特定計算節點的用戶指令,例如如果該計算節點不能正常運行);指定附加觸發器或者說是修改所指示的計算節點組的配置信息的用戶請求;針對所指示的計算節點組立即進行協調活動的用戶請求,諸如作為反復的協調活動的補充或替代(例如,如果僅在用戶請求時才進行協調活動);獲得關于與用戶相關的一個或多個計算節點組的各種狀態信息的用戶請求;向用戶進行管理相關活動(諸如預訂、注冊或付款操作)的請求;等。
[0079]在圖框430、445或480之后,或者如果相反地在圖框477中確定經確定的附加計算節點組不可用,則所述程序繼續至圖框485,以根據圖框405中所接收的信息或請求或者以其它方式(例如定期地)引發的信息或請求,任選地進行任何用戶計費(或償付)活動,例如以根據提供給這些用戶的程序執行功能來從一個或多個用戶處收取和/或收集費用。所述程序還可視情況任選地進行定期內務操作。
[0080]在圖框485之后,所述程序繼續至圖框495,以確定是否要繼續,例如直到終止執行所述程序的明確指示時。如果確定要繼續,則所述程序返回至圖框405,否則,繼續至圖框499并且結束。應當理解到,可在一些實施方案和情況中進行其它類型的活動,例如以確定用戶是否被授權進行經請求的特定操作,以針對某些類型的經請求的操作立即從用戶處獲得付款等。另外,雖然用戶請求且其它操作在圖示實施方案中被指示為以專門針對特定計算節點組和特定相關用戶的方式來進行,但在其它實施方案中,一些或所有此類操作相反地可以更普遍地例如應用于與單個用戶相關的多個計算節點組和/或從與一個或多個計算節點組相關的多個用戶處應用。
[0081]圖5為遞歸能力協調程序500的示例性實施方案的流程圖。所述程序可通過以下方式來提供,例如執行圖1A和圖1B各自的PESSM模塊110和180,和/或圖3的PESSM模塊340,例如該程序可從圖4中的程序400的圖框470處開始。
[0082]在圖示實施方案中,所述程序開始于圖框505,其中其獲得了待進行的能力協調活動的當前所選計算節點組的指示。在圖框515中,所述程序然后檢索關于所選計算節點組的正式記錄的程序執行能力的信息,例如根據先前針對所選計算節點組進行的協調活動(或如果該活動為所進行的第一次協調活動,則為所選計算節點組的正式記錄的初始程序執行能力),和/或根據可由PES能力維護管理器模塊對正式記錄的程序執行能力進行的后續修改(例如,如參照圖7更詳細地描述)。所述程序然后繼續至圖框520和525,以分別確定所選計算節點組的當前實際和當前所需程序執行能力。確定當前實際程序執行能力可包括例如檢索此前由PES能力維護管理器模塊作為監測所選計算節點組的一部分來儲存的信息,但在其它實施方案中,所述程序500可動態確定當前實際能力(例如,通過動態請求PES能力維護管理器模塊或其它監測來源提供該信息)。
[0083]在圖框525中確定當前所需程序執行能力可包括例如檢索以下信息,關于在與協調活動相對應的當前聚合時段期間已針對所選計算節點組從相關用戶處接收的動態指定的任何能力修改指令的信息(例如,如此前參照圖4的圖框445所討論),以及關于先前已在當前聚合時段期間被確定為被滿足的所選計算節點組的任何用戶指定的觸發器的信息。或者,在一些實施方案中,所述程序相反地可檢索所選計算節點組的所確定的性能特性信息(例如,此前由PES能力維護管理器模塊作為監測所選計算節點組的一部分來儲存的信息,或通過請求PES能力維護管理器模塊或其它監測來源提供該信息而動態獲得的信息),以便當前確定是否所選計算節點組的任何用戶指定的觸發器目前被滿足和/或此前在當前聚合時段期間已被滿足。在檢索各種信息之后,當前所需程序執行能力可通過聚合一個或多個經請求的程序執行能力修改來確定(如其它地方更詳細地討論),以便在做出任何此類聚合的能力修改之后,確定所得的所需程序執行能力。
[0084]在圖框525之后,所述程序繼續至圖框530,以確定將對所選計算節點組做出的實際變化,以便協調所選計算節點組的當前實際、所需和正式記錄的程序執行能力,例如以將當前正式能力調整為當前所需能力。所述程序然后繼續至圖框535,以將由經修改的所選計算節點組提供的當前所需程序執行能力指定為所選計算節點組的所更新的當前正式記錄的程序執行能力,并且進一步引發圖框530中確定的程序執行能力修改。在圖框535之后,所述程序繼續至圖框599并且返回。
[0085]圖6為能力修改歸因程序600的示例性實施方案的流程圖。所述程序可通過以下方式來提供,例如執行圖1A和圖1B各自的PESSM模塊110和180,和/或圖3的PESSM模塊340,例如該程序可從圖4中的程序400的圖框475處開始。
[0086]在圖示實施方案中,所述程序開始于圖框605,其中其獲得了待進行的能力修改歸因活動的當前所選計算節點組的指示。在圖框625中,所述程序然后識別關于自先前的時間(諸如先前針對所選計算節點組進行的協調活動)以來發生的程序執行能力可用性變化的信息。識別所述變化信息可包括例如檢索此前由PES能力維護管理器模塊作為監測所選計算節點組的一部分來儲存的信息,但在其它實施方案中,所述程序600可動態確定該信息(例如,通過動態請求PES能力維護管理器模塊或其它監測來源提供該信息)。
[0087]在圖框625之后,所述程序繼續至圖框630,以確定是否已發生任何此類能力可用性變化,否則,繼續至圖框699。否則,所述程序繼續至圖框635,以識別關于自先前的時間(諸如先前針對所選計算節點組進行的協調活動)以來發生的程序執行能力修改請求事件的信息。識別所述事件信息可包括例如檢索此前由PES系統管理器模塊作為向所選計算節點組提供功能的一部分來儲存的信息,例如參照圖4和圖5更詳細地討論。在圖框640中,例如根據事件的類型(例如代替不可用計算節點的自動化系統操作、指定相應的立即響應的所接收的用戶指令等),所述程序然后確定直接引起相應的可用性變化的所識別事件中的任何事件。
[0088]在圖框640之后,所述程序繼續至圖框645,以選擇圖框625中所識別的下一個可用性變化,從第一個開始。在圖框650中,所述程序然后確定該變化是否可直接歸因于圖框640中確定的個別事件之一,如果是,將該事件記錄為所選能力可用性變化的原因。否則,所述程序在圖框650中將所選能力可用性變化的原因歸因為圖框640中未確定的其它所識別事件的組合。在圖框660中,所述程序然后確定是否存在更多能力可用性變化,如果是,返回至圖框645以選擇下一個此能力可用性變化。否則,所述程序繼續至圖框699并且返回。
[0089]圖7為程序執行服務能力維護管理器程序700的示例性實施方案的流程圖。所述程序可通過以下方式來提供,例如執行圖1A和圖1B各自的PESCMM模塊115和160,和/或圖3的PESCMM模塊345,例如以有助于監測用戶的多組計算節點,包括確定可從計算節點組獲得的實際程序執行能力。在該圖示實施方案中,所述程序700結合提供代表多個用戶來執行程序的程序執行能力的程序執行服務進行操作,但在其它實施方案中,可以其它方式提供程序700的一些或所有功能。
[0090]在圖示實施方案中,所述程序開始于圖框705,其中已接收到開始收集關于一個或多個計算節點組的計算節點的信息的指示(例如連續地或者說是以重復的方式),雖然此處未示出,但在一些實施方案中,其它模塊和/或程序可動態請求程序700以產生和提供特定的相關信息(例如關于特定的相關計算節點組的信息)。在圖框705中,所述程序收集一個或多個此類計算節點的性能特性信息,包括那些計算節點所屬的計算節點組的指示,以供以后用于產生所述計算節點組的聚合信息。所述信息可以各種方式產生,包括通過請求特定計算節點或相關模塊(例如,虛擬機計算節點的相關VM管理器組件)提供該信息來拖取此信息,通過此類計算節點和/或相關部件將該信息推送至程序700 (例如定期地;在某些類型的事件時,諸如會使計算節點關閉或者說是變得不可用的檢測出的錯誤狀態;等),通過特定計算節點來監測網絡流量和/或單個資源使用率;等。
[0091]所述程序然后繼續至圖框710,以確定一個或多個所選計算節點組的聚合性能特性信息并且儲存該所確定的信息以供以后使用,例如用于所有計算節點組、恰好收集了單獨的計算節點信息的計算節點組、已請求或最近尚未產生的聚合性能特性信息的計算節點組、其中單獨的計算節點信息可用于計算節點組中的每個計算節點的計算節點組等。應當理解到,聚合性能特性信息可以各種方式產生,包括當僅部分信息可用于該組的計算節點時,諸如推斷或者說是估算不可用的單獨的性能特性信息。另外,收集和/或聚合的特定性能特性信息可以各種方式而有所不同,例如以在某些實施方案中始終收集所有計算節點組的某些類型的信息,以根據特定計算節點組的所確定觸發器的指定標準來收集某些類型的信息等。此外,雖然圖框705-785在該實例中被示為以連續的方式來實施,但應當理解到,在一些實施方案中,各圖框相反地可以其它方式來實施。例如,在一些實施方案中,圖框705的信息收集活動可在連續的基礎上或在接近連續的基礎上進行,但圖框710和/或其它圖框中的聚合信息產生僅可定期進行。
[0092]在圖框710之后,所述程序繼續至圖框715,以確定和儲存一個或多個計算節點組中的每個的當前實際程序執行能力信息,例如以反映當前可用的一組計算節點的當前數量和/或計算節點組的程序執行能力的一種或多種其它度量,并且儲存所確定的信息以供以后使用。雖然此處未示出,但在一些實施方案和情況中,所述程序還可立即更新計算節點組的相應的正式記錄的程序執行能力,以反映計算節點組的所確定的當前實際程序執行能力,而在其它實施方案中,該程序會等待直到相應的下一組協調活動時才更新正式記錄的程序執行能力。
[0093]在圖框720中,所述程序然后任選地確定對于任何計算節點組而言已被滿足的任何計算節點組的任何能力修改觸發器(例如,根據圖框705中收集的和/或圖框710中聚合的性能特性信息,和/或根據圖框715中確定的實際程序執行能力信息),但在其它實施方案中,此觸發器滿足情況確定相反地可在聚合時段結束時進行(諸如參考參照圖5更詳細地討論的相應協調活動)。如果任何觸發器經確定被滿足,則然后儲存關于此類被滿足的觸發器的信息以供以后使用。在一些實施方案和情況中,特定觸發器被滿足還可立即弓I發相關計算節點組的程序執行能力修改,并且如果如此,則可引發此程序執行能力修改活動,并且所述程序還可記錄將該被滿足的觸發器與所述程序執行能力修改活動關聯的因果關系信息,例如以供以后使用(參考圖6的程序600)。
[0094]以類似的方式,所述程序在圖框725中確定是否已引發任何計算節點組的任何計算節點以可用于計算節點組,但該初始化已失效或者說是未在指定時段(例如10分鐘)之內完成,如果是,所述程序的圖示實施方案開始立即提供任何此類計算節點的替代計算節點,并且所述程序還可記錄將該初始化計算節點不可用性作為所引發的替代活動的原因的因果關系信息。在其它實施方案中,此類替代活動相反地可能不以直接方式進行(例如,相反地可連同修改程序執行能力的其它請求一起聚合)和/或相反地可由圖4的程序400進行。另外,作為引發此類不可用計算節點的替代活動的一部分,所述程序還可采取動作以終止不可用計算節點(例如,如果該節點仍在運行但無響應)。
[0095]以類似的方式,所述程序在圖框730中任選地開始立即提供計算節點組中此前用作計算節點組的一部分但目前被確定為已失效或者說是變得不可用的任何計算節點的替代計算節點,并且如果如此,所述程序還可記錄將該計算節點不可用性作為所引發的替代活動的原因的因果關系信息。在其它實施方案中,此類替代活動相反地可能不以直接方式進行(例如,相反地可連同修改程序執行能力的其它請求一起聚合)和/或可由圖4的程序400進行,和/或可進行可自動引發特定計算節點組的程序執行能力的立即變化的其它類型的自動確定。另外,作為引發不可用計算節點的替代活動的一部分,所述程序還可采取動作以終止該不可用計算節點(例如,如果該節點仍在運行但無響應)。此外,如其它地方更詳細地討論,當確定是否要參照圖框725和/或730立即進行替代活動時,所述程序可在一些實施方案中考慮其它因素,諸如將向或已向相關用戶收取費用的時段、直至計劃進行可影響替代活動進行可取性的下一次協調活動之前的大量時間等。
[0096]在圖框730之后,所述程序繼續至圖框785,以任選地進行任何內務操作,包括視情況更新存儲信息。在圖框785之后,所述程序繼續至圖框795,以確定是否要繼續,例如直到接收到終止的明確指示時。如果確定要繼續,則所述程序返回至圖框705,否則,繼續至圖框799并且結束。雖然參照程序700所述的各種活動在該實施方案中被示為通過與執行程序400的模塊不同的模塊進行,但在其它實施方案中,這兩個程序的一些或所有功能可由單個模塊執行或者以其它方式組合。
[0097]應當理解到,在一些實施方案中,由上述程序提供的功能可以替代方式來提供,諸如分配在更多程序之間或合并于較少的程序中。類似地,在一些實施方案中,例如當其它圖示的程序相反地分別缺乏或包括此類功能時,或者當改變所提供的功能數量時,圖示的程序可提供與所述功能相比更多或更少的功能。另外,雖然各種操作可以被示為以特定的方式(例如串行或并行)和/或以特定的順序進行,但本領域的技術人員將意識到,在其它實施方案中,這些操作可以其它順序和以其它方式進行。本領域的技術人員還將意識到,上述數據結構可以不同的方式結構化,諸如通過使單個數據結構分成多個數據結構或者通過使多個數據結構合并為單個數據結構。類似地,在一些實施方案中,例如當其它圖示的數據結構相反地分別缺乏或包括此類信息時,或者當改變所儲存的信息數量或類型時,圖示的數據結構可儲存與所述信息相比更多或更少的信息。
[0098]第I條:一種用于程序執行服務的配置計算系統中以確定提供給用戶的程序執行能力的動態修改的因果律的方法,所述方法包括:
[0099]在所述程序執行服務的所述配置計算系統的控制下,所述程序執行服務提供可被配置來執行多個遠程用戶的程序以換取向所述用戶收取的費用的多個計算節點,并且針對多個所述用戶中的每個,
[0100]從以下用戶處接收信息,所述用戶指定用于執行所述用戶的指示程序的計算節點的初始所需數量并且指定用于隨后引發對供所述用戶使用的計算節點的數量的自動修改的多個數量修改觸發器,所述數量修改觸發器中的每個均包括用于確定所述數量修改觸發器是否被滿足的一個或多個標準,并且如果所述數量修改觸發器是被滿足的,則包括待請求的指定的計算節點數量變化;
[0101]向所述用戶自動確定用于執行所述用戶的所述指示程序的一組所述多個計算節點中的多個,所述多個計算節點具有初始所需計算節點數量,并且在第一時間提供所述多個計算節點以供所述用戶使用;
[0102]響應于來自所述用戶的指令,引發所述指示程序的復本在所述組計算節點中的每個上的執行;并且
[0103]在從所述第一時間至隨后的第二時間的一段時間期間,通過以下方式來自動管理所述組計算節點:
[0104]在所述時段期間,自動監測所述組計算節點以通過那些計算節點的操作來確定性能度量,并且根據所述確定的性能度量來自動確定由所述用戶指定的所述數量修改觸發器中的至少一個被滿足;
[0105]在所述時段期間,從所述用戶處接收各自指示所述組計算節點的數量變化的動態指定請求的一個或多個數量變化指令;
[0106]在所述第二時間自動確定實際計算節點數量,所述數量反映了在所述第二時間實際上可用以執行所述用戶的程序的所述組計算節點的數量,至少部分地根據所述時段期間的所述組計算節點的多個可用性變化,在所述第二時間確定的實際計算節點數量不同于所述第一時間處的計算節點的初始所需數量,所述多個可用性變化中的至少一些具有向所述用戶收取的一項或多項相關費用;
[0107]對于所述多個可用性變化的至少一個中的每個而言,將所述可用性變化的單個原因自動歸因,所述單個原因為經確定被滿足的所述至少一個數量修改觸發器之一或來自所述用戶的所述一個或多個數量變化指令之一;
[0108]對于單個原因未自動歸因的所述多個可用性變化中的至少另一個中的每個而言,所述至少另一個可用性變化不同于所述至少一個可用性變化,將多種可能原因的組合自動歸因于所述可用性變化,所述多種可能原因彼此獨立,并且包括經確定被滿足的所述至少一個數量修改觸發器中的一個或多個且包括來自所述用戶的所述一個或多個數量變化指令中的至少一個;以及
[0109]提供所述至少一個可用性變化中的每個的所歸因的單個原因的指示和所述至少另一個可用性變化中的每個的所歸因的多個原因組合的指示,以便能夠將所述至少一些可用性變化的相關費用歸于所述用戶。
[0110]第2條:根據第I條所述的方法,其中針對所述多個用戶之一,至少部分地根據所述一個用戶的所述組計算節點的數量的經請求的增加,在所述第二時間確定的實際計算節點數量大于所述第一時間處的初始所需計算節點數量,所述經請求的增加根據經確定被滿足的所述至少一個數量修改觸發器的一個或多個中的每個和來自所述一個用戶的所述一個或多個數量變化指令中的至少一個,其中自動確定所述一個用戶的所述第二時間處的實際計算節點數量包括通過聚合所述一個或多個被滿足的數量修改觸發器的經請求的增加和來自所述一個用戶的所述至少一個數量變化指令的經請求的增加來確定待做出以增加所述一個用戶的所述組的計算節點數量的單次聚合修改,其中增加所述一個用戶的所述組的計算節點數量的所述確定的單次聚合修改為所述一個用戶的所述組的所述至少另一個可用性變化中的一個,其中所述一個或多個被滿足的數量修改觸發器和來自所述一個用戶的所述至少一個數量變化指令均未被歸因為所述一個用戶的所述組的所述至少一個可用性變化中任何一個的單個原因,并且其中所述一個用戶的所述組的所述至少另一個可用性變化中的每個的多種可能原因的組合包括在所述時段期間針對所述一個用戶的所述計算節點組的可用性變化確定的并且未被歸因為所述至少一個可用性變化之一的單個原因的所有可能原因。
[0111]第3條:根據第2條所述的方法,其中所述程序執行服務為網絡訪問服務使得所述遠程用戶中的每個均通過一個或多個網絡來提供來自客戶計算設備的指令,其中具有所述相關費用的所述一個用戶的所述組的所述至少一些可用性變化包括所述一個用戶的所述組計算節點的數量的一次或多次增加,并且其中所述一個用戶為在所述第一時間提供由所述一個用戶使用的所述多個計算節點支付第一費用并且針對作為所述一個用戶的所述組的所述一次或多次數量增加的一部分來提供的每個附加計算節點支付一次或多次不同的第二費用。
[0112]第4條:一種用于確定提供給用戶的程序執行能力的動態修改的因果律的計算機實現方法,所述方法包括:
[0113]在被配置來提供由多個用戶使用的程序執行服務的一個或多個計算系統的控制下,所述程序執行服務具有可被配置來執行所述程序執行服務的所述用戶的程序的多個計算節點,
[0114]接收用于代表所述程序執行服務的第一用戶來執行一個或多個軟件程序的初始所需程序執行能力的指示;
[0115]確定用于隨后引發對提供給所述第一用戶的程序執行能力的自動修改的多個能力修改觸發器,所述能力修改觸發器中的每個均包括用于確定所述能力修改觸發器是否被滿足的一個或多個標準,并且如果所述能力修改觸發器是被滿足的,則包括待請求的指定類型的程序執行能力修改;
[0116]自動確定用于提供所述第一用戶的所述初始所需程序執行能力的第一組所述多個計算節點中的多個,并且使所述第一組的計算節點在第一時間可用以各自執行所述第一用戶的一個或多個軟件程序;
[0117]自動識別發生在所述第一時間和隨后的第二時間之間的一段時間期間并且各自能夠引起對所述第一組的多個計算節點提供的所述程序執行能力的修改的多個獨立事件,所述多個事件包括經確定被滿足的所述指定的能力修改觸發器中的至少一個;
[0118]在所述第二時間自動確定所述第一用戶可從所述第一組計算節點中獲得的實際程序執行能力,至少部分地根據發生在所述第一時間和所述第二時間之間的時段期間的所述第一組的一個或多個計算節點的一個或多個可用性變化,所述第二時間處的實際程序執行能力不同于在所述第一時間提供給所述第一用戶的所需程序執行能力;
[0119]對于所述第一組的所述一個或多個計算節點的所述可用性變化中的每個而言,將所識別事件中的一個或多個自動歸因為所述可用性變化的原因,所述可用性變化中的至少一個具有原因,所述原因為彼此獨立并且包括經確定被滿足的所述至少一個指定的能力修改觸發器中的一個或多個的多個事件的組合;并且
[0120]提供一個或多個所述可用性變化中的每個的所述歸因的原因的指示,以便能夠進行與所述歸因的原因相對應的一個或多個進一步動作。
[0121]第5條:根據第4條所述的方法,其中所述多個事件還包括由所述第一用戶動態指定以請求對所述第一組提供的所述程序執行能力的指定修改的至少一個能力修改指令,并且其中被歸因為所述至少一個可用性變化之一的原因的多個事件的組合包括所述至少一個指定的能力修改指令中的一個或多個。
[0122]第6條:根據第4條所述的方法,其中所述可用性變化中的至少另一個具有為所述多個事件中的單個事件的所歸因的原因,所述至少另一個可用性變化不同于所述至少一個可用性變化。
[0123]第7條:根據第6條所述的方法,還包括:自動確定所述單個事件為所述至少另一個可用性變化的所確定類型的原因,所述所確定類型的原因為直接原因或間接原因,并且提供所述單個事件為所述至少另一個可用性變化的所述所確定類型的原因的指示。
[0124]第8條:根據第4條所述的方法,其中自動確定所述實際程序執行能力包括確定已發生的多個可用性變化,并且其中將所述一個或多個事件自動歸因為所述可用性變化中的每個的原因包括識別各自為所述多個可用性變化之一的單個原因的一個或多個所述多個事件,并且將不為所述多個可用性變化之一的單個原因的所有所述多個事件聚合為不具有單個原因的所述多個可用性變化彼此的組合的一部分。
[0125]第9條:根據第4條所述的方法,其中對于所述至少一個可用性變化之一而言,將所述多個事件的組合自動歸因為所述一個可用性變化的原因包括確定所述多個事件的組合為所述一個可用性變化的所確定類型的原因,所述所確定類型的原因為直接原因或間接原因,并且其中提供所述一個或多個可用性變化中的每個的所述歸因的原因的所述指示包括提供所述多個事件的組合為所述一個可用性變化的所述所確定類型的原因的指示。
[0126]第10條:根據第4條所述的方法,其中所述多個獨立事件各自請求對所述第一組提供的所述程序執行能力的修改,并且其中所述方法還包括:通過聚合所述多個事件的經請求的修改并且在所述第二時間之前引發對所述第一組的所述確定的單次聚合修改來自動確定將對所述第一組的程序執行能力做出的單次聚合修改。
[0127]第11條:根據第10條所述的方法,其中所述多個事件還包括由所述第一用戶動態指定以請求對所述第一組提供的所述程序執行能力的指定修改的至少一個能力修改指令,其中所述確定的多個能力修改觸發器由所述第一用戶在所述第一時間之前指定,并且其中被歸因為所述至少一個可用性變化之一的原因的多個事件的組合包括所述至少一個指定的能力修改指令中的一個或多個。
[0128]第12條:根據第11條所述的方法,其中所述確定的單次聚合修改為所述一個可用性變化,其所述一個或多個指定的能力修改指令包括在被歸因為所述原因的組合中。
[0129]第13條:根據第10條所述的方法,其中所述第一組的程序執行能力根據為所述第一組的一部分的計算節點的數量來測量,使得所述初始所需程序執行能力為計算節點的初始所需數量,并且使得在所述第二時間確定的實際程序執行能力為在所述第二時間可用作所述第一組的一部分的計算節點的實際數量,其中所述第一組的所述一個或多個計算節點的所述一個或多個可用性變化各自包括為所述第一組中不可用部分的一個或多個計算節點中的至少一個和添加至所述第一組的一個或多個新計算節點中的至少一個,并且其中對所述第一組的所述確定的單次聚合修改為所述第一組計算節點的數量的所確定的變化。
[0130]第14條:根據第13條所述的方法,其中所述確定的單次聚合修改將通過指定數量的一個或多個計算節點來增加所述第一組計算節點的數量,其中所述確定的單次聚合修改為提供有所述歸因的原因的所述指示的所述一個或多個可用性變化中的一個,并且其中所述方法還包括至少部分地根據所述引發的所確定的單次聚合修改進行一個或多個進一步動作,所述動作包括開始向所述第一用戶收取一項或多項費用。
[0131]第15條:根據第4條所述的方法,其中提供有所述歸因的原因的所述指示的所述一個或多個可用性變化中的一個包括作為所述一個可用性變化的原因的至少一部分的所述多個事件中的至少第一個,并且其中響應于所述事件中的至少一個引起所述一個可用性變化和所述可用性變化中的至少一個由所述第一事件引起的請求來提供所述一個可用性變化的所述歸因的原因的所述指示。
[0132]第16條:根據第15所述的方法,其中從用戶處接收所述請求,并且其中提供所述一個可用性變化的所述歸因的原因的所述指示包括產生所述一個可用性變化的所述歸因的原因的人可讀的解釋并且提供所述產生的人可讀的解釋以顯示給所述用戶。
[0133]第17條:根據第4條所述的方法,還包括:對于發生在所述第二時間之后的一個或多個附加時段中的每個而言,將一個或多個附加所識別事件自動歸因為發生在所述附加時段期間的可用性變化的原因,并且其中,對于作為發生在所述一個或多個附加時段中的一個時段期間的所述可用性變化中的一個變化的原因的一個所述附加所識別事件而言,所述一個附加所識別事件為發生在所述第一時間和所述第二時間之間的時段期間的所述可用性變化中的一個變化的結果。
[0134]第18條:根據第4條所述的方法,其中使所述第一組計算節點在所述第一時間可用以各自執行所述第一用戶的所述一個或多個軟件程序包括自動提供所述第一組計算節點中的每個,并且包括自動引發所述一個或多個軟件程序中的每個在所述第一組計算節點中的每個上的執行。
[0135]第19條:根據第4條所述的方法,其中所述程序執行服務為遠離所述第一用戶的收費性網絡訪問服務,其中所述程序執行服務提供以下兩者中的至少一者:用于遠程計算系統中以通過一個或多個網絡以編程方式與所述程序執行服務進行交互的一個或多個應用程序編程接口(API)和遠程用戶通過所述一個或多個網絡來使用的圖形用戶界面,并且其中所述第一用戶至少部分地根據一個或多個所述可用性變化的所述歸因的原因來支付一項或多項費用。
[0136]第20條:根據第4條所述的方法,其中所述程序執行服務采用虛擬化技術使得所述多個計算節點對于多個物理計算系統中的每個而言包括由所述物理計算系統提供的各自能夠執行至少一個程序的多個虛擬機,其中所述第一組計算節點為裝載虛擬機,并且其中所述第一用戶的所述一個或多個程序為虛擬機映像的一部分。
[0137]第21條:一種計算機可讀介質,其內容通過實施一種方法來配置計算系統以確定提供給用戶的程序執行能力的動態修改的因果律,所述方法包括:
[0138]在所述配置計算系統的控制下,在第一時間接收與第一用戶相關的第一組多個計算節點的指示,以提供用于代表所述第一用戶來執行一個或多個軟件程序的初始程序執行能力;
[0139]自動識別發生在所述第一時間和隨后的第二時間之間并且各自具有所述第一組的程序執行能力的相關所需修改的多個獨立事件;
[0140]在所述第二時間自動確定所述第一用戶可從所述第一組計算節點中獲得的實際程序執行能力,至少部分地根據所述第一組的一個或多個計算節點的一個或多個可用性變化,所述第二時間處的實際程序執行能力不同于在所述第一時間提供的初始程序執行能力;
[0141]將一個或多個原因自動歸因于所述第一組的所述確定的可用性變化中的每個,歸因于所述可用性變化中的至少一個的所述一個或多個原因為多個所述所識別的獨立事件的組合;以及
[0142]提供所述至少一個可用性變化中一個或多個的所述所歸因的一個或多個原因的指示。
[0143]第22條:根據第21條所述的計算機可讀介質,其中所述配置計算系統為提供多個計算節點的程序執行服務的一部分,所述多個計算節點可被配置來執行所述程序執行服務的用戶的程序,其中所述第一組的多個計算節點為所述多個計算節點的子集,其中接收所述第一組的指示包括在所述第一時間之前從所述第一用戶處接收所述初始程序執行能力的請求,并且在所述第一時間將所述第一組計算節點與所述第一用戶自動關聯以用于將所述初始程序執行能力提供給所述第一用戶,其中所述第一用戶在所述第一時間之前還指示一個或多個能力修改觸發以用于隨后引發對所述第一組的程序執行能力的自動修改,并且其中所述多個獨立事件包括經確定被滿足的所述能力修改觸發器中的至少一個且包括由所述第一用戶動態指定的至少一個能力修改指令。
[0144]第23條:根據第22條所述的計算機可讀介質,其中每個所述多個獨立事件的所述程序執行能力的所述所需修改為經請求的修改,其中所述方法還包括通過聚合至少一個被滿足的能力修改觸發器的經請求的修改和來自所述第一用戶的所述至少一個能力修改指令的經請求的修改來自動確定待做出以提高所述第一組的程序執行能力的單次聚合修改,并且在所述第二時間之前引發所述確定的單次聚合修改,其中所述確定的單次聚合修改為所述至少一個可用性變化之一,并且其中被歸因為所述確定的單次聚合修改的所述一個或多個原因的所述多個獨立事件的組合包括所述至少一個被滿足的能力修改觸發器和來自所述第一用戶的至少一個能力修改指令。
[0145]第24條:根據第21條所述的計算機可讀介質,其中所述計算機可讀介質為以下兩者中的至少一者:儲存所述內容的計算系統的存儲器和包括包含所述內容的所產生的存儲數據信號的數據傳輸介質,并且其中所述內容為在執行時會使所述計算系統實施所述方法的指令。
[0146]第25條:一種被配置來確定用戶的程序執行能力的動態修改的因果律的計算系統,包括:
[0147]一個或多個處理器;和
[0148]系統管理器模塊,在由所述一個或多個處理器中的至少一個執行時,針對所述多個用戶中的每個,其被配置來通過以下方式管理網絡訪問服務的多個用戶的程序執行能力:
[0149]確定待提供用于代表所述用戶來執行一個或多個軟件程序的初始程序執行能力,并且確定用于隨后引發對向所述用戶提供的所述程序執行能力的自動修改的一個或多個能力修改觸發器;
[0150]在第一時間將一組多個可用計算節點與所述用戶自動關聯,以用于將所述初始所需程序執行能力提供給所述用戶;以及
[0151]在所述第一時間之后,自動識別發生在所述第一時間和隨后的第二時間之間并且各自具有所述組的所述程序執行能力的相關所需修改的多個獨立事件,所述多個事件包括經確定被滿足的所述能力修改觸發器中的至少一個;
[0152]自動確定所述組的一個或多個計算節點的一個或多個可用性變化,所述可用性變化影響由所述組提供的所述程序執行能力;
[0153]將一個或多個原因自動歸因于所述組的所述確定的可用性變化中的每個,歸因于所述可用性變化中的至少一個的所述一個或多個原因為多個所述所識別的獨立事件的組合,并且歸因于所述可用性變化中的至少另一個的所述一個或多個原因為所述所識別的獨立事件中的單個事件;并且提供所述組的所述確定的可用性變化中的一個或多個的所述所歸因的一個或多個原因的指示。
[0154]第26條:根據第25條所述的計算系統,其中所述多個用戶之一的所述多個獨立事件還包括由所述一個用戶動態指定的至少一個能力修改指令,其中所述系統管理器模塊還被配置來通過聚合所述至少一個被滿足的能力修改觸發器的所需修改和由所述一個用戶指定的所述至少一個能力修改指令的所需修改以自動確定待做出以提高所述一個用戶的所述組的所述程序執行能力的單次聚合修改,并且在所述第二時間之前引發對所述一個用戶的所述組的所述確定的單次聚合修改,其中所述確定的單次聚合修改為所述一個用戶的所述至少一個可用性變化之一,并且其中被歸因為所述確定的單次聚合修改的所述一個或多個原因的所述多個獨立事件的組合包括所述至少一個被滿足的能力修改觸發器和由所述一個用戶指定的所述至少一個能力修改指令。
[0155]第27條:根據第26條所述的計算系統,其中所述一個用戶的所述確定的能力修改觸發器由所述一個用戶指定,其中所述網絡訪問服務為提供多個計算節點的程序執行服務,所述多個計算節點可被配置來執行所述程序執行服務的遠程用戶的程序,并且其中所述多個用戶中的至少一個的每個的所述組的所述多個計算節點為所述多個計算節點的子集。
[0156]第28條:根據第25條所述的計算系統,其中所述系統管理器組件包括由所述計算系統執行的軟件指令。
[0157]第29條:根據第25條所述的計算系統,其中針對所述多個用戶中的每個,所述系統管理器組件由用于通過以下方式來管理所述網絡訪問服務的多個用戶的程序執行能力的裝置組成:
[0158]確定待提供用于代表所述用戶來執行一個或多個軟件程序的初始程序執行能力,并且確定用于隨后引發對向所述用戶提供的所述程序執行能力的自動修改的一個或多個能力修改觸發器;
[0159]在第一時間將一組多個可用計算節點與所述用戶自動關聯,以用于將所述初始所需程序執行能力提供給所述用戶;以及
[0160]在所述第一時間之后,自動識別發生在所述第一時間和隨后的第二時間之間并且各自具有所述組的所述程序執行能力的相關所需修改的多個獨立事件,所述多個事件包括經確定被滿足的所述能力修改觸發器中的至少一個;
[0161]自動確定所述組的一個或多個計算節點的一個或多個可用性變化,所述可用性變化影響由所述組提供的所述程序執行能力;
[0162]將一個或多個原因自動歸因于所述組的所述確定的可用性變化中的每個,歸因于所述可用性變化中的至少一個的所述一個或多個原因為多個所述所識別的獨立事件的組合,并且歸因于所述可用性變化中的至少另一個的所述一個或多個原因為所述所識別的獨立事件中的單個事件;并且提供所述組的所述確定的可用性變化中的一個或多個的所述所歸因的一個或多個原因的指示。
[0163]第30條:一種用于程序執行服務的配置計算系統中以動態修改用戶的程序執行能力的方法,所述方法包括:
[0164]在所述程序執行服務的所述配置計算系統的控制下,所述程序執行服務提供可被配置來執行多個遠程用戶的程序的多個計算節點,并且針對多個所述用戶中的每個,
[0165]從以下用戶處接收信息,所述用戶指定用于執行所述用戶的指示程序的計算節點的初始所需數量并且指定用于隨后引發對所述所需計算節點數量的自動修改的一個或多個數量修改觸發器,所述數量修改觸發器中的每個均包括用于確定所述數量修改觸發器是否被滿足的一個或多個標準,并且如果所述數量修改觸發器是被滿足的,則包括指定的計算節點數量變化;
[0166]自動確定用于執行所述用戶的所述指示程序的一組所述多個計算節點中的多個,所述組的所述多個計算節點具有所述初始所需計算節點數量,并且在第一時間提供所述多個計算節點以供所述用戶使用;
[0167]響應于來自所述用戶的一個或多個指令,引發所述指示程序的復本在所述組計算節點中的每個上的執行,并且將所述初始所需計算節點數量指定為被記錄為所述用戶在所述第一時間可使用的正式的計算節點數量;以及
[0168]在從所述第一時間至隨后的第二時間的一段時間期間,通過以下方式來自動管理所述組計算節點:
[0169]在所述時段期間,自動監測所述組計算節點以通過所述計算節點的操作來確定性能特性,并且根據所述確定的性能特性來自動確定由所述用戶指定的所述數量修改觸發器中的至少一個被滿足;
[0170]在所述時段期間,接收指示由所述用戶動態指定的所述組計算節點的用戶指示的計算節點數量變化的至少一個指令;
[0171]在所述第二時間自動確定經修改的所需計算節點數量,至少部分地根據來自所述至少一個被滿足的數量修改觸發器的所述指定的計算節點數量變化以及所述用戶指示的計算節點數量變化,所述經修改的所需計算節點數量包括自所述第一時間對所述所需計算節點數量的變化;
[0172]在所述第二時間自動確定實際計算節點數量,所述數量反映了在所述第二時間實際上可用以執行所述用戶的程序的所述組計算節點的數量;
[0173]在所述第二時間,將所述用戶的所述正式的計算節點數量與所述經修改的所需計算節點數量自動協調,所述協調包括通過采取動作來自動修改作為所述組的一部分的所述計算節點的數量,以將所述確定的實際計算節點數量改變為所述經修改的所需計算節點數量;以及
[0174]提供所述組計算節點的所述經修改的數量以供所述用戶使用,并且將所述經修改的所需計算節點數量指定為所述用戶在所述第二時間可使用的正式的計算節點數量。
[0175]第31條:根據第30條所述的方法,其中針對所述多個用戶之一,至少部分地根據在從所述第一時間至所述第二時間的時段期間的變得不可用的所述一個用戶的所述組計算節點中的一個或多個,在所述第二時間確定的實際計算節點數量小于所述第一時間處的正式的計算節點數量,其中在所述時段期間自動監測所述一個用戶的所述組計算節點包括反復確定所述一個用戶的當前的實際計算節點數量,并且更新所述一個用戶的所述正式的計算節點數量以使所述更新的正式的計算節點數量與所述確定的當前的實際計算節點數量一致,其中所述一個用戶的所述至少一個被滿足的數量修改觸發器為以下觸發器,其指定以根據所述一個或多個不可用計算節點的數量來增加所述一個用戶的所述組計算節點,以便將所述第二時間處的正式的計算節點數量保持在由所述一個用戶指定的計算節點的初始所需數量,其中由所述一個用戶動態指定的所述用戶指示的數量變化包括至少一個計算節點的計算節點初始所需數量的指示的減少量,其中在所述第二時間自動確定所述一個用戶的所述經修改的所需計算節點數量包括用所述一個或多個不可用計算節點來至少部分地抵消所述指示的減少量,并且其中所述一個用戶在所述第二時間可使用的正式的計算節點數量為由所述一個用戶指定的計算節點初始所需數量減去由所述一個用戶指定的所述指示的減少量。
[0176]第32條:根據第31條所述的方法,其中所述程序執行服務為收費性網絡訪問服務,使得所述多個用戶各自為在所述第一時間提供由所述用戶使用的所述多個計算節點支付第一費用,并且各自為在所述第二時間提供由所述用戶使用的所述組計算節點的經修改的數量支付不同的第二費用,所述第一和第二費用各自至少部分地基于所述用戶的所述組計算節點的當前數量。
[0177]第33條:一種用于動態修改用戶的程序執行能力的計算機實現方法,所述方法包括:
[0178]在被配置來提供由多個用戶使用的程序執行服務的一個或多個計算系統的控制下,所述程序執行服務具有可被配置來執行所述程序執行服務的所述用戶的程序的多個計算節點,
[0179]接收指定用于代表所述程序執行服務的第一用戶來執行一個或多個軟件程序的初始所需程序執行能力并且指定用于隨后引發對所述所需程序執行能力的自動修改的一個或多個能力修改觸發器的信息,所述能力修改觸發器中的每個均包括用于確定所述能力修改觸發器是否被滿足的一個或多個標準,并且如果所述能力修改觸發器是被滿足的,則包括待請求的對所需程序執行能力的指定類型的修改;
[0180]自動確定用于提供所述第一用戶的所述初始所需程序執行能力的第一組所述多個計算節點中的多個,使所述第一組計算節點在第一時間可用以各自執行所述第一用戶的一個或多個軟件程序,并且將所述初始所需程序執行能力指定為被記錄為所述第一用戶在所述第一時間可使用的正式程序執行能力。
[0181]在所述第一時間之后,監測所述第一組計算節點以確定關于執行所述一個或多個軟件程序的那些計算節點的一種或多種類型的性能特性的當前值,所述監測包括在所述第一時間之后的隨后的第二時間確定所述第一用戶可從所述第一組計算節點中獲得的實際程序執行能力;
[0182]自動確定以根據發生在所述第一時間和所述第二時間之間的一段時間期間的多個事件來修改所述第一用戶的所述所需程序執行能力,所述多個事件至少部分地根據所述一種或多種性能特性類型的所述確定的當前值包括經確定被滿足的所述指定的能力修改觸發器中的至少一個,并且包括由所述第一用戶動態指定的至少一個能力修改指令,所述至少一個指定的能力修改觸發器和所述至少一個能力修改指令中的每個指示對所述所需程序執行能力的指定修改;以及
[0183]將所述第一用戶可用的所述記錄的正式程序執行能力與在所述第二時間確定的實際程序執行能力和所述經修改的所需程序執行能力自動協調,協調所述記錄的正式程序執行能力包括根據所述確定的實際程序執行能力和所述經修改的所需程序執行能力來自動修改作為所述第一組的一部分的計算節點,使得所述經修改的計算節點可用于提供所述經修改的所需程序執行能力,并且使得所述記錄的正式程序執行能力被更新以反映所述提供的經修改的所需程序執行能力。
[0184]第34條:根據第33條所述的方法,其中所述第一組的程序執行能力根據作為所述第一組的一部分的計算節點的數量來測量,使得所述初始所需程序執行能力為計算節點的初始所需數量,在所述第二時間確定的實際程序執行能力為在所述第二時間可用作所述第一組的一部分的計算節點的實際數量,修改所述所需程序執行能力的自動確定包括將所述經修改的所需程序執行能力確定為所述第一組計算節點的經修改的所需數量,并且自動修改作為所述第一組的一部分的計算節點包括將作為所述第一組的一部分的計算節點的實際數量改變為所述經修改的所需數量。
[0185]第35條:根據第34條所述的方法,其中對所述至少一個指定的能力修改觸發器和所述至少一個能力修改指令中的每個的所述所需程序執行能力的指定修改反映了所述第一組計算節點的所需數量的指示的數量變化,并且其中確定所述第一組的所述經修改的所需程序執行能力包括聚合所述至少一個指定的能力修改觸發器和所述至少一個能力修改指令的所述指示的數量變化,并且根據所述聚合數量變化來修改計算節點的初始所需數量。
[0186]第36條:根據第34條所述的方法,其中當前值通過所述監測確定的所述第一組計算節點的所述一種或多種類型的性能特性包括可用作所述第一組的一部分的計算節點的實際數量,其中所述監測包括在所述第一和第二時間之間的時段期間的多個時間中的每個時間確定計算節點的當前實際數量,并且其中協調所述記錄的正式程序執行能力還包括將所述第一組計算節點的所述經修改的所需數量指定為所述第一用戶在所述第二時間可使用的當前正式程序執行能力。
[0187]第37條:根據第33條所述的方法,其中所述第一組的程序執行能力根據可從作為所述第一組的一部分的計算節點中獲得的多種類型的計算資源中的每一種來測量,并且其中自動修改作為所述第一組的一部分的計算節點包括改變所述多種類型的計算資源中至少一種的總量,所述計算資源在所述計算節點的自動修改之后可從作為所述第一組的一部分的計算節點中獲得。
[0188]第38條:根據第33條所述的方法,其中所述至少一個指定的能力修改觸發器中的每個的一個或多個標準基于所述一種或多種性能特性類型中至少一種的一個或多個給定值,并且其中所述方法還包括至少部分地根據所述至少一個指定的能力修改觸發器中的每個的一個或多個給定值與所述一種或多種性能特性類型的確定的當前值之間的匹配情況來自動確定所述至少一個指定的能力修改觸發器被滿足。
[0189]第39條:根據第38條所述的方法,其中所述至少一種性能特性類型對應于所述第一組計算節點上的計算負荷,其中所述至少一個指定的能力修改觸發器被滿足的確定基于所述第一組計算節點上處于暫時增加狀態的計算負荷,其中自動修改作為所述第一組的一部分的計算節點包括暫時增加可從所述第一組計算節點中獲得的實際程序執行能力以便容納所述暫時增加狀態的計算負荷,并且其中所述方法還包括在所述實際程序執行能力的暫時增加之后的隨后的第三時間自動確定以降低所述第一組計算節點的暫時增加的實際程序執行能力,從而反映所述計算負荷的暫時增加狀態的結束。
[0190]第40條:根據第38條所述的方法,其中所述至少一個性能特性類型包括可用作所述第一組的一部分的計算節點的實際數量,其中所述至少一個指定的能力修改觸發器被滿足的確定基于所述第一組計算節點的實際數量,所述實際數量已偏離計算節點的指定所需量,并且其中自動修改作為所述第一組的一部分的計算節點包括所述第一組計算節點的已偏離的實際數量返回至計算節點的指定所需量。
[0191]第41條:根據第38條所述的方法,其中所述至少一個指定的能力修改觸發器之一的一個或多個標準基于以下中的一個或多個:指示性能特性類型的確定的當前值的閾值、指示性能特性類型的確定的當前值隨時間變化的度量和多種性能特性類型的確定的當前值的邏輯組合。
[0192]第42條:根據第33條所述的方法,其中所述多個事件還包括其中一個或多個標準基于一個或多個指定時間的被觸發的指定的能力修改觸發器之一,并且其中所述方法還包括至少部分地根據符合所述一個或多個指定時間的當前時間來自動確定所述一個指定的能力修改觸發器被滿足。
[0193]第43條:根據第33條所述的方法,其中所述多個事件還包括其中一個或多個標準基于由歷史數據確定的一種或多種模式的被觸發的指定的能力修改觸發器之一,并且其中所述方法還包括至少部分地根據與所述一種或多種模式中的至少一個相對應的一種或多種性能特性類型的確定的當前值來自動確定所述一個指定的能力修改觸發器被滿足。
[0194]第44條:根據第33條所述的方法,其中所述多個事件還包括其中一個或多個標準基于將由在所述第一組計算節點上執行的所述一個或多個軟件程序完成的工作量的一個或多個指示的被觸發的指定的能力修改觸發器之一,并且其中所述方法還包括至少部分地根據所獲得的關于將由所述一個或多個軟件程序完成的實際工作量的信息來自動確定所述一個指定的能力修改觸發器被滿足。
[0195]第45條:根據第33條所述的方法,其中確定所述第一組的所述經修改的所需程序執行能力包括聚合對所述所需程序執行能力的指示的修改,所述修改由所述至少一個指定的能力修改觸發器和所述至少一個能力修改指令中的每個指定,并且根據對所述所需程序執行能力的聚合的指示修改來指定所述確定的經修改的所需程序執行能力。
[0196]第46條:根據第45條所述的方法,其中聚合對所述所需程序執行能力的指示修改包括以下中的至少一個:累積所述指示修改、用所述指示修改中的至少另一個修改來抵消所述指示修改中的至少一個、根據一個或多個選擇標準選擇所述指示修改中的一個并且采用與所述指示修改中的一個或多個相關的一個或多個優先級。
[0197]第47條:根據第33條所述的方法,其中由所述第一用戶動態指定并且包括在所述多個事件中的至少一個能力修改指令包括由所述第一用戶指定的單個能力修改指令,其中由所述第一用戶指定的能力修改指令優先于經確定被滿足的指定的能力修改觸發器,并且其中確定所述第一組的所述經修改的所需程序執行能力包括選擇由所述單個能力修改指令指定的對所述所需程序執行能力的指示修改以用于代替所述至少一個指定的能力修改觸發器的指示修改。
[0198]第48條:根據第33條所述的方法,還包括所述第一用戶接收多個不同地理位置的說明,根據位于所述地理位置的所述第一組計算節點中的一個或多個,所述地理位置各自需包括所述第一組計算節點的程序執行能力的指示子集,并且其中自動修改作為所述第一組的一部分的計算節點還根據所述接收的說明來進行,使得所述經修改的計算節點被修改以包括位于所述多個地理位置中每個位置處的第一組計算節點的程序執行能力的指示子集。
[0199]第49條:根據第33條所述的方法,其中自動修改作為所述第一組的一部分的計算節點包括用一個或多個其它計算節點來代替所述第一組計算節點中的一個或多個,所述一個或多個其它計算節點各自具有與所述一個或多個替代的計算節點不同的量的可用程序執行能力。
[0200]第50條:根據第33條所述的方法,其中使所述第一組計算節點在所述第一時間可用以各自執行所述第一用戶的所述一個或多個軟件程序包括自動提供所述第一組計算節點中的每個,并且包括自動引發所述一個或多個軟件程序中的每個在所述第一組計算節點中的每個上的執行。
[0201 ] 第51條:根據第33條所述的方法,其中所述程序執行服務為遠離所述第一用戶的收費性網絡訪問服務,其中所述程序執行服務提供以下兩者中的至少一者:用于遠程計算系統中以通過一個或多個網絡以編程方式與所述程序執行服務進行交互的一個或多個應用程序編程接口(API)和遠程用戶通過所述一個或多個網絡來使用的圖形用戶界面,并且其中作為所述自動協調的一部分,所述第一用戶為自動修改作為所述第一組的一部分的計算節點支付一項或多項費用。
[0202]第52條:根據第33條所述的方法,其中所述程序執行服務采用虛擬化技術使得所述多個計算節點對于多個物理計算系統中的每個而言包括由所述物理計算系統提供的各自能夠執行至少一個程序的多個虛擬機,其中所述第一組計算節點為裝載虛擬機,并且其中所述第一用戶的所述一個或多個程序為虛擬機映像的一部分。
[0203]第53條:一種計算機可讀介質,其內容通過實施一種方法來配置計算系統以動態修改用戶的程序執行能力,所述方法包括:
[0204]在所述配置計算系統的控制下,在第一時間接收與第一用戶相關的第一組多個計算節點的指示,以提供用于代表所述第一用戶來執行一個或多個軟件程序的所需程序執行能力;
[0205]在所述第一時間之后的隨后的第二時間自動確定所述第一用戶可從所述第一組計算節點中獲得的實際程序執行能力,至少部分地根據所述第一組的多個計算節點中的一個或多個的一個或多個可用性變化,所述第二時間處的實際程序執行能力不同于在所述第一時間提供給所述第一用戶的所需程序執行能力;
[0206]根據各自發生在所述第一時間之后并且各自指定所述所需程序執行能力的指示修改的多個獨立事件,在所述第二時間自動確定提供給所述第一用戶的經修改的所需程序執行能力,所述第二時間處的經修改的所需程序執行能力基于對所述多個獨立事件的指定的指示修改的聚合并且不同于在所述第一時間提供的指示的所需程序執行能力;以及
[0207]在所述第二時間自動修改作為所述第一組的一部分的計算節點,以便將所述第二時間處的經修改的所需程序執行能力與所述第二時間處的確定的實際程序執行能力協調,所述經修改的計算節點用于將所述經修改的所需程序執行能力提供給所述第一用戶。
[0208]第54條:根據第53條所述的計算機可讀介質,其中所述配置計算系統為提供多個計算節點的程序執行服務的一部分,所述多個計算節點可被配置來執行所述程序執行服務的用戶的程序,其中所述第一組的多個計算節點為所述多個計算節點的子集,并且響應于在所述第一時間之前從所述第一用戶處接收的所述所需程序執行能力的請求,通過所述程序執行服務在所述第一時間與所述第一用戶自動相關,其中所述第一用戶還指示用于隨后引發對所述所需程序執行能力的自動修改的一個或多個能力修改觸發器,并且其中所述確定的經修改的所需程序執行能力基于其的多個獨立事件包括經確定被滿足的所述能力修改觸發器中的至少一個并且包括由所述第一用戶動態指定的至少一個能力修改指令。
[0209]第55條:根據第54條所述的計算機可讀介質,其中所述一個或多個軟件程序在所述第一組的多個計算節點上執行,以支持在并非所述第一組的一部分的至少一個計算系統上執行的至少另一個軟件程序,并且其中經確定被滿足的所述至少一個能力修改觸發器中的一個或多個各自具有基于所獲得的關于所述至少另一個軟件程序的執行的狀態信息的一個或多個標準。
[0210]第56條:根據第54條所述的計算機可讀介質,其中所述程序執行服務將在所述第一時間提供給所述第一用戶的指示的所需程序執行能力記錄為所述第一用戶可在所述第一時間使用的初始正式程序執行能力,其中所述方法還包括:從所述第一時間至所述第二時間的一段時間期間監測所述第一組計算節點以識別對所述第一組的一個或多個計算節點的一個或多個可用性變化,并且更新所述第一用戶可用的所述程序執行服務的記錄的正式程序執行能力以便反映所述一個或多個可用性變化,其中所述第一用戶可用的所述程序執行服務的記錄的正式程序執行能力未通過在所述第二時間自動確定所述經修改的所需程序執行能力進行更新,并且其中還在所述第二時間進行修改作為所述第一組的一部分的計算節點以便將所述第二時間處的記錄的正式程序執行能力與所述第二時間處的經修改的所需程序執行能力協調,協調所述記錄的正式程序執行能力包括將所述第二時間處的經修改的所需程序執行能力確定為所述第一用戶可用的所述程序執行服務的進一步更新的記錄的正式程序執行能力。
[0211]第57條:根據第53條所述的計算機可讀介質,其中所述計算機可讀介質為以下兩者中的至少一者:儲存所述內容的計算系統的存儲器和包括包含所述內容的所產生的存儲數據信號的數據傳輸介質,并且其中所述內容為在執行時會使所述計算系統實施所述方法的指令。
[0212]第58條:一種被配置來動態修改用戶的程序執行能力的計算系統,包括:
[0213]一個或多個處理器;和
[0214]系統管理器模塊,在由所述一個或多個處理器中的至少一個執行時,針對所述多個用戶中的每個,其被配置來通過以下方式管理網絡訪問服務的多個用戶的程序執行能力:
[0215]確定用于代表所述用戶來執行一個或多個軟件程序的所需程序執行能力,并且確定用于隨后引發對所述用戶的所述所需程序執行能力的自動修改的一個或多個能力修改觸發器;
[0216]在第一時間將一組多個可用計算節點與所述用戶自動關聯,以用于將所述確定的所需程序執行能力提供給所述用戶;以及
[0217]在所述第一時間之后,在所述第一時間之后的隨后的第二時間自動確定所述用戶可從所述組計算節點中獲得的實際程序執行能力,所述第二時間處的實際程序執行能力不同于在所述第一時間提供給所述用戶的所需程序執行能力;
[0218]根據各自發生在所述第一時間之后并且各自具有所述所需程序執行能力的相關修改的多個獨立事件,在所述第二時間自動確定提供給所述用戶的經修改的所需程序執行能力,所述多個獨立事件包括經確定被滿足的所述能力修改觸發器中的至少一個并且包括由所述用戶動態指定的至少一個能力修改指令,所述第二時間處的經修改的所需程序執行能力基于對所述多個獨立事件的相關修改的聚合;以及
[0219]在所述第二時間自動修改作為所述組的一部分的計算節點,以便將所述第二時間處的經修改的所需程序執行能力與所述第二時間處的確定的實際程序執行能力協調,所述經修改的計算節點用于將所述經修改的所需程序執行能力提供給所述用戶。
[0220]第59條:根據第58條所述的計算系統,其中所述多個用戶之一的確定的所需程序執行能力由所述一個用戶指示并且被確定為經記錄為所述一個用戶在所述第一時間可使用的初始正式程序執行能力,其中自動確定所述一個用戶在所述第二時間可使用的實際程序執行能力至少部分地基于在從所述第一時間至所述第二時間的一段時間期間監測所述一個用戶的所述組計算節點來進行以便識別一個或多個變化,監測所述計算節點包括更新所述一個用戶可用的記錄的正式程序執行能力以反映所述一個或多個變化,其中所述一個用戶可用的記錄的正式程序執行能力未通過自動確定所述第二時間處的經修改的所需程序執行能力進行更新,并且其中還在所述第二時間修改作為所述組的一部分的計算節點以便將所述第二時間處的記錄的正式程序執行能力與所述第二時間處的經修改的所需程序執行能力協調,協調所述記錄的正式程序執行能力包括將所述第二時間處的經修改的所需程序執行能力確定為所述第一用戶可用的進一步更新的記錄的正式程序執行能力。
[0221]第60條:根據第59條所述的計算系統,其中所述一個用戶的所述確定的能力修改觸發器由所述一個用戶指定,其中所述網絡訪問服務為提供多個計算節點的程序執行服務,所述多個計算節點可被配置來執行所述程序執行服務的遠程用戶的程序,并且其中所述多個用戶中的至少一個的每個的所述組的所述多個計算節點為所述多個計算節點的子集。
[0222]第61條:根據第58條所述的計算系統,其中所述系統管理器模塊包括由所述計算系統執行的軟件指令。
[0223]第62條:根據第58條所述的計算系統,其中針對所述多個用戶中的每個,所述系統管理器模塊由用于通過以下方式來管理網絡訪問服務的多個用戶的程序執行能力的裝置組成:
[0224]確定用于代表所述用戶來執行一個或多個軟件程序的所需程序執行能力,并且確定用于隨后引發對所述用戶的所述所需程序執行能力的自動修改的一個或多個能力修改觸發器;
[0225]在第一時間將一組多個可用計算節點與所述用戶自動關聯,以用于將所述確定的所需程序執行能力提供給所述用戶;以及
[0226]在所述第一時間之后,在所述第一時間之后的隨后的第二時間自動確定所述用戶可從所述組計算節點中獲得的實際程序執行能力,所述第二時間處的實際程序執行能力不同于在所述第一時間提供給所述用戶的所需程序執行能力;
[0227]根據各自發生在所述第一時間之后并且各自具有所述所需程序執行能力的相關修改的多個獨立事件,在所述第二時間自動確定提供給所述用戶的經修改的所需程序執行能力,所述多個獨立事件包括經確定被滿足的所述能力修改觸發器中的至少一個并且包括由所述用戶動態指定的至少一個能力修改指令,所述第二時間處的經修改的所需程序執行能力基于對所述多個獨立事件的相關修改的聚合;以及
[0228]在所述第二時間自動修改作為所述組的一部分的計算節點,以便將所述第二時間處的經修改的所需程序執行能力與所述第二時間處的確定的實際程序執行能力協調,所述經修改的計算節點用于將所述經修改的所需程序執行能力提供給所述用戶。
[0229]根據前述內容,應當理解到,盡管出于說明目的在本文中描述了具體實施方案,但可在不脫離本發明的精神和范圍的情況下做出各種修改。因此,本發明僅受所附權利要求及本文所提及要求的限制。另外,雖然本發明的某些方面在下文以某些權利要求的形式示出,但發明人以任何可用權利要求的形式考慮到本發明的各個方面。例如,雖然只有本發明的某些方面目前可被提及為體現于計算機可讀介質中,其它方面可同樣得到體現。
【權利要求】
1.一種計算機實現的方法,包括: 通過被配置為在第一時間提供程序執行服務的一個或多個計算系統,從用戶接收與使用一組計算節點來執行一個或多個軟件程序有關的指令,所述用戶還指定一個或多個限定的能力修改觸發器,用于在隨后發生指定條件時修改由所述一組計算節點提供的程序執行能力; 在使用所述一組計算節點執行所述一個或多個軟件程序時,在所述第一時間之后的第二時間處,通過配置的所述一個或多個計算系統確定所述一組計算節點對所述用戶可用的當前第一程序執行能力,以及針對所述一組計算節點的被滿足的至少一個所述限定的能力修改觸發器;以及 在使用所述一組計算節點執行所述一個或多個軟件程序時,通過配置的所述一個或多個計算系統修改所述一組計算節點,以從修改的組提供第二程序執行能力,所述第二程序執行能力與所述第一程序執行能力有所不同并且至少部分基于被滿足的所述至少一個能力修改觸發器。
2.根據權利要求1所述的方法,還包括在使用所述一組計算節點執行所述一個或多個軟件程序時,在所述第一時間之后并且在修改所述一組計算節點之前,接收由所述用戶動態指定的至少一個能力修改指令,并且基于被滿足的所述至少一個能力修改觸發器和動態指定的所述至少一個能力修改指令,來確定所述第二程序執行能力。
3.根據權利要求2所述的方法,其中所述程序執行服務提供應用程序編程接口API供所述程序執行服務的客戶端使用,并且其中動態指定的所述至少一個能力修改指令是經由API從受用戶控制的執行程序接收的。
4.根據權利要求2所述的方法,其中基于被滿足的所述至少一個能力修改觸發器和動態指定的所述至少一個能力修改指令,來確定所述第二程序執行能力包括積累所述一組計算節點中的計算節點的數量的多個指定改變。
5.根據權利要求2所述的方法,其中被滿足的所述至少一個能力修改觸發器指定所述一組計算節點的程序執行能力的第一數量改變,其中動態指定的所述至少一個能力修改指令指定所述一組計算節點的程序執行能力的第二數量改變,并且其中基于被滿足的所述至少一個能力修改觸發器和動態指定的所述至少一個能力修改指令,來確定所述第二程序執行能力包括抵消指定的所述第一數量改變和第二數量改變。
6.根據權利要求2所述的方法,其中被滿足的所述至少一個能力修改觸發器指定所述一組計算節點的程序執行能力的第一數量改變,其中動態指定的所述至少一個能力修改指令指定所述一組計算節點的程序執行能力的第二數量改變,并且其中基于被滿足的所述至少一個能力修改觸發器和動態指定的所述至少一個能力修改指令,來確定所述第二程序執行能力包括選擇指定的所述第一數量改變和第二數量改變之一。
7.根據權利要求1所述的方法,其中確定滿足所述至少一個能力修改觸發器還包括確定針對所述一組計算節點,所述多個能力修改觸發器被滿足,并且其中所述第二程序執行能力還基于被滿足的所述多個能力修改觸發器的組合。
8.根據權利要求7所述的方法,其中被滿足的所述多個能力修改觸發器中的每個能力修改觸發器具有一個或多個相關標準,用于確定所述能力修改觸發器是否被滿足,并且其中確定針對所述一組計算節點,所述多個能力修改觸發器被滿足包括基于當前條件確定被滿足的所述多個能力修改觸發器中的每個能力修改觸發器的相關標準被滿足。
9.根據權利要求7所述的方法,其中被滿足的所述多個能力修改觸發器中的每個能力修改觸發器具有所述一組計算節點中的計算節點的指定數量改變,并且其中所述方法還包括通過合計被滿足的所述多個能力修改觸發器的所述指定數量改變,來基于被滿足的所述多個能力修改觸發器的組合確定所述第二程序執行能力。
10.根據權利要求1所述的方法,其中所述程序執行服務提供應用程序編程接口API供所述程序執行服務的客戶端使用,并且其中動態指定的所述至少一個能力修改指令是經由API從受用戶控制的執行程序接收的。
11.根據權利要求1所述的方法,還包括:在使用所述一組計算節點執行所述一個或多個軟件程序時,通過配置的所述一個或多個計算系統識別多個獨立事件的發生,每個獨立事件指定所述一組計算節點的程序執行能力的指定修改;以及基于所述多個獨立事件的指定修改的集合,來確定第二程序執行能力。
12.根據權利要求1所述的方法,其中在所述一組計算節點上執行所述一個或多個軟件程序以支持在所述一組之外的至少一個計算系統上執行的至少一個其他軟件程序,并且其中被滿足的所述至少一個能力修改觸發器具有基于與所述至少一個其他軟件程序的執行有關的狀態信息的一個或多個標準。
13.根據權利要求1所述的方法,還包括監視所述一組計算節點以確定與執行所述一個或多個軟件程序有關的至少一類性能特性的一個或多個值,并且其中至少部分基于針對所述至少一類性能特性而確定的值來確定所述至少一個能力修改觸發器被滿足。
14.根據權利要求13所述的方法,其中所述至少一類性能特性是所述一組計算節點中可用的計算節點的實際數量,或與所述一組計算節點中的一個或多個計算節點上的計算負載相對應的計算節點的實際數量。
15.根據權利要求1所述的方法,其中基于與針對所述至少一個能力修改觸發器的一個或多個指定時間匹配的當前時間來確定所述至少一個能力修改觸發器被滿足。
16.根據權利要求1所述的方法,還包括接收用戶對多個不同地理位置的指定,并且其中修改所述一組計算節點包括在所述多個地理位置中的每個地理位置處提供修改的組的程序執行能力的子集。
17.一種配置的計算系統,包括: 一個或多個處理器;以及 一個或多個模塊,當由所述一個或多個處理器中的至少一個處理器執行時,將所述至少一個處理器配置為: 在第一時間從用戶接收與使用一組計算節點執行一個或多個軟件程序有關的指令,所述一組計算節點具有用于修改所提供的程序執行能力的一個或多個相關能力修改觸發器; 確定在第一時間之后的第二時間能夠由所述一組計算節點提供的第一程序執行能力; 確定滿足所述一組計算節點的至少一個相關能力修改觸發器;以及 修改所述一組計算節點以從修改的組提供修改的第二程序執行能力,所述第二程序執行能力至少部分基于被滿足的所述至少一個能力修改觸發器。
18.根據權利要求17所述的計算系統,其中在被所述至少一個處理器執行時,所述一個或多個模塊包括如下軟件指令,所述軟件指令將所述至少一個處理器進一步配置為在使用所述一組計算節點執行所述一個或多個軟件程序時在所述第一時間之后接收由用戶動態指定的至少一個能力修改指令,并且基于被滿足的所述至少一個能力修改觸發器和動態指定的所述至少一個能力修改指令來確定所述第二程序執行能力。
19.根據權利要求18所述的計算系統,其中配置的所述計算系統是程序執行服務的提供應用程序編程接口 API以供程序執行服務的客戶端使用的一部分,并且其中動態指定的所述至少一個能力修改指令是從受用戶控制的執行程序經由API接收的。
20.根據權利要求17所述的計算系統,其中配置的所述計算系統是程序執行服務的提供應用程序編程接口 API以供程序執行服務的客戶端使用的一部分,并且其中對被滿足的至少一個能力修改觸發器的定義是從受用戶控制的執行程序經由API在第一時間接收的。
【文檔編號】G06F9/50GK104331334SQ201410648530
【公開日】2015年2月4日 申請日期:2010年9月27日 優先權日:2009年9月29日
【發明者】阿歷克斯·馬克林諾夫斯基, 布雷克·梅科, 茨蘭吉布·伯拉格海因, 克里斯托夫·R·科馬萊迪, 喬弗里·S·派爾, 約翰·W·海因特曼, 撒米特·洛海亞, 陳靚, 扎科里·S·穆斯格雷夫 申請人:亞馬遜技術有限公司