欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

線程化作為服務(wù)的制作方法

文檔序號:11450256閱讀:206來源:國知局
線程化作為服務(wù)的制造方法與工藝

對同時提交申請的交叉引用

本申請的申請人在2014年9月30日同時提交以下美國專利申請:

以上引用的申請的公開內(nèi)容通過引用整體并入本文。

背景

一般來說,計算裝置利用通信網(wǎng)絡(luò)或一系列通信網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交換。公司和組織操作互連許多計算裝置來支持操作或者向第三方提供服務(wù)的計算機(jī)網(wǎng)絡(luò)。計算系統(tǒng)可位于單一地理位置或者位于多個不同地理位置中(例如,經(jīng)由私有或公共通信網(wǎng)絡(luò)互連)。確切地,數(shù)據(jù)中心或數(shù)據(jù)處理中心(在本文中總體稱之為“數(shù)據(jù)中心”)可包括多個互連的計算系統(tǒng)以向數(shù)據(jù)中心的用戶提供計算資源。數(shù)據(jù)中心可以是代表某一組織操作的私有數(shù)據(jù)中心或代表公眾或者為了公眾的利益操作的公共數(shù)據(jù)中心。

為了促進(jìn)數(shù)據(jù)中心資源的加大利用,虛擬化技術(shù)可允許單個物理計算裝置托管虛擬機(jī)的一個或多個實例,所述虛擬機(jī)作為獨立計算裝置向數(shù)據(jù)中心的用戶展現(xiàn)并操作。利用虛擬化,單個物理計算裝置可按照動態(tài)方式創(chuàng)建、維護(hù)、刪除或以其他方式管理虛擬機(jī)。進(jìn)而,用戶可從數(shù)據(jù)中心請求計算機(jī)資源,包括單一計算裝置或聯(lián)網(wǎng)計算裝置配置,并且可提供用戶不同數(shù)目的虛擬機(jī)資源。

在一些場景中,虛擬機(jī)實例可根據(jù)多個虛擬機(jī)實例類型進(jìn)行配置以提供特定功能性。例如,各種計算裝置可與操作系統(tǒng)或操作系統(tǒng)配置、虛擬化硬件資源和軟件應(yīng)用的不同組合相關(guān)聯(lián),以使得計算裝置能夠提供不同的所希望的功能性,或者更有效地提供類似功能性。這些虛擬機(jī)實例類型配置經(jīng)常包含在裝置圖像內(nèi),所述裝置圖像包括靜態(tài)數(shù)據(jù),所述靜態(tài)數(shù)據(jù)包含虛擬機(jī)在被啟動時將運行的軟件(例如,os和應(yīng)用以及它們的配置和數(shù)據(jù)文件等)。裝置圖像典型地存儲在用來創(chuàng)建或初始化實例的硬盤上。因此,計算裝置可處理裝置圖像以便實現(xiàn)所希望的軟件配置。

附圖簡述

當(dāng)結(jié)合附圖參閱以下詳細(xì)描述時,本公開的上述方面和許多伴隨的優(yōu)點將變得更容易明白,同時變得更好理解,附圖中:

圖1是描繪用于獲取低延時計算能力的說明性環(huán)境的框圖;

圖2描繪提供用于獲取低延時計算能力的虛擬計算系統(tǒng)管理器的計算裝置的總體架構(gòu);

圖3是示出根據(jù)示例性方面的由工作器管理器實現(xiàn)的低延時計算能力獲取例程的流程圖;并且

圖4是示出處理執(zhí)行用戶代碼的請求的虛擬機(jī)實例管理過程的框圖。

詳細(xì)描述

公司和組織不再需要獲取和管理他們自己的數(shù)據(jù)中心來執(zhí)行計算操作(例如,執(zhí)行代碼,包括線程、程序、軟件、例程、子例程、進(jìn)程等)。隨著云計算的出現(xiàn),傳統(tǒng)上由硬件計算裝置提供的存儲空間和計算能力現(xiàn)在可在數(shù)分鐘內(nèi)通過互聯(lián)網(wǎng)獲得并配置。因此,開發(fā)者可快速購買期望量的計算資源,而不必?fù)?dān)心獲取物理機(jī)器。這類計算資源通常以虛擬計算資源或虛擬機(jī)實例的形式來購買。在具有其自己的操作系統(tǒng)和其他軟件部件的物理計算裝置上托管的虛擬機(jī)的這些實例可以以與物理計算機(jī)相同的方式加以利用。

然而,即使在購買虛擬計算資源時,開發(fā)者仍不得不決定要購買的虛擬機(jī)實例的數(shù)量和類型以及持有時間。例如,根據(jù)它們租用的類型和小時數(shù),使用虛擬機(jī)實例的成本可能不同。另外,虛擬機(jī)可被租用的最小時間典型地以小時計。進(jìn)一步地,開發(fā)者不得不指定安裝在虛擬機(jī)上的硬件和軟件資源(例如,操作系統(tǒng)類型和語言運行時間等)。它們可能具有的其他問題包括利用過度(例如,獲取極少計算資源而面臨性能問題)、利用不足(例如,獲取比運行代碼所需更多的計算資源,并且因此付費過度)、流量變化預(yù)測(例如,以使得它們了解何時放大規(guī)?;驕p小規(guī)模)以及實例和語言運行時間啟動延遲(這可花費3-10分鐘或者更長,即使用戶可能希望計算能力以秒或者甚至毫秒計)。因此,需要一種允許用戶利用由服務(wù)提供商提供的虛擬機(jī)實例的改進(jìn)方法。

根據(jù)本公開的各方面,通過維護(hù)一旦接收到用戶請求就準(zhǔn)備好使用的預(yù)初始化虛擬機(jī)實例的池,與執(zhí)行用戶代碼相關(guān)聯(lián)的延遲(有時稱為延時)(例如,實例和語言運行時間啟動時間)可顯著減少。

一般來說,本公開的各方面涉及對虛擬機(jī)實例和其中創(chuàng)建的容器的管理。具體地,公開有助于虛擬計算系統(tǒng)中的虛擬機(jī)實例的管理的系統(tǒng)和方法。虛擬計算系統(tǒng)維護(hù)在其上加載有一個或多個軟件部件(例如,操作系統(tǒng)、語言運行時間、庫等)的虛擬機(jī)實例的池。池中的虛擬機(jī)實例可指定來服務(wù)用戶請求以執(zhí)行程序代碼。程序代碼可在虛擬機(jī)實例上創(chuàng)建的隔離容器中執(zhí)行。由于池中的虛擬機(jī)實例已經(jīng)被啟動并且在接收到請求時加載有特定的操作系統(tǒng)和語言運行時間,所以與發(fā)現(xiàn)可處理請求(例如,通過在虛擬機(jī)實例上創(chuàng)建的一個或多個容器中執(zhí)行用戶代碼)的計算能力相關(guān)聯(lián)的延遲顯著減少。

在另一方面,虛擬計算系統(tǒng)可在一個或多個物理計算裝置上維護(hù)虛擬機(jī)實例的池,其中每個虛擬機(jī)實例在其上加載有一個或多個軟件部件。當(dāng)虛擬計算系統(tǒng)接收到執(zhí)行用戶的程序代碼的的請求,

指定用于執(zhí)行用戶的程序代碼的一個或多個計算約束,虛擬計算系統(tǒng)可基于由所述請求指定的一個或多個計算約束來選擇虛擬機(jī)實例以用于執(zhí)行用戶的程序代碼,并且致使用戶的程序代碼在所選擇的虛擬機(jī)實例上執(zhí)行。

一般來說,本公開的各方面涉及對虛擬機(jī)實例的管理以使得其能夠線程化作為服務(wù)。具體地,公開系統(tǒng)和方法,其通過利用虛擬機(jī)實例管理器來有助于虛擬機(jī)實例的管理,以使得服務(wù)可接收用戶代碼(線程、程序等)并且以高度可擴(kuò)展、低延時的方式執(zhí)行代碼,而不需要虛擬機(jī)實例的用戶配置。虛擬機(jī)實例管理器管理可執(zhí)行由各種編程語言中的任一種書寫的用戶代碼的虛擬機(jī)實例。虛擬機(jī)實例管理器可在接收用戶代碼之前并且在從用戶接收關(guān)于任何特定虛擬機(jī)實例配置的任何信息之前,根據(jù)預(yù)定的配置集合來創(chuàng)建并配置虛擬機(jī)實例。相反,虛擬機(jī)實例管理器可預(yù)配置并建立各種虛擬機(jī)實例,每個虛擬機(jī)實例具有對應(yīng)于各種運行時間環(huán)境中的任何一個或多個的配置。響應(yīng)于執(zhí)行用戶代碼的請求,虛擬機(jī)實例管理器可基于與請求相關(guān)聯(lián)的配置信息來識別預(yù)配置的虛擬機(jī)實例,并且分配所識別的虛擬機(jī)實例來執(zhí)行用戶代碼。虛擬機(jī)實例管理器可基于執(zhí)行用戶代碼的請求的配置信息在所分配的虛擬機(jī)實例內(nèi)創(chuàng)建并配置容器。在一些情況下,虛擬機(jī)實例管理器可識別已經(jīng)分配給相同用戶賬戶的虛擬機(jī)實例中的現(xiàn)有容器。單個虛擬機(jī)實例內(nèi)的容器可同時托管同一用戶代碼的多個副本,并且如果在操作策略下允許的話,也可托管不同用戶代碼的副本。在一些情況下,虛擬機(jī)實例管理器通過利用各種輔助服務(wù)來管理并有助于由容器對所請求的用戶代碼的執(zhí)行。

現(xiàn)在將參考附圖描述本公開的具體實施方案和示例性應(yīng)用。這些實施方案和示例性應(yīng)用旨在說明而非限制本公開。

通過說明,各種示例性用戶計算裝置102被示出與虛擬計算系統(tǒng)110(包括臺式計算機(jī)、膝上型計算機(jī)和移動電話)通信。一般地,用戶計算裝置102可以是任何計算裝置,諸如臺式電腦、膝上型電腦、移動電話(或智能電話)、平板電腦、信息亭、無線裝置和其他電子裝置。另外,用戶計算裝置102可包括在相同或不同數(shù)據(jù)中心上運行的web服務(wù),其中例如不同的web服務(wù)可以編程方式彼此通信以便實行本文所描述的一個或多個技術(shù)。進(jìn)一步地,用戶計算裝置102可包括物聯(lián)網(wǎng)(iot)裝置,諸如互聯(lián)網(wǎng)設(shè)施和連接裝置。虛擬計算系統(tǒng)110可向用戶計算裝置102提供一個或多個用戶界面、命令行界面(cli)、應(yīng)用編程界面(api)和/或其他程序設(shè)計界面以便于生成和上傳用戶代碼、調(diào)用用戶代碼(例如,提交在虛擬計算系統(tǒng)110上執(zhí)行用戶代碼的請求)、調(diào)度基于事件的作業(yè)或基于時間的作業(yè)、追蹤用戶代碼、和/或查看與它們的請求和/或用戶代碼有關(guān)的其他日志或監(jiān)測信息。盡管一個或多個實施方案在本文中可被描述為使用用戶界面,但應(yīng)了解此類實施方案可另外地或可替代地使用任何cli、api或其他程序設(shè)計界面。

用戶計算裝置102通過網(wǎng)絡(luò)104訪問虛擬計算系統(tǒng)110。網(wǎng)絡(luò)104可為任何有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò)或其組合。此外,網(wǎng)絡(luò)104可為個人局域網(wǎng)、局域網(wǎng)、廣域網(wǎng)、空中廣播網(wǎng)絡(luò)(例如,用于無線電或電視)、電纜網(wǎng)絡(luò)、衛(wèi)星網(wǎng)絡(luò)、蜂窩電話網(wǎng)絡(luò)或其組合。例如,網(wǎng)絡(luò)104可為可能由各種不同方(諸如互聯(lián)網(wǎng))操作的鏈接網(wǎng)絡(luò)的公共可訪問網(wǎng)絡(luò)。在一些實施方案中,網(wǎng)絡(luò)104可為私有或半私有網(wǎng)絡(luò),諸如公司或大學(xué)內(nèi)聯(lián)網(wǎng)。網(wǎng)絡(luò)104可包括一個或多個無線網(wǎng)絡(luò),諸如全球移動通信系統(tǒng)(gsm)網(wǎng)絡(luò)、碼分多址(cdma)網(wǎng)絡(luò)、長期演進(jìn)(lte)網(wǎng)絡(luò)或任何其他類型的無線網(wǎng)絡(luò)。網(wǎng)絡(luò)104可使用協(xié)議和部件以用于通過互聯(lián)網(wǎng)或任何其他前述類型的網(wǎng)絡(luò)進(jìn)行通信。例如,由網(wǎng)絡(luò)104使用的協(xié)議可包括超文本傳輸協(xié)議(http)、http安全(https)、消息隊列遙測傳輸(mqtt)、約束應(yīng)用協(xié)議(coap)等。用于通過互聯(lián)網(wǎng)或任何其他前述類型的通信網(wǎng)絡(luò)進(jìn)行通信的協(xié)議和部件對于本領(lǐng)域技術(shù)人員來說是眾所周知的,并且因此不在本文中更詳細(xì)地進(jìn)行描述。

虛擬計算系統(tǒng)110在圖1中被描繪成在包括使用一個或多個計算機(jī)網(wǎng)絡(luò)互連的若干計算機(jī)系統(tǒng)的分布式計算環(huán)境中操作。虛擬計算系統(tǒng)110還可在具有比圖1所例示更少或更多數(shù)目的裝置的計算環(huán)境內(nèi)操作。因此,圖1中的虛擬計算系統(tǒng)110的描繪應(yīng)被視為說明性的而不是對本公開的限制。例如,虛擬計算系統(tǒng)110或其各種組成可實現(xiàn)各種web服務(wù)部件、已托管或“云”計算環(huán)境、和/或?qū)Φ染W(wǎng)絡(luò)配置以便實現(xiàn)本文所描述的進(jìn)程的至少一部分。

此外,虛擬計算系統(tǒng)110可實現(xiàn)在硬件和/或軟件中并且可例如包括實現(xiàn)在物理計算機(jī)硬件上的一個或多個物理或虛擬服務(wù)器,所述一個或多個物理或虛擬服務(wù)器被配置來執(zhí)行計算機(jī)可執(zhí)行指令以用于實行本文將描述的各個特征。一個或多個服務(wù)器在可以是地理上分散的或者地理上協(xié)同定位在例如一個或多個數(shù)據(jù)中心中。

在圖1所示的環(huán)境中,虛擬環(huán)境100包括虛擬計算系統(tǒng)110,其包括前端120、預(yù)熱池管理器(warmingpoolmanager)130和工作器管理器140。在所描繪的實例中,虛擬機(jī)實例(“實例”)152、154在由預(yù)熱池管理器130管理的預(yù)熱池130a中示出,并且實例156、158在由工作器管理器140管理的活性池140a中示出。虛擬計算系統(tǒng)110內(nèi)的各個部件的圖示在本質(zhì)上是邏輯的,并且部件中的一個或多個可由單個計算裝置或多個計算裝置實現(xiàn)。例如,實例152、154、156、158可在不同的各種地理區(qū)域中的一個或多個物理計算裝置上實現(xiàn)。類似地,前端120、預(yù)熱池管理器130和工作器管理器140中的每一個可跨多個物理計算裝置實現(xiàn)。或者,前端120、預(yù)熱池管理器130和工作器管理器140中的一個或多個可在單個物理計算裝置上實現(xiàn)。在一些實施方案中,虛擬計算系統(tǒng)110可包括多個前端、多個預(yù)熱池管理器和/或多個工作器管理器。盡管在圖1的實例中示出四個虛擬機(jī)實例,但是本文描述的實施方案不限于此,并且本領(lǐng)域技術(shù)人員將理解,虛擬計算系統(tǒng)110可包括使用任何數(shù)量的物理計算裝置實現(xiàn)的任何數(shù)量的虛擬機(jī)實例。類似地,盡管在圖1的實例中示出單個預(yù)熱池和單個活性池,但是本文描述的實施方案不限于此,并且本領(lǐng)域技術(shù)人員將理解,虛擬計算系統(tǒng)110可包括任何數(shù)量的預(yù)熱池和活性池。

在圖1的實例中,虛擬計算系統(tǒng)110被例示為連接到網(wǎng)絡(luò)104。在一些實施方案中,虛擬計算系統(tǒng)110內(nèi)的部件中的任一個可經(jīng)由網(wǎng)絡(luò)104與虛擬環(huán)境100的其他部件(例如,用戶計算裝置102和輔助服務(wù)106,所述輔助服務(wù)106可包括監(jiān)測/日志/記賬服務(wù)107、存儲服務(wù)108、實例供應(yīng)服務(wù)109、和/或可與虛擬計算系統(tǒng)110通信的其他服務(wù))通信。在其他實施方案中,并不是虛擬計算系統(tǒng)110的所有部件都能夠與虛擬環(huán)境100的其他部件通信。在一個實例中,只有前端120可連接到網(wǎng)絡(luò)104,而虛擬計算系統(tǒng)110的其他部件可經(jīng)由前端120與虛擬環(huán)境100的其他部件通信。

用戶可使用虛擬計算系統(tǒng)110以在其上執(zhí)行用戶代碼。例如,用戶可希望結(jié)合用戶已經(jīng)開發(fā)出的web或移動應(yīng)用運行一段代碼。一種運行代碼的方法將是從服務(wù)提供商獲取虛擬機(jī)實例,所述服務(wù)提供商提供基礎(chǔ)設(shè)施作為服務(wù)、配置虛擬機(jī)實例以便符合用戶的需求、并且使用經(jīng)配置虛擬機(jī)實例來運行代碼?;蛘?,用戶可將代碼執(zhí)行請求發(fā)送到虛擬計算系統(tǒng)110。虛擬計算系統(tǒng)110可基于代碼執(zhí)行請求處理計算能力(例如,容器、實例等,其在以下有更詳細(xì)描述)的獲取和配置,并且使用計算能力執(zhí)行代碼。虛擬計算系統(tǒng)110可基于體積自動放大規(guī)模和減小規(guī)模,由此使用戶釋放不得不擔(dān)心利用過度(例如,獲取極少計算資源并且面臨性能問題)或利用不足(例如,獲取比運行代碼所需更多的計算資源,并且因此付費過度)的負(fù)擔(dān)。

前端120處理在虛擬計算系統(tǒng)110上執(zhí)行用戶代碼的所有請求。在一個實施方案中,前端120用作由虛擬計算系統(tǒng)110提供的所有其他服務(wù)的前門。前端120處理請求并確保請求被正確地授權(quán)。例如,前端120可確定與請求相關(guān)聯(lián)的用戶是否被授權(quán)訪問在請求中指定的用戶代碼。

本文使用的用戶代碼可指以特定程序語言書寫的任何程序代碼(例如,程序、例程、子例程、線程等)。在本公開中,術(shù)語“代碼”、“用戶代碼”和“程序代碼”可互換使用。這種用戶代碼可被執(zhí)行來例如結(jié)合由用戶開發(fā)的特定web應(yīng)用或移動應(yīng)用實現(xiàn)特定任務(wù)。例如,用戶代碼可以javascript(node.js)、java、python和/或ruby書寫。請求可包括用戶代碼(或其位置)以及用于執(zhí)行所述用戶代碼的一個或多個自變量。例如,用戶可提供用戶代碼連同執(zhí)行所述用戶代碼的請求。在另一個實例中,請求可通過其名稱或其唯一id識別先前上傳的程序代碼(例如,使用api以上傳代碼)。在又一個實例中,代碼可被包括在請求中以及在請求由虛擬計算系統(tǒng)110接收之前被上傳到單獨位置(例如,存儲服務(wù)108或虛擬計算系統(tǒng)110內(nèi)部的存儲系統(tǒng))中。虛擬計算系統(tǒng)110可基于處理請求時可獲得代碼的位置改變其代碼執(zhí)行策略。

前端120可響應(yīng)于來自用戶的超文本傳輸協(xié)議安全(https)請求來接收執(zhí)行此類用戶代碼的請求。并且,包括在https請求中的任何信息(例如,標(biāo)頭和參數(shù))也可在執(zhí)行用戶代碼時被處理并利用。如以上所論述的,任何其他協(xié)議,包括例如http、mqtt和coap,可用來將包含代碼執(zhí)行請求的消息傳送至前端120。前端120還可在事件被監(jiān)測到時接收執(zhí)行此類用戶代碼的請求,所述事件諸如用戶已登記來觸發(fā)自動請求生成的事件。例如,用戶可能已經(jīng)使用輔助服務(wù)106登記用戶代碼并且規(guī)定無論何時發(fā)生特定事件(例如,上傳新文件),都要將執(zhí)行用戶代碼的請求發(fā)送到前端120?;蛘撸脩艨赡芤呀?jīng)登記定時作業(yè)(例如,每24小時執(zhí)行用戶代碼)。在這種實例中,當(dāng)定時作業(yè)的預(yù)定時間達(dá)到時,執(zhí)行用戶代碼的請求可被發(fā)送到前端120。在又一個實例中,前端120可具有輸入代碼執(zhí)行請求的隊列,并且當(dāng)用戶的批量作業(yè)從虛擬計算系統(tǒng)的工作隊列被移除時,前端120可處理用戶請求。在又一個實例中,請求可來源于虛擬計算系統(tǒng)110內(nèi)的另一個部件或者圖1未例示的其他服務(wù)器或服務(wù)。

用戶請求可指定將要與用戶代碼一起使用的一個或多個第三方庫(包括本地庫)。在一個實施方案中,用戶請求是包含用戶代碼和任何庫(和/或其存儲位置的標(biāo)識)的zip文件。在一些實施方案中,用戶請求包括元數(shù)據(jù),所述元數(shù)據(jù)指示待執(zhí)行的程序代碼、書寫程序代碼的語言、與請求相關(guān)聯(lián)的用戶和/或保留用于執(zhí)行程序代碼的計算資源(例如,存儲器等)。例如,程序代碼可隨請求提供,由用戶先前上傳,由虛擬計算系統(tǒng)110(例如,標(biāo)準(zhǔn)例程)提供,和/或由第三方提供。在一些實施方案中,此類資源水平約束(例如,多少存儲器分配用于執(zhí)行特定用戶代碼)被指定用于特定用戶代碼,并且在每次執(zhí)行用戶代碼時可能不會改變。在此類情況下,虛擬計算系統(tǒng)110可在每個單獨請求被接收到之前能夠訪問此類資源水平約束,并且所述單獨請求可能不會指定此類資源水平約束。在一些實施方案中,用戶請求可指定其他約束,諸如指示請求具有的用以執(zhí)行用戶代碼的許可種類的許可數(shù)據(jù)。此類許可數(shù)據(jù)可由虛擬計算系統(tǒng)110使用來訪問專用資源(例如,專用網(wǎng)絡(luò)上)。

在一些實施方案中,用戶請求可指定應(yīng)當(dāng)被采用以用于處理用戶請求的行為。在此類實施方案中,用戶請求可包括用于實現(xiàn)一個或多個執(zhí)行模式的指示符,其中待執(zhí)行與用戶請求相關(guān)聯(lián)的用戶代碼。例如,請求可包括用于指示是否應(yīng)在調(diào)試模式中執(zhí)行用戶代碼的標(biāo)志或標(biāo)頭,其中可結(jié)合用戶代碼的執(zhí)行生成的調(diào)試和/或日志輸出被往回提供給用戶(例如,經(jīng)由控制臺用戶界面)。在這種實例中,虛擬計算系統(tǒng)110可檢查請求并且查找標(biāo)志或標(biāo)頭,并且如果存在,那么虛擬計算系統(tǒng)110可修改用戶代碼在其中執(zhí)行的容器的行為(例如,日志設(shè)備)并且致使輸出數(shù)據(jù)往回提供給用戶。在一些實施方案中,行為/模式指示符通過由虛擬計算系統(tǒng)110提供給用戶的用戶界面添加到請求。其他特征諸如源代碼剖析、遠(yuǎn)程調(diào)試等也可基于請求中提供的指示實現(xiàn)或禁用。

在一些實施方案中,虛擬計算系統(tǒng)110可包括多個前端120。在此類實施方案中,負(fù)載平衡器可被提供來例如以循環(huán)方式將輸入請求分配給多個前端120。在一些實施方案中,負(fù)載平衡器將輸入請求分配給多個前端120的方式可基于預(yù)熱池130a和/或活性池140a的狀態(tài)。例如,如果認(rèn)為預(yù)熱池130a的容量足夠,那么請求可基于前端120的單獨容量(例如,基于一個或多個負(fù)載平衡限制)被分配給多個前端120。另一方面,如果預(yù)熱池130a的容量小于閾值量,那么此類負(fù)載平衡限制中的一個或多個可被移除,使得請求可以降低或最小化從預(yù)熱池130a取得的虛擬機(jī)實例的數(shù)目的方式被分配給多個前端120。例如,即便,根據(jù)負(fù)載平衡限制,請求將被發(fā)送到前端a,如果前端a需要從預(yù)熱池130a中取出實例以用來服務(wù)請求但前端b可使用其活性池中的實例中的一個來服務(wù)相同請求,那么所述請求可被發(fā)送到前端b。

當(dāng)虛擬計算系統(tǒng)110接收到在虛擬計算系統(tǒng)110上執(zhí)行用戶代碼的請求時,預(yù)熱池管理器130確保虛擬機(jī)實例準(zhǔn)備好由工作器管理器140使用。在圖1所示的實例中,預(yù)熱池管理器130管理預(yù)熱池130a,所述預(yù)熱池130a是可用于服務(wù)輸入的用戶代碼執(zhí)行請求的預(yù)初始化和預(yù)配置的虛擬機(jī)實例的組(有時稱為池)。在一些實施方案中,預(yù)熱池管理器130致使虛擬機(jī)實例在虛擬計算系統(tǒng)110內(nèi)的一個或多個物理計算機(jī)器上啟動并添加到預(yù)熱池130a。在其他實施方案中,預(yù)熱池管理器130與輔助虛擬管理實例服務(wù)(例如,圖1的輔助服務(wù)106)通信以創(chuàng)建新實例并將其添加到預(yù)熱池130a。例如,預(yù)熱池管理器130可基于預(yù)熱池130a中的可用容量來致使附加的實例被添加到預(yù)熱池130a,以服務(wù)輸入的請求。在一些實施方案中,預(yù)熱池管理器130可利用虛擬計算系統(tǒng)110內(nèi)的物理計算裝置和一個或多個虛擬機(jī)實例服務(wù)來獲取并維護(hù)可用于服務(wù)由前端120接收的代碼執(zhí)行請求的計算能力。在一些實施方案中,虛擬計算系統(tǒng)110可包括用于控制(例如,增加或減少)預(yù)熱池130a中的可用容量的一個或多個邏輯旋鈕或開關(guān)。例如,系統(tǒng)管理員可使用這種旋鈕或開關(guān)來在高峰時間期間增加預(yù)熱池130a中可用的容量(例如,預(yù)啟動實例的數(shù)量)。在一些實施方案中,預(yù)熱池130a中的虛擬機(jī)實例可基于預(yù)定配置集合獨立于執(zhí)行用戶代碼的特定用戶請求來進(jìn)行配置。預(yù)定配置集合可對應(yīng)于執(zhí)行用戶代碼的各種類型的虛擬機(jī)實例。預(yù)熱池管理器130可基于與當(dāng)前或先前用戶代碼執(zhí)行相關(guān)的一個或多個度量來優(yōu)化預(yù)熱池130a中的虛擬機(jī)實例的類型和數(shù)量。

如圖1所示,實例可在其上加載有操作系統(tǒng)(os)和/或語言運行時間。例如,由預(yù)熱池管理器130管理的預(yù)熱池130a包括實例152、154。實例152包括os152a和運行時間152b。實例154包括os154a。在一些實施方案中,預(yù)熱池130a中的實例還可包括容器(所述容器還可包含操作系統(tǒng)、運行時間、用戶代碼等的副本),這在以下有更詳細(xì)的描述。盡管圖1所示的實例152包括單個運行時間,但在其他實施方案中,圖1所描繪的實例可包括兩個或更多個運行時間,其中每個運行時間可用于運行不同的用戶代碼。在一些實施方案中,預(yù)熱池管理器130可維持預(yù)熱池130a中的實例列表。實例列表可進(jìn)一步指定實例的配置(例如,os、運行時間、容器等)。

在一些實施方案中,預(yù)熱池130a中的虛擬機(jī)實例可用于服務(wù)任何用戶的請求。在一個實施方案中,預(yù)熱池130a中的所有虛擬機(jī)實例以相同或基本相似的方式進(jìn)行配置。在另一實施方案中,預(yù)熱池130a中的虛擬機(jī)實例可不同地配置,以適合不同用戶的需要。例如,虛擬機(jī)實例其上可加載有不同的操作系統(tǒng)、不同的語言運行時間和/或不同的庫。在又一實施方案中,預(yù)熱池130a中的虛擬機(jī)實例可以以相同或基本相似的方式(例如,利用相同的os、語言運行時間和/或庫)來配置,但是這些實例中的一些可具有不同的容器配置。例如,一個實例可具有在其中創(chuàng)建的用于運行以python書寫的代碼的容器,并且另一實例可具有在其中創(chuàng)建的用于運行以ruby書寫的代碼的容器。在一些實施方案中,提供多個預(yù)熱池130a,每個預(yù)熱池130a具有相同配置的虛擬機(jī)實例。

預(yù)熱池管理器130可預(yù)配置預(yù)熱池130a中的虛擬機(jī)實例,以使得每個虛擬機(jī)實例被配置來滿足可由在虛擬計算系統(tǒng)110上執(zhí)行程序代碼的用戶請求來請求或指定的操作條件中的至少一個。在一個實施方案中,操作條件可包括潛在用戶代碼可以其書寫的程序語言。例如,此類語言可包括java、javascript、python、ruby等。在一些實施方案中,用戶代碼可以其書寫的語言集合可局限于預(yù)定集合(例如,4種語言的集合,盡管在一些實施方案中提供多于或少于四種語言的集合)以便促進(jìn)可滿足執(zhí)行用戶代碼的請求的虛擬機(jī)實例的預(yù)初始化。例如,當(dāng)用戶正經(jīng)由虛擬計算系統(tǒng)110所提供的用戶界面來配置請求時,所述用戶界面可提示用戶指定預(yù)定操作條件中的一個以執(zhí)行用戶代碼。在另一個實例中,用于利用虛擬計算系統(tǒng)110所提供的服務(wù)的服務(wù)水平協(xié)定(sla)可指定用戶請求應(yīng)滿足的條件集合(例如,編程語言、計算資源等),并且虛擬計算系統(tǒng)110在處理請求時可假設(shè)所述請求滿足所述條件集合。在另一個實例中,請求中所指定的操作條件可包括:用于處理請求的計算能力的量;請求的類型(例如,http對比觸發(fā)事件);請求的超時(例如,請求在其后可終止的閾值時間);安全策略(例如,可控制預(yù)熱池130a中的哪些實例可由哪個用戶使用);等。

工作器管理器140管理用于服務(wù)輸入代碼執(zhí)行請求的實例。在圖1例示的實例中,工作器管理器140管理活性池140a,所述活性池140a是當(dāng)前分配給一個或多個用戶的虛擬機(jī)實例組(有時稱為池)。盡管虛擬機(jī)實例在本文中被描述為分配給特定用戶,但在一些實施方案中,實例可被分配給用戶組,使得實例與所述用戶組綁定并且所述組中的任何成員可利用實例上的資源。例如,相同組中的用戶可屬于相同的安全組(例如,基于它們的安全憑證),使得在特定實例上的一個容器中執(zhí)行一個成員的代碼之后在相同實例上的另一個容器中執(zhí)行另一個成員的代碼不會造成安全風(fēng)險。類似地,工作器管理器140可根據(jù)指定哪些請求可在哪些容器中執(zhí)行以及哪些實例可被分配給哪些用戶的一個或多個策略來分配實例和容器。示例性策略可指定實例被分配給共享相同賬戶(例如,用于訪問由虛擬計算系統(tǒng)110提供的服務(wù)的賬戶)的用戶集合。在一些實施方案中,與相同用戶組相關(guān)聯(lián)的請求可共享相同的容器(例如,如果與其相關(guān)聯(lián)的用戶代碼相同)。在一些實施方案中,請求不會在不同的用戶組之間進(jìn)行區(qū)分而僅僅指示與請求相關(guān)聯(lián)的用戶所屬的組。

如圖1所示,實例可具有操作系統(tǒng)(os)、語言運行時間和容器。容器可具有在其上加載的os以及運行時間和用戶代碼的單獨副本。在圖1的實例中,由工作器管理器140管理的活性池140a包括實例156、158。實例156具有os156a、運行時間156b、156c和容器156d、156e。容器156d包括os156a的副本、運行時間156b的副本和代碼156d-1的副本。容器156e包括os156a的副本、運行時間156c的副本和代碼156e-1的副本。實例158具有os158a、運行時間158b、158c、158e、158f、容器158d和代碼158g、158h。容器158d具有os158a的副本、運行時間158b的副本和代碼158d-1的副本。如圖1所示,實例其上可加載有用戶代碼,并且那些實例內(nèi)的容器其中也可加載有用戶代碼。在一些實施方案中,工作器管理器140可維護(hù)活性池140a中的實例列表。實例列表還可指定實例的配置(例如,os、運行時間、容器等)。在一些實施方案中,工作器管理器140可訪問預(yù)熱池130a中的實例列表(例如,包括實例的數(shù)量和類型)。在其他實施方案中,工作器管理器140從預(yù)熱池管理器130請求計算能力,而無需知道預(yù)熱池130a中的虛擬機(jī)實例。

在圖1所示的實例中,在稱為容器(例如,容器156d、156e、158d)的隔離的虛擬計算系統(tǒng)中執(zhí)行用戶代碼。容器是在虛擬機(jī)實例內(nèi)使用所述實例上可用的資源創(chuàng)建的邏輯單元。例如,工作器管理器140可基于在執(zhí)行用戶代碼的請求中指定的信息,創(chuàng)建新容器或者定位活性池140a中的一個實例中的現(xiàn)有容器,并將所述容器分配給所述請求以處理與請求相關(guān)聯(lián)的用戶代碼的執(zhí)行。在一個實施方案中,這類容器被實現(xiàn)為linux容器。

一旦請求已由前端120成功處理,工作器管理器140就發(fā)現(xiàn)服務(wù)所述請求以在虛擬計算系統(tǒng)110上執(zhí)行用戶代碼的能力。例如,如果在活性池140a中存在具有其中加載有相同用戶代碼(例如,在容器156d中示出的代碼156d-1)的容器的特定虛擬機(jī)實例,那么工作器管理器140可將容器分配給請求并致使用戶代碼在容器中執(zhí)行。或者,如果用戶代碼在虛擬機(jī)實例中的一個的本地緩存中可用(例如,存儲在實例158上但不屬于任何單獨的容器的代碼158g、158h),那么工作器管理器140可在這種實例上創(chuàng)建新容器,將容器分配給請求,并且致使所使用的代碼在容器中被加載并執(zhí)行。

如果工作器管理器140確定在活性池140a中的任何實例(例如,容器或者實例的本地緩存中)未發(fā)現(xiàn)與請求相關(guān)聯(lián)的用戶代碼,那么工作器管理器140可確定活性池140a中的實例中的任一個當(dāng)前是否被分配給與所述請求相關(guān)聯(lián)的用戶并且是否具有處理當(dāng)前請求的計算能力。如果存在這種實例,那么工作器管理器140可在實例上創(chuàng)建新的容器并且將所述容器分配給請求。或者,工作器管理器140可進(jìn)一步配置分配給用戶的實例上的現(xiàn)有容器,并且將所述容器分配給請求。例如,如果其上加載有當(dāng)前用戶請求所要求的特定庫,那么工作器管理器140可確定現(xiàn)有容器可用來執(zhí)行用戶代碼。在這種情況下,工作器管理器140可將特定庫和用戶代碼加載到容器之上并且使用所述容器來執(zhí)行所述用戶代碼。

如果活性池140不包含當(dāng)前分配給用戶的任何實例,那么工作器管理器140從預(yù)熱池130a中拉出新的虛擬機(jī)實例,將所述實例分配給與所述請求相關(guān)聯(lián)的用戶,在所述實例上創(chuàng)建新的容器,將容器分配給請求,并且致使用戶代碼被下載并在容器上執(zhí)行。

在一些實施方案中,虛擬計算系統(tǒng)110被適配成在用戶代碼被接收(例如,被前端120接收)之后不久開始執(zhí)行用戶代碼。可根據(jù)啟動(例如,與用戶相關(guān)聯(lián)的虛擬機(jī)實例上的容器中的)用戶代碼的執(zhí)行與接收執(zhí)行所述用戶代碼的請求(例如,由前端接收)之間的時間差來確定時間段。虛擬計算系統(tǒng)110被適配來在小于預(yù)定持續(xù)時間的時間段內(nèi)開始執(zhí)行用戶代碼。在一個實施方案中,預(yù)定持續(xù)時間是500ms。在另一個實施方案中,預(yù)定持續(xù)時間是300ms。在另一個實施方案中,預(yù)定持續(xù)時間是100ms。在另一個實施方案中,預(yù)定持續(xù)時間是50ms。在另一個實施方案中,預(yù)定持續(xù)時間是10ms。在另一個實施方案中,預(yù)定持續(xù)時間可以是選自10ms至500ms的范圍內(nèi)的任何值。在一些實施方案中,虛擬計算系統(tǒng)110被適配來如果滿足一個或多個條件那么在小于預(yù)定持續(xù)時間的時間段內(nèi)開始執(zhí)行用戶代碼。例如,一個或多個條件可包括以下中的任一個:(1)在接收到請求時用戶代碼被加載在活性池140中的容器上;(2)在接收到請求時用戶代碼被存儲在活性池140中的實例的代碼緩存中;(3)在接收到請求時活性池140a包含分配給與所述請求相關(guān)聯(lián)的用戶的實例;或者(4)在接收到請求時預(yù)熱池130a具有處理請求的能力。

用戶代碼可從諸如圖1的存儲服務(wù)108的輔助服務(wù)106下載。圖1例示的數(shù)據(jù)108a可包括由一個或多個用戶上傳的用戶代碼、與此類用戶代碼相關(guān)聯(lián)的元數(shù)據(jù)、或者由虛擬計算系統(tǒng)110利用來執(zhí)行本文所描述的一個或多個技術(shù)的任何其他數(shù)據(jù)。盡管圖1的實例中僅例示存儲服務(wù)108,但虛擬環(huán)境100可包括用戶代碼可從其下載的其他水平的存儲系統(tǒng)。例如,每個實例可具有與容器在其上創(chuàng)建的實例物理地(例如,駐留在實例在其上運行的物理計算系統(tǒng)上的本地存儲裝置)或邏輯地(例如,與實例處于網(wǎng)絡(luò)通信并且設(shè)置在虛擬計算系統(tǒng)110內(nèi)部或外部的網(wǎng)絡(luò)連接的存儲系統(tǒng))相關(guān)聯(lián)的一個或多個存儲系統(tǒng)。或者,代碼可從由存儲服務(wù)108提供的基于web的數(shù)據(jù)存儲區(qū)下載。

一旦工作器管理器140定位到預(yù)熱池130a中的可用于服務(wù)用戶代碼執(zhí)行請求的一個虛擬機(jī)實例,預(yù)熱池管理器130或工作器管理器140從預(yù)熱池130a中取出實例并且將其分配給與請求相關(guān)聯(lián)的用戶。所分配的虛擬機(jī)實例被從預(yù)熱池130a取出并且放置在活性池140a中。在一些實施方案中,當(dāng)虛擬機(jī)實例已經(jīng)被分配給特定用戶時,相同的虛擬機(jī)實例不能用來服務(wù)任何其他用戶的請求。這通過防止可能的用戶資源的共混而為用戶提供了安全效益?;蛘撸谝恍嵤┓桨钢?,屬于不同用戶(或者分配給與不同用戶相關(guān)聯(lián)的請求)的多個容器可共同存在于單個虛擬機(jī)實例上。這種方式可提高可用計算能力的利用率。

在一些實施方案中,虛擬計算系統(tǒng)110可維護(hù)單獨的緩存,其中存儲用戶代碼以用作虛擬機(jī)實例的本地緩存與(例如,可通過網(wǎng)絡(luò)104訪問的)基于web的網(wǎng)絡(luò)存儲裝置之間的中間水平的緩存系統(tǒng)。在下文參考圖4更詳細(xì)地描述工作器管理器140在服務(wù)請求時可能遇到的各種情境。

在已經(jīng)執(zhí)行用戶代碼之后,工作器管理器140可拆卸用來執(zhí)行用戶代碼的容器以便釋放其占用的資源以供用于實例中的其他容器?;蛘撸ぷ髌鞴芾砥?40可保持容器運行以便使用其來服務(wù)來自相同用戶的附加請求。例如,如果另一個請求與已經(jīng)被加載在容器中的相同用戶代碼相關(guān)聯(lián),那么所述請求可被分配給相同的容器,由此消除與創(chuàng)建新的容器并且在所述容器中加載用戶代碼相關(guān)聯(lián)的延遲。在一些實施方案中,工作器管理器140可拆卸用來執(zhí)行用戶代碼的容器創(chuàng)建在其中的實例?;蛘?,工作器管理器140可保持實例運行以便使用其來服務(wù)來自相同用戶的附加請求。確定在用戶代碼完成執(zhí)行之后是否保持容器和/或?qū)嵗\行可基于閾值時間、用戶類型、用戶的平均請求量和/或其他操作條件。例如,在閾值時間已經(jīng)經(jīng)過(例如,5分鐘、30分鐘、1小時、24小時、30天等)而沒有任何活動(例如,代碼的運行)之后,容器和/或虛擬機(jī)實例被關(guān)閉(例如,刪除、終止等)并且分配給其的資源被釋放。在一些實施方案中,在容器被拆卸之前經(jīng)過的閾值時間小于在實例被拆卸之前經(jīng)過的閾值時間。

在一些實施方案中,虛擬計算系統(tǒng)110可在輔助服務(wù)106中的一個或多個服務(wù)輸入的代碼執(zhí)行請求時向輔助服務(wù)106中的一個或多個提供數(shù)據(jù)。例如,虛擬計算系統(tǒng)110可與監(jiān)測/日志/記賬服務(wù)107通信。監(jiān)測/日志/記賬服務(wù)107可包括:用于管理從虛擬計算系統(tǒng)110接收的監(jiān)測信息(諸如虛擬計算系統(tǒng)110上的容器和實例的狀態(tài))的監(jiān)測服務(wù);用于管理從虛擬計算系統(tǒng)110接收的日志信息(諸如由虛擬計算系統(tǒng)110上的容器和實例執(zhí)行的活動)的日志服務(wù);以及用于(例如,基于由監(jiān)測服務(wù)和日志服務(wù)管理的監(jiān)測信息和/或日志信息)生成與在虛擬計算系統(tǒng)110上執(zhí)行用戶代碼相關(guān)聯(lián)的記賬信息的記賬服務(wù)。除了可由如上所述的監(jiān)測/日志/記賬服務(wù)107(例如,代表虛擬計算系統(tǒng)110)執(zhí)行的系統(tǒng)水平活動之外,監(jiān)測/日志/記賬服務(wù)107可代表在虛擬計算系統(tǒng)110上執(zhí)行的用戶代碼提供應(yīng)用水平服務(wù)。例如,監(jiān)測/日志/記賬服務(wù)107可監(jiān)測和/或記錄各種輸入、輸出或者代表在虛擬計算系統(tǒng)110上執(zhí)行的用戶代碼的其他數(shù)據(jù)和參數(shù)。盡管示出為單個框,但監(jiān)測、日志和記賬服務(wù)107可被提供為單獨的服務(wù)。

在一些實施方案中,工作器管理器140可對由工作器管理器140管理的實例和容器(例如,活性池140a中的那些)執(zhí)行健康檢查。例如,由工作器管理器140執(zhí)行的健康檢查可包括確定由工作器管理器140管理的實例和容器是否具有以下中的任何問題:(1)配置錯誤的聯(lián)網(wǎng)和/或啟動配置;(2)耗盡的存儲器;(3)毀壞的文件系統(tǒng);(4)不可兼容的內(nèi)核;和/或可削弱實例和容器的性能的任何其他問題。在一個實施方案中,工作器管理器140周期性地(例如,每5分鐘、每30分鐘、每小時、每24小時等)執(zhí)行健康檢查。在一些實施方案中,健康檢查的頻率可基于健康檢查的結(jié)果自動調(diào)整。在其他實施方案中,健康檢查的頻率可基于用戶請求來調(diào)整。在一些實施方案中,工作器管理器140可對預(yù)熱池130a中的實例和/或容器執(zhí)行類似的健康檢查。預(yù)熱池130a中的實例和/或容器可與活性池140a中的那些實例和容器一起被管理或者被單獨管理。在一些實施方案中,在預(yù)熱池130a中的實例和/或容器的健康與活性池140a單獨管理的情況下,預(yù)熱池管理器130而不是工作器管理器140可對預(yù)熱池130a中的實例和/或容器執(zhí)行上述健康檢查。

工作器管理器140可包括用于發(fā)現(xiàn)用來服務(wù)輸入的代碼執(zhí)行請求的計算能力(例如,容器)的實例分配單元以及用于有助于在那些容器上執(zhí)行用戶代碼的用戶代碼執(zhí)行單元。下文參考圖2更詳細(xì)地描述工作器管理器140的示例性配置。

圖2描繪管理虛擬計算系統(tǒng)110中的虛擬機(jī)實例的計算系統(tǒng)(稱為工作器管理器140)的總體架構(gòu)。圖2中描繪的工作器管理器140的總體架構(gòu)包括可用于實現(xiàn)本公開的各方面的計算機(jī)硬件和軟件模塊的布置。硬件模塊可用物理電子裝置來實現(xiàn),如下文更詳細(xì)地討論的。工作器管理器140可包括比圖2所示的元件更多(或更少)的元件。然而,沒有必要示出所有這些一般常規(guī)的元件來提供能夠?qū)崿F(xiàn)的公開。此外,圖2中所示的總體架構(gòu)可用于實現(xiàn)圖1所示的一個或多個其他部件。如圖所示,工作器管理器140包括處理單元190、網(wǎng)絡(luò)接口192、計算機(jī)可讀介質(zhì)驅(qū)動器194、輸入/輸出裝置接口196,它們都可通過通信總線彼此通信。網(wǎng)絡(luò)接口192可提供到一個或多個網(wǎng)絡(luò)或計算系統(tǒng)的連接性。因此,處理單元190可通過網(wǎng)絡(luò)104從其他計算系統(tǒng)或服務(wù)接收信息和指令。處理單元190還可與存儲器180進(jìn)行通信,并且還通過輸入/輸出裝置接口196提供用于可選顯示器(未示出)的輸出信息。輸入/輸出裝置接口196還可接受來自可選輸入裝置(未示出)的輸入。

存儲器180可包含處理單元190執(zhí)行以便實現(xiàn)本公開的一個或多個方面的計算機(jī)程序指令(在一些實施方案中被分組成模塊)。存儲器180通常包括ram、rom和/或其他持久性、輔助或非暫時性計算機(jī)可讀介質(zhì)。存儲器180可存儲操作系統(tǒng)184,所述操作系統(tǒng)184提供計算機(jī)程序指令以供處理單元190在工作器管理器140的一般管理和操作中使用。存儲器180還可包括用于實現(xiàn)本公開的各方面的計算機(jī)程序指令和其他信息。例如,在一個實施方案中,存儲器180包括用戶界面單元182,所述用戶界面單元182生成用于例如通過導(dǎo)航和/或瀏覽界面(諸如安裝在計算裝置上的瀏覽器或應(yīng)用)在計算裝置上顯示的用戶界面(和/或其指令)。此外,存儲器180可包括和/或與一個或多個數(shù)據(jù)儲存庫(未示出)通信,例如以訪問用戶程序代碼和/或庫。

除了用戶界面單元182之外和/或與用戶界面單元182組合,存儲器180可包括可由處理單元190執(zhí)行的實例分配單元186和用戶代碼執(zhí)行單元188。在一個實施方案中,用戶界面單元182、實例分配單元186和用戶代碼執(zhí)行單元188單獨地或共同地實現(xiàn)本公開的各個方面,例如發(fā)現(xiàn)將要用于執(zhí)行用戶代碼的計算能力(例如,容器),致使用戶代碼被加載并在容器上執(zhí)行等,如下文進(jìn)一步描述的。

實例分配單元186發(fā)現(xiàn)將要用于服務(wù)執(zhí)行用戶代碼的請求的計算能力。例如,實例分配單元186識別滿足由請求指定的任何約束的虛擬機(jī)實例和/或容器,并將所識別的虛擬機(jī)實例和/或容器分配給用戶或請求本身。實例分配單元186可基于寫入用戶代碼的編程語言來執(zhí)行這種識別。例如,如果用戶代碼以python書寫,那么實例分配單元186可(例如,在圖1的預(yù)熱池130a中)發(fā)現(xiàn)其上預(yù)加載有python運行時間的虛擬機(jī)實例,并且將虛擬機(jī)實例分配給用戶。在另一實例中,如果在用戶的請求中指定的程序代碼已加載在現(xiàn)有容器上或者加載在分配給用戶的另一虛擬機(jī)實例上(例如,在圖1的活性池140a中),那么實例分配單元186可致使所述請求在容器中或在虛擬機(jī)實例上的新容器中被處理。在一些實施方案中,如果虛擬機(jī)實例在其上加載有多個語言運行時間,那么實例分配單元186可在虛擬機(jī)實例上創(chuàng)建新容器并且基于在請求中指定的計算約束來在容器上加載適當(dāng)?shù)恼Z言運行時間。

一旦特定虛擬機(jī)實例已分配給與所述請求相關(guān)聯(lián)的用戶并且所述特定虛擬機(jī)實例上的容器已分配給所述請求,那么用戶代碼執(zhí)行單元188管理由用戶的請求指定的程序代碼的執(zhí)行。如果代碼被預(yù)加載在分配給用戶的虛擬機(jī)實例上的容器中,那么代碼在容器中簡單地執(zhí)行。如果代碼通過網(wǎng)絡(luò)存儲裝置(例如,圖1的存儲服務(wù)108)可用,那么用戶代碼執(zhí)行單元188將代碼下載到虛擬機(jī)實例上的容器中,并且一旦代碼已被下載就致使所述代碼被執(zhí)行(例如,通過與圖1的前端120通信)。

雖然實例分配單元186和用戶代碼執(zhí)行單元188在圖2中被示出為工作器管理器140的一部分,但是在其他實施方案中,實例分配單元186和用戶代碼執(zhí)行單元188的全部或一部分可由虛擬計算系統(tǒng)110的其他部件和/或另一計算裝置實現(xiàn)。例如,在本公開的某些實施方案中,與虛擬計算系統(tǒng)110通信的另一計算裝置可包括與被示出為工作器管理器140的一部分的模塊和部件類似地操作的若干模塊或部件。

在一些實施方案中,工作器管理器140還可包括除了圖2所示的那些部件之外的部件。例如,存儲器180還可包括用于管理虛擬機(jī)實例內(nèi)的容器的創(chuàng)建、準(zhǔn)備和配置的容器管理器。

現(xiàn)在轉(zhuǎn)向圖3,將描述由虛擬計算系統(tǒng)110的一個或多個部件(例如,工作器管理器140)實現(xiàn)的例程300。盡管關(guān)于工作器管理器140的實現(xiàn)描述了例程300,但是相關(guān)領(lǐng)域的技術(shù)人員將理解,替代部件可實現(xiàn)例程300,或者可由不同部件或以分布式方式實現(xiàn)一個或多個塊。

在說明性例程300的方框302處,工作器管理器140接收執(zhí)行用戶代碼的請求?;蛘?,工作器管理器140從圖1的前端120接收請求,以發(fā)現(xiàn)用于執(zhí)行與由前端120接收和處理的輸入的請求相關(guān)聯(lián)的用戶代碼的計算能力。例如,前端120可處理從用戶計算裝置102或輔助服務(wù)106接收的請求,并且在認(rèn)證用戶并確定用戶被授權(quán)訪問指定的用戶代碼之后將所述請求轉(zhuǎn)發(fā)給工作器管理器140。如上所述,請求可包括指示將要執(zhí)行的程序代碼、寫入程序代碼的語言、與請求相關(guān)聯(lián)的用戶和/或保留供執(zhí)行程序代碼之用的計算資源(例如,存儲器等)的數(shù)據(jù)或元數(shù)據(jù)。例如,請求可指定用戶代碼將要在“操作系統(tǒng)a”上使用“語言運行時間x”來執(zhí)行。在這種實例中,工作器管理器140可定位已用“操作系統(tǒng)a”和“語言運行時間x”預(yù)先配置的虛擬機(jī)實例,并將其分配給用戶。隨后,工作器管理器140可在虛擬機(jī)實例上創(chuàng)建用于在其中執(zhí)行用戶代碼的容器。

接下來,在方框304處,工作器管理器140基于請求中所指示的信息來獲取計算能力。在一些實施方案中,計算能力包括被配置來服務(wù)代碼執(zhí)行請求的容器。如本文所討論的,容器可從活性池140a或預(yù)熱池130a獲取。下文參照圖4更詳細(xì)地描述如何獲取計算能力。

在方框306處,工作器管理器140致使使用計算能力來執(zhí)行用戶代碼。例如,工作器管理器140可將分配給所述請求的容器的地址發(fā)送到前端120,以使得前端120可向所述地址代理代碼執(zhí)行請求。在一些實施方案中,地址可由工作器管理器140臨時保留,并且地址和/或容器可在指定時間段過去之后自動釋放。在一些實施方案中,地址和/或容器可在用戶代碼已在容器中完成執(zhí)行之后自動地釋放。

雖然上文已參考方框302-306描述圖3的例程300,但是本文描述的實施方案不限于此,并且可省略、修改或切換一個或多個方框,而不脫離本公開的精神。例如,可修改方框302,以使得工作器管理器140從前端120接收計算能力獲取請求。

圖4是示出用于處理執(zhí)行用戶代碼的請求的虛擬機(jī)實例管理的過程的一個實施方案的框圖。

在(1)處,虛擬計算系統(tǒng)110的前端120接收執(zhí)行或部署用戶代碼的請求。所述請求可通過用戶計算裝置102傳送。在一些實施方案中,所述請求可通過輔助服務(wù)106中的一個接收。例如,在一些實施方案中,輔助服務(wù)可適于基于與輔助服務(wù)106相關(guān)聯(lián)的事件來生成請求。包括事件觸發(fā)的輔助服務(wù)事件生成的附加實例在于2014年9月30日提交的題為programmaticeventdetectionandmessagegenerationforrequeststoexecuteprogramcode的代理人案卷號seazn.990a的美國申請?zhí)杢bd中進(jìn)行描述,所述申請的全部內(nèi)容通過引用明確地并入本文。所述請求可為執(zhí)行或部署包括在請求中的程序代碼或存儲在單獨的計算系統(tǒng)中的程序代碼的請求??墒褂冒╦ava、php、c++、python等的各種程序語言來組成用戶代碼。所述請求可包括與代碼執(zhí)行要求相關(guān)的配置信息。例如,請求可包括關(guān)于書寫程序代碼的程序語言的信息,關(guān)于執(zhí)行用戶代碼的語言運行時間和/或語言庫的信息。配置信息不需要包括關(guān)于可托管用戶代碼的虛擬機(jī)實例的任何特定信息。所述請求還可包括指定用戶代碼執(zhí)行結(jié)果/活動的報告/存儲的策略的信息。例如,所述請求可指定用戶代碼執(zhí)行的結(jié)果將被同步或異步(批處理)報告給傳送用戶代碼執(zhí)行請求的計算裝置。另外,所述請求可指定用戶代碼執(zhí)行結(jié)果將由具有或不具有結(jié)果的同步報告的輔助服務(wù)106來存儲。所述請求可包括由用戶指定或由前端關(guān)于用戶代碼的執(zhí)行確定的配置信息。配置信息可對應(yīng)于執(zhí)行用戶代碼的硬件或軟件要求。例如,配置信息可對應(yīng)于在預(yù)熱池130或活性池140a中可用的預(yù)定類型的虛擬機(jī)實例中的特定類型的選擇。虛擬機(jī)類型可基于在虛擬機(jī)內(nèi)創(chuàng)建的容器可用的硬件(例如,存儲器、處理器、存儲裝置等)和軟件(例如,操作系統(tǒng)、運行時間環(huán)境、庫等)資源的預(yù)定集合而變化。在一些實施方案中,配置信息可響應(yīng)于用戶代碼執(zhí)行請求來指定允許的延時以獲取計算能力。用于獲取計算能力的過程和策略可基于可允許的延時而變化。

在(2)處,前端120處理請求。前端120可分析請求并將請求格式化成可由虛擬計算系統(tǒng)110進(jìn)一步處理的消息。前端處理的附加實例在2014年9月30日提交的題為processingeventmessagesforuserrequeststoexecuteprogramcode的代理人案卷號seazn.991a的美國申請?zhí)杢bd中進(jìn)行描述,所述申請的全部內(nèi)容通過引用明確地并入本文。

在一些實施方案中,前端120可分析與來自用戶計算裝置102的請求相關(guān)聯(lián)的用戶代碼,并確定什么類型的配置適于執(zhí)行用戶代碼。例如,前端120可基于與用戶代碼相關(guān)聯(lián)的標(biāo)頭信息或元數(shù)據(jù)來識別關(guān)于用戶代碼的編程語言的信息。在一些其他實施方案中,前端120可將請求從用戶計算裝置102轉(zhuǎn)發(fā)到工作器管理器140,而不分析所述請求或用戶代碼。

繼續(xù)參考圖4,在(3)處,前端120向工作器管理器140發(fā)送用于用戶代碼執(zhí)行的消息。工作器管理器140基于接收的消息開始定位或獲取用于用戶代碼執(zhí)行的計算能力的過程。例如,工作器管理器140可在接收或處理請求時定位已經(jīng)在已與用戶相關(guān)聯(lián)的虛擬機(jī)實例上創(chuàng)建的容器。在另一個實施方案中,即使適合于執(zhí)行用戶代碼的容器尚未創(chuàng)建,工作器管理器140也可在接收或處理請求時定位已與用戶相關(guān)聯(lián)的實例。在另一個實施方案中,工作器管理器可從預(yù)熱池獲得已創(chuàng)建的(例如,預(yù)熱的)實例,將其與用戶相關(guān)聯(lián),并且在實例內(nèi)創(chuàng)建用于執(zhí)行用戶代碼的容器。在一些情況下,可在接收或處理用戶代碼部署的請求之前在預(yù)熱的實例內(nèi)創(chuàng)建預(yù)熱的容器。

在(4)處,工作器管理器140可獲取用于執(zhí)行或部署用戶代碼的計算能力??苫谔摂M計算系統(tǒng)110的操作策略或用戶代碼執(zhí)行請求中指定的(或由用戶代碼執(zhí)行請求暗示的)配置信息中的一個或多個來進(jìn)行獲取計算能力。工作器管理器140可基于配置信息確定資源需求,并創(chuàng)建滿足資源需求的至少一個容器。獲取計算能力的優(yōu)先級和限制可與各種因素相關(guān)聯(lián),所述因素包括響應(yīng)請求中的延時(在接收請求之后獲取計算能力的時間)、記帳約束和安全策略。在一些實施方案中,為了減少響應(yīng)請求的延時,工作器管理器140嘗試分配現(xiàn)有容器以托管用戶代碼執(zhí)行,因為創(chuàng)建新容器可能比利用現(xiàn)有容器花費更長時間。如果沒有適合于托管用戶代碼的可用的現(xiàn)有容器,那么工作器管理器140可在與用戶相關(guān)聯(lián)的活性虛擬機(jī)實例中創(chuàng)建新容器。這種活性虛擬機(jī)實例可位于活性池140a中。從預(yù)熱池130a分配新實例可能比利用活性池140a的活性實例花費更長的時間。如果沒有與用戶相關(guān)聯(lián)的可用的活性虛擬機(jī)實例,那么工作器管理器140可從預(yù)熱池130a分配新的虛擬機(jī)實例,并在其內(nèi)創(chuàng)建容器以托管用戶代碼執(zhí)行。與利用活性實例或活性實例內(nèi)的現(xiàn)有容器相比,這可能導(dǎo)致更高的延時。在一些實施方案中,可基于操作成本和記帳約束來執(zhí)行獲取計算能力。例如,可確定容器/實例的分配以節(jié)省虛擬計算的操作成本或者滿足記帳約束,而不管更高的延時。

在(4)處,工作器管理器140識別與從前端120傳送的消息內(nèi)包括的配置信息匹配的虛擬機(jī)實例。工作器管理器140可將預(yù)熱池130a中的虛擬機(jī)實例的配置設(shè)置與請求的配置信息進(jìn)行比較,以識別適合于執(zhí)行用戶代碼的匹配的虛擬機(jī)實例。在一些實施方案中,響應(yīng)于請求,工作器管理器140可識別已分配給與所述請求相關(guān)聯(lián)的同一個用戶賬戶的虛擬機(jī)實例。當(dāng)虛擬機(jī)實例的資源專門為特定用戶保留時,安全策略可允許虛擬機(jī)實例部署來自同一用戶的其他用戶代碼。因此,在檢查預(yù)熱池130a中的虛擬機(jī)實例的可用性之前,工作器管理器140可檢查托管與同一用戶相關(guān)聯(lián)的其他代碼的活性虛擬機(jī)實例的可用資源。然而,在一些實施方案中,無論是否存在具有匹配的配置信息的當(dāng)前活性的虛擬機(jī)實例,當(dāng)由請求指定時或者基于用戶代碼的需求確定時,用戶代碼可分配給新的虛擬機(jī)實例。如果工作器管理器140確定在已分配給同一用戶的虛擬機(jī)實例中沒有容量,或者沒有已分配給所述用戶的虛擬機(jī)實例,那么工作器管理器140請求來自預(yù)熱池130a的新的虛擬機(jī)實例。

另外,當(dāng)請求包括更新已部署在虛擬計算系統(tǒng)110中的用戶代碼的請求時,工作器管理器140可識別托管舊版本的用戶代碼的虛擬機(jī)實例,并且開始利用與請求相關(guān)聯(lián)的新版本的用戶代碼更新舊版本的用戶代碼的過程。在一些實施方案中,托管舊版本的用戶代碼的容器可繼續(xù)執(zhí)行舊版本的用戶代碼,直到更新版本的用戶代碼被加載到容器上。在一些實施方案中,工作器管理器140可致使容器響應(yīng)于更新用戶代碼的請求而及時或立即停止舊版本的用戶代碼的執(zhí)行。

工作器管理器140可將所識別的虛擬機(jī)實例分配給與所述請求相關(guān)聯(lián)的用戶。所分配的虛擬機(jī)實例現(xiàn)在是活性池140a而不是預(yù)熱池130a的一部分,并且將由工作器管理器140管理。出于安全目的,虛擬機(jī)實例的關(guān)聯(lián)可專為特定用戶賬戶所獨有。在一些實施方案中,為了防止與特定用戶賬戶相關(guān)聯(lián)的用戶代碼的執(zhí)行影響與其他用戶相關(guān)聯(lián)的用戶代碼的執(zhí)行,虛擬機(jī)實例可托管與特定用戶相關(guān)聯(lián)的用戶代碼,但無法托管與其他用戶相關(guān)聯(lián)的用戶代碼??赏ㄟ^修改存儲由工作器管理器140控制的虛擬機(jī)實例的信息的數(shù)據(jù)庫的數(shù)據(jù)條目來進(jìn)行虛擬機(jī)實例與特定用戶賬戶的關(guān)聯(lián)。

工作器管理器140可在被分配來執(zhí)行/部署特定用戶代碼的虛擬機(jī)實例內(nèi)創(chuàng)建和/或分配容器。虛擬機(jī)實例的資源的一部分被保留用于容器分配。工作器管理器140還可配置用于執(zhí)行/部署用戶代碼的虛擬機(jī)容器。例如,用于運行用戶代碼的語言運行時間和庫可基于與來自用戶計算裝置102的請求相關(guān)聯(lián)的配置信息而加載到虛擬機(jī)容器中。工作器管理器140可在配置有與對應(yīng)于與用戶代碼相關(guān)聯(lián)的配置信息或資源需求的軟件部件的容器上部署用戶代碼。部署的用戶代碼的實際執(zhí)行可由來自用戶裝置或單獨的計算系統(tǒng)的后續(xù)請求來開始。

在(5)處,工作器管理器140管理通過具有已被指定來執(zhí)行用戶代碼的容器的虛擬機(jī)實例的用戶代碼執(zhí)行。工作器管理器140也可與和虛擬計算系統(tǒng)110相關(guān)聯(lián)的其他部件、系統(tǒng)和服務(wù)進(jìn)行通信。例如,工作器管理器140可有助于虛擬機(jī)實例與存儲服務(wù)(例如,圖1的存儲服務(wù)108)之間的通信。此外,如上所述,工作器管理器140可管理活性池140a中的虛擬機(jī)實例的能力和/或配置。一旦用戶代碼被加載到指定的虛擬機(jī)實例的容器中,所述容器就執(zhí)行用戶代碼。在一些實施方案中,虛擬計算系統(tǒng)110適于在(例如,由前端120)接收用戶代碼之后不久開始執(zhí)行用戶代碼。時間段可被確定為開始執(zhí)行(例如,在與用戶相關(guān)聯(lián)的虛擬機(jī)實例上的容器中的)用戶代碼與接收執(zhí)行(例如,由前端接收的)用戶代碼的請求之間的時間差。虛擬計算系統(tǒng)110適于在小于預(yù)定持續(xù)時間的時間段內(nèi)開始執(zhí)行用戶代碼。在一個實施方案中,預(yù)定持續(xù)時間是500ms。在另一個實施方案中,預(yù)定持續(xù)時間是300ms。在另一個實施方案中,預(yù)定持續(xù)時間是100ms。在另一個實施方案中,預(yù)定持續(xù)時間是50ms。在另一個實施方案中,預(yù)定持續(xù)時間是10ms。在另一個實施方案中,預(yù)定持續(xù)時間可為從10ms至500ms的范圍中選擇的任何值。在一些實施方案中,如果滿足一個或多個條件,那么虛擬計算系統(tǒng)110適于在小于預(yù)定持續(xù)時間的時間段內(nèi)開始執(zhí)行用戶代碼。例如,一個或多個條件可包括以下中的任何一個:(1)在接收到請求時,用戶代碼被加載到活性池140中的容器上;(2)在接收到請求時,用戶代碼被存儲在活性池140中的實例的代碼緩存中;(3)在接收到請求時活性池140a包含分配給與所述請求相關(guān)聯(lián)的用戶的實例;或者(4)在接收到請求時預(yù)熱池130a具有處理請求的能力。執(zhí)行的結(jié)果可被輸出到用戶裝置、與用戶相關(guān)聯(lián)的存儲系統(tǒng)或者如下所述的單獨的存儲服務(wù)。例如,由容器執(zhí)行的計算或處理的結(jié)果(例如,生成存儲在存儲服務(wù)內(nèi)的圖像的縮略圖)可存儲在用戶可訪問的存儲服務(wù)108中。

繼續(xù)參考圖4,在(6)處,工作器管理器140與前端120通信以將用戶代碼執(zhí)行的結(jié)果提供給用戶計算裝置102。在(7)處,虛擬計算系統(tǒng)110(例如,前端120或工作器管理器)與用戶計算裝置102和/或或輔助服務(wù)106傳達(dá)用戶代碼執(zhí)行請求的處理結(jié)果。在一些實施方案中,結(jié)果不被傳達(dá)給用戶或服務(wù)。這類結(jié)果可由虛擬計算系統(tǒng)110存儲并使用,以用于附加處理。結(jié)果信息可用于基于所傳達(dá)的處理結(jié)果來生成操作狀態(tài)、資源使用和記帳信息的報告。

在(8)處,虛擬計算系統(tǒng)110與輔助服務(wù)106通信以提供與虛擬計算系統(tǒng)110相關(guān)聯(lián)的監(jiān)測和/或日志信息。在一些實施方案中,活動日志可由輔助服務(wù)106存儲。活動日志可用于生成與用戶的記帳通信。虛擬計算系統(tǒng)110可向監(jiān)測/日志/記帳服務(wù)107(其可為單獨的服務(wù))傳送監(jiān)測信息。監(jiān)測/日志信息可包括關(guān)于與用戶代碼執(zhí)行相關(guān)聯(lián)的活動的應(yīng)用級信息和關(guān)于虛擬計算系統(tǒng)110中的虛擬機(jī)實例的狀態(tài)和健康的系統(tǒng)級信息。監(jiān)測信息和日志信息可用于開始過程以優(yōu)化虛擬計算系統(tǒng)110中的實例/容器的庫存,包括實例/容器的創(chuàng)建、獲取、重定位、壓縮和回收??苫诟鞣N因素來進(jìn)行實例/容器庫存優(yōu)化,包括操作成本、響應(yīng)用戶代碼執(zhí)行請求的延時、安全性、系統(tǒng)可擴(kuò)展性和系統(tǒng)穩(wěn)定性。

繼續(xù)參考圖4,虛擬計算系統(tǒng)110可創(chuàng)建并管理虛擬機(jī)實例,以相對于從用戶計算裝置102接收請求來獨立地和異步地處理用戶代碼執(zhí)行請求。例如,虛擬計算系統(tǒng)110的預(yù)熱池管理器130可在接收執(zhí)行用戶代碼的請求之前在預(yù)熱池130a中準(zhǔn)備預(yù)熱的虛擬機(jī)實例。預(yù)熱池130a中的預(yù)熱的虛擬機(jī)實例未分配給特定用戶并且包含用于支持用戶代碼的執(zhí)行的軟件部件。例如,包含在預(yù)熱的虛擬機(jī)實例中的軟件部件包括至少一個運行時間和一個或多個庫。在一些實施方案中,至少一些預(yù)熱的實例可進(jìn)一步準(zhǔn)備有預(yù)熱的容器。這類預(yù)熱的容器可被配置成包含其相關(guān)聯(lián)的預(yù)熱的實例的軟件部件的副本的全部或子集。此外,虛擬計算系統(tǒng)110還可獨立于來自用戶計算裝置102的特定請求而回收虛擬機(jī)實例(例如,從活性池140a中移除虛擬機(jī)實例并在預(yù)熱池130中創(chuàng)建新的虛擬機(jī)實例)。

可獨立于特定用戶代碼執(zhí)行請求但基于與用戶代碼執(zhí)行請求相關(guān)聯(lián)的統(tǒng)計信息和歷史信息來進(jìn)行預(yù)熱池130a中的虛擬機(jī)實例的準(zhǔn)備和配置。例如,預(yù)熱池管理器130可使用這種信息來優(yōu)化在預(yù)熱池130a中維護(hù)的虛擬機(jī)實例的各種配置類型和數(shù)量。例如,預(yù)熱池管理器130可確定具有特定配置的實例在當(dāng)日特定時間期間可能處于高需求中的可能性更大。因此,預(yù)熱池管理器130可創(chuàng)建具有這種配置的更大數(shù)目的實例,并且將這些實例放置在預(yù)熱池中,以預(yù)期接收執(zhí)行與這類實例兼容的代碼的用戶請求。

虛擬計算系統(tǒng)110可獨立于來自用戶計算裝置102的特定請求并且基于虛擬機(jī)實例和/或用戶代碼的激活歷史來回收虛擬機(jī)實例。例如,工作器管理器140可監(jiān)測激活歷史并識別活性池內(nèi)的虛擬機(jī)實例,所述虛擬機(jī)實例尚未用于執(zhí)行用戶代碼超過預(yù)定時間段。隨后,工作器管理器140使所識別的虛擬機(jī)實例到用戶賬戶的分配無效。虛擬機(jī)實例的回收可基于與用戶代碼相關(guān)聯(lián)的激活消息(有時稱為觸發(fā)器)之間的時間間隔。例如,被設(shè)計來生成新照片的縮略圖的用戶代碼可能需要來自上傳新照片的存儲服務(wù)108的激活消息。當(dāng)在超過預(yù)定時間段內(nèi)未接收到這種激活消息時,為用戶賬戶保留(與其相關(guān)聯(lián))的虛擬機(jī)實例可被解除分配(未關(guān)聯(lián))。在這種情況下,保持虛擬機(jī)實例中加載的用戶代碼可能浪費保留的資源。當(dāng)這種時間段過去時,工作器管理器140可確定虛擬機(jī)實例未被利用,并且它可開始回收閑置虛擬機(jī)實例的過程。

在一些實施方案中,可分析和與虛擬機(jī)實例相關(guān)聯(lián)的其他系統(tǒng)或部件的通信事件,以確定虛擬機(jī)實例的狀態(tài)。在一些實施方案中,可分析用于存儲用戶代碼執(zhí)行的處理結(jié)果的通信事件的歷史,以確定托管用戶代碼的虛擬機(jī)實例是否被主動利用。例如,當(dāng)托管用于生成新照片的縮略圖的用戶代碼的虛擬機(jī)實例不與存儲所生成的縮略圖的存儲系統(tǒng)通信長于預(yù)定時間段時,工作器管理器140可確定虛擬機(jī)實例將不會被利用或者具有特定配置的太多實例被維護(hù)在活性池中。

在一些實施方案中,工作器管理器140可開始容器的重定位或回收,以優(yōu)化分配給特定用戶的虛擬機(jī)實例的數(shù)量。

本領(lǐng)域中的技術(shù)人員和其他人將認(rèn)識到,本公開中描述的所有功能可以在由所公開部件和移動通信裝置的一個或多個物理處理器執(zhí)行的軟件中實施。所述軟件可以永久地存儲在任何類型的非易失性存儲裝置中。

除非另外特別說明,或者在所用上下文中理解,否則諸如“能夠”、“可以”、“可能”或者“可”等等的條件語言通常意圖表示,盡管其他實施方案不包括,但某些實施方案包括某些特征、元件和/或步驟。因此,這種條件性語言通常并不意圖暗示特征、元件和/或步驟是一個或多個實施方案以任何方式所要求的,或一個或多個實施方案必定包括用于在有或沒有用戶輸入或提示的情況下決定這些特征、元件和/或步驟被包括在任何特定實施方案中或?qū)⒁谌魏翁囟▽嵤┓桨钢羞M(jìn)行的邏輯。

本文所描述和/或附圖所描繪的流程圖中的任何過程說明、元件或方框應(yīng)理解成潛在地代表包括用于實施過程中的特定邏輯功能或步驟的一個或多個可執(zhí)行指令的代碼模塊、代碼片段或代碼部分。

替代的實施包括在本文所述實施方案的范圍內(nèi),其中與本領(lǐng)域中的技術(shù)人員所理解的那樣相同,元件或功能可以刪除、不按照所示出或描述的順序執(zhí)行,包括基本上同時執(zhí)行或者逆序執(zhí)行,具體取決于所涉及的功能。將進(jìn)一步認(rèn)識到,上述數(shù)據(jù)和/或部件可假設(shè)存儲在計算機(jī)可讀介質(zhì)上并使用與存儲計算機(jī)可執(zhí)行部件的計算機(jī)可讀存儲介質(zhì)(諸如cdrom、dvdrom或網(wǎng)絡(luò)接口)相關(guān)聯(lián)的驅(qū)動機(jī)制加載到計算裝置的存儲器中。另外,所述部件和/或數(shù)據(jù)可包含在單一裝置中或者以任何方式分布。因此,通用計算裝置可以被配置成使用上述各種數(shù)據(jù)和/或部件的處理和/或執(zhí)行來實現(xiàn)本公開的過程、算法和方法。

應(yīng)強(qiáng)調(diào),可以對上述實施方案作出許多改變和修改,這些改變和修改的要素應(yīng)被理解為包含在其他可接受的實例當(dāng)中。在本文中,所有這類修改和變化意圖被包括在本公開的范圍內(nèi),并且受所附權(quán)利要求書保護(hù)。

本公開的實施方案可鑒于以下條款來描述:

1.一種用于處理在一個或多個虛擬機(jī)實例上執(zhí)行用戶代碼的請求的計算機(jī)實現(xiàn)的方法,所述方法包括:

當(dāng)由被配置有特定計算機(jī)可執(zhí)行指令的一個或多個計算裝置實現(xiàn)時,

提供多個預(yù)熱的虛擬機(jī)實例,所述預(yù)熱的虛擬機(jī)實例中的每一個都未分配給特定用戶并且包含與編程語言相關(guān)聯(lián)的軟件部件;

在提供所述多個預(yù)熱的未分配虛擬機(jī)實例之后,接收執(zhí)行用戶代碼的請求,所述請求包括與執(zhí)行所述用戶代碼相關(guān)聯(lián)的配置信息,其中所述請求在第一時間被接收;

基于所述請求的所述配置信息來從所述多個預(yù)熱的虛擬機(jī)實例中識別虛擬機(jī)實例,其中所述識別的虛擬機(jī)實例包含適于執(zhí)行所述用戶代碼的特定軟件部件;

將所述識別的虛擬機(jī)實例與和所述請求相關(guān)聯(lián)的用戶賬戶相關(guān)聯(lián);

在所述相關(guān)聯(lián)的虛擬機(jī)實例內(nèi)創(chuàng)建用于執(zhí)行所述用戶代碼的容器;

將所述特定軟件部件和所述用戶代碼加載到所述容器中;以及

開始由所述容器執(zhí)行所述用戶代碼,其中所述開始在第二時間發(fā)生,以及

其中從所述第一時間到所述第二時間的時間段小于預(yù)定持續(xù)時間。

2.如條款1所述的方法,其中所述預(yù)定持續(xù)時間是100ms。

3.如條款1所述的方法,其中創(chuàng)建所述容器還包括:

接收執(zhí)行所述用戶代碼的多個請求;

在所述識別的虛擬機(jī)實例內(nèi)創(chuàng)建多個容器,其中所述多個容器中的每一個基于所述請求的所述配置信息來配置;以及

選擇所述多個容器中的一個來執(zhí)行所述用戶代碼。

4.如條款1所述的方法,其中創(chuàng)建所述容器還包括:

接收執(zhí)行多個用戶代碼的多個請求;

在所述識別的虛擬機(jī)實例內(nèi)創(chuàng)建多個容器,其中所述多個容器中的每一個基于所述請求的配置信息來配置;以及

選擇所述多個容器中的一個來執(zhí)行所述用戶代碼。

5.如條款1所述的方法,其中創(chuàng)建所述至少一個容器還包括:

使用所述配置信息確定資源需求;以及

創(chuàng)建具有至少所述資源需求的至少一個容器。

6.如條款1所述的方法,其中所述軟件部件包括運行時間或一個或多個庫中的至少一個。

7.如條款1所述的方法,其還包括:

監(jiān)測所述識別的虛擬機(jī)實例中的所述用戶代碼的激活歷史;以及

基于所述激活歷史將所述識別的虛擬機(jī)實例與所述用戶賬戶解除關(guān)聯(lián)或者毀壞所述容器。

8.一種系統(tǒng),其包括:

計算裝置,其包括耦合到存儲器的處理器,所述存儲器包括特定指令,所述特定指令在執(zhí)行時配置所述系統(tǒng)以:

提供多個虛擬機(jī)實例,其中所述多個虛擬機(jī)實例中的每一個包含與至少一種編程語言相關(guān)聯(lián)的至少一個軟件部件;

接收執(zhí)行用戶代碼的請求,所述請求包括與所述用戶代碼相關(guān)聯(lián)的配置信息,其中所述請求在第一時間被接收;

基于所述請求的所述配置信息來從所述多個虛擬機(jī)實例識別虛擬機(jī)實例,其中所述識別的虛擬機(jī)實例包含對應(yīng)于所述配置信息的特定軟件部件;以及

基于所述配置信息在所述識別的虛擬機(jī)實例內(nèi)的容器上執(zhí)行所述用戶代碼,其中所述用戶代碼在第二時間被執(zhí)行,以及

其中從所述第一時間到所述第二時間的時間段小于預(yù)定持續(xù)時間。

9.如條款8所述的系統(tǒng),其中所述預(yù)定持續(xù)時間是100ms。

10.如條款8所述的系統(tǒng),其中所述特定指令還將所述系統(tǒng)配置來在接收執(zhí)行所述用戶代碼的所述請求之前提供所述多個虛擬機(jī)實例。

11.如條款8所述的系統(tǒng),其中所述軟件部件包括運行時間或一個或多個庫中的至少一個。

12.如條款8所述的系統(tǒng),其中所述特定指令還將所述系統(tǒng)配置來:

監(jiān)測所述識別的虛擬機(jī)實例中的所述用戶代碼的激活歷史;以及

基于所述激活歷史將所述識別的虛擬機(jī)實例與所述用戶賬戶解除關(guān)聯(lián)或者毀壞所述容器。

13.如條款8所述的系統(tǒng),其中所述識別的虛擬機(jī)實例在接收所述請求之前包括所述容器。

14.如條款13所述的系統(tǒng),其中所述容器在接收所述請求之前包括所述用戶代碼。

15.如條款13所述的系統(tǒng),其中所述特定指令還將所述系統(tǒng)配置來基于與所述請求相關(guān)聯(lián)的資源需求來選擇所述容器。

16.如條款8所述的系統(tǒng),其中所述特定指令還將所述系統(tǒng)配置來在接收到所述請求之后在所述虛擬機(jī)實例上創(chuàng)建所述容器。

17.一種存儲計算機(jī)可執(zhí)行指令的非暫時性計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可執(zhí)行指令在由計算機(jī)系統(tǒng)執(zhí)行時將所述計算機(jī)系統(tǒng)配置來執(zhí)行操作,所述操作包括:

提供多個虛擬機(jī)實例,其中所述多個虛擬機(jī)實例中的每一個包含與至少一種編程語言相關(guān)聯(lián)的至少一個軟件部件;

接收執(zhí)行用戶代碼的請求,所述請求包括與所述用戶代碼相關(guān)聯(lián)的配置信息,其中所述請求在第一時間被接收;

基于所述請求的所述配置信息來從所述多個虛擬機(jī)實例識別虛擬機(jī)實例,其中所述識別的虛擬機(jī)實例包含對應(yīng)于所述配置信息的特定軟件部件;以及

基于所述配置信息在所述識別的虛擬機(jī)實例內(nèi)的容器上執(zhí)行所述用戶代碼,其中所述用戶代碼在第二時間被執(zhí)行,以及

其中從所述第一時間到所述第二時間的時間段小于預(yù)定持續(xù)時間。

18.如條款17所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述預(yù)定持續(xù)時間是100ms。

19.如條款17所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述操作還包括在接收所述請求之前提供所述多個虛擬機(jī)實例。

20.如條款17所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述軟件部件包括運行時間或一個或多個庫中的至少一個。

21.如條款17所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述操作還包括:

監(jiān)測所述識別的虛擬機(jī)實例中的所述用戶代碼的激活歷史;以及

基于所述激活歷史將所述識別的虛擬機(jī)實例與所述用戶賬戶解除關(guān)聯(lián)或者毀壞所述容器。

22.如條款17所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述識別的虛擬機(jī)實例在接收所述請求之前包括所述容器。

23.如條款22所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述容器在接收所述請求之前包括所述用戶代碼。

24.如條款22所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述操作還包括基于與所述請求相關(guān)聯(lián)的資源需求來選擇所述容器。

25.如條款17所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述操作還包括在接收到所述請求之后在所述虛擬機(jī)實例上創(chuàng)建所述容器。

26.一種用于管理虛擬機(jī)實例的計算機(jī)實現(xiàn)的方法,所述方法包括:

提供多個虛擬機(jī)實例,其中所述多個虛擬機(jī)實例中的每一個包含與至少一種編程語言相關(guān)聯(lián)的至少一個軟件部件;

接收執(zhí)行用戶代碼的請求,所述請求包括與所述用戶代碼相關(guān)聯(lián)的配置信息,其中所述請求在第一時間被接收;

基于所述請求的所述配置信息來從所述多個虛擬機(jī)實例識別虛擬機(jī)實例,其中所述識別的虛擬機(jī)實例包含對應(yīng)于所述配置信息的特定軟件部件;

將所述識別的虛擬機(jī)實例與和所述用戶代碼相關(guān)聯(lián)的用戶賬戶相關(guān)聯(lián);以及

基于所述配置信息在所述識別的虛擬機(jī)實例內(nèi)的容器上執(zhí)行所述用戶代碼,其中所述用戶代碼在第二時間被執(zhí)行,以及

其中從所述第一時間到所述第二時間的時間段小于預(yù)定持續(xù)時間。

27.如條款26所述的方法,其中所述預(yù)定持續(xù)時間是100ms。

28.如條款26所述的方法,其中所述方法還包括在接收所述請求之前提供所述多個預(yù)熱的虛擬機(jī)實例。

29.如條款26所述的方法,其中所述軟件部件包括運行時間或一個或多個庫中的至少一個。

30.如條款26所述的方法,其還包括:

監(jiān)測所述識別的虛擬機(jī)實例中的所述用戶代碼的激活歷史;以及

基于所述激活歷史將所述識別的虛擬機(jī)實例與所述用戶賬戶解除關(guān)聯(lián)或者毀壞所述容器。

31.如條款26所述的方法,其中所述識別的虛擬機(jī)實例在接收所述請求之前包括所述容器。

32.如條款31所述的方法,其中所述容器在接收所述請求之前包括所述用戶代碼。

33.如條款31所述的方法,其還包括基于與所述請求相關(guān)聯(lián)的資源需求來選擇所述容器。

34.如條款26所述的方法,其還包括在接收到所述請求之后在所述虛擬機(jī)實例上創(chuàng)建所述容器。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
防城港市| 怀来县| 黎川县| 夏邑县| 莒南县| 富锦市| 布拖县| 江川县| 浮山县| 滨州市| 含山县| 长宁区| 靖边县| 鄂托克前旗| 灌云县| 德格县| 临泽县| 新巴尔虎右旗| 武乡县| 普格县| 赤水市| 北宁市| 石首市| 永昌县| 太和县| 康保县| 额敏县| 霍州市| 通河县| 荆州市| 临夏市| 台北县| 彭州市| 靖江市| 边坝县| 丰宁| 疏勒县| 门头沟区| 邓州市| 新昌县| 永年县|