亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

動(dòng)態(tài)代碼部署和版本化的制作方法

文檔序號(hào):11635153閱讀:237來源:國(guó)知局
動(dòng)態(tài)代碼部署和版本化的制造方法與工藝

本申請(qǐng)的申請(qǐng)人在2014年9月30日同時(shí)提交以下美國(guó)專利申請(qǐng):

以上提及申請(qǐng)的的公開內(nèi)容均以引用的方式整體并入本文。

背景

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

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

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

附圖簡(jiǎn)述

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

圖1是描繪根據(jù)示例性方面的用于提供低延時(shí)計(jì)算能力的說明性環(huán)境的框圖;

圖2-圖5是例示根據(jù)示例性方面的示例性版本化方案的框圖;

圖6描繪根據(jù)示例性方面的提供用于管理虛擬計(jì)算系統(tǒng)上的代碼部署的版本化和部署管理器的計(jì)算裝置的總體架構(gòu);

圖7是流程圖,其例示根據(jù)示例性方面的由部署管理器實(shí)現(xiàn)的示例性代碼部署例程;

詳述

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

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

根據(jù)本公開的方面,通過響應(yīng)于接收代碼執(zhí)行請(qǐng)求而動(dòng)態(tài)部署代碼,可顯著減小與執(zhí)行代碼(例如,實(shí)例和語言運(yùn)行時(shí)間啟動(dòng)時(shí)間)相關(guān)聯(lián)的延遲(有時(shí)稱為延時(shí))。

一般描述地,本公開的方面涉及獲取用戶代碼以及將所述用戶代碼部署到虛擬計(jì)算系統(tǒng)(例如,內(nèi)部存儲(chǔ)裝置、虛擬機(jī)實(shí)例和/或其中的容器)上。確切地,公開了有助于管理虛擬機(jī)算系統(tǒng)內(nèi)的用戶代碼的系統(tǒng)和方法。虛擬計(jì)算系統(tǒng)維持其上加載有一個(gè)或多個(gè)軟件部件(例如,操作系統(tǒng)、語言運(yùn)行時(shí)間、庫等)的虛擬機(jī)實(shí)例池。所述池中的虛擬機(jī)實(shí)例可被指派以服務(wù)用戶請(qǐng)求以執(zhí)行程度代碼。程序代碼可在創(chuàng)建在虛擬機(jī)實(shí)例上的隔離容器中執(zhí)行。因?yàn)樗龀刂械奶摂M機(jī)實(shí)例已經(jīng)由特定操作系統(tǒng)和語言運(yùn)行時(shí)間啟動(dòng)并加載接收請(qǐng)求的時(shí)間,顯著減小與找出可處理請(qǐng)求(例如,通過在創(chuàng)建在虛擬機(jī)實(shí)例上的一個(gè)或多個(gè)容器中執(zhí)行用戶代碼)的計(jì)算能力相關(guān)聯(lián)的延遲。

在另一個(gè)方面中,虛擬計(jì)算系統(tǒng)可確定與輸入請(qǐng)求相關(guān)聯(lián)的用戶代碼是已經(jīng)被加載到虛擬計(jì)算系統(tǒng)之上的更新版本的代碼。基于輸入請(qǐng)求的性質(zhì)以及虛擬計(jì)算系統(tǒng)的狀態(tài),虛擬計(jì)算系統(tǒng)可確定代碼應(yīng)被放置的地點(diǎn)以及應(yīng)該用來服務(wù)所述請(qǐng)求的代碼版本。

本公開的具體實(shí)施方案和示例性應(yīng)用現(xiàn)在將參考附圖進(jìn)行描述。這些實(shí)施方案和示例性應(yīng)用意欲例示而不是限制本公開。

參考圖1,將描述例示虛擬環(huán)境100的實(shí)施方案的框圖。圖1所示的實(shí)例包括虛擬環(huán)境100,其中用戶計(jì)算裝置102的用戶(例如,開發(fā)者等)可使用由虛擬計(jì)算系統(tǒng)110提供的虛擬計(jì)算資源運(yùn)行各種程序代碼。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在一些實(shí)施方案中,預(yù)熱池130a中的虛擬機(jī)實(shí)例可用來服務(wù)任何用戶的請(qǐng)求。在一個(gè)實(shí)施方案中,預(yù)熱池130a中的所有虛擬機(jī)實(shí)例以相同或基本類似的方式配置。在另一個(gè)實(shí)施方案中,預(yù)熱池130a中的虛擬機(jī)實(shí)例可以不同方式被配置來符合不同用戶的需求。例如,虛擬機(jī)實(shí)例可具有不同的操作系統(tǒng)、不同的語言運(yùn)行時(shí)間和/或其上加載的不同的庫。在又一個(gè)實(shí)施方案中,預(yù)熱池130a中的虛擬機(jī)實(shí)例可以(例如,與相同的os、語言運(yùn)行時(shí)間和/或庫)相同或基本類似的方式配置,但是那些實(shí)例中的一些可具有不同的容器配置。例如,兩個(gè)實(shí)例可具有用于python和ruby兩者的運(yùn)行時(shí)間,但一個(gè)實(shí)例可具有配置來運(yùn)行python代碼的容器,并且另一個(gè)實(shí)例可具有配置來運(yùn)行ruby代碼的容器。在一些實(shí)施方案中,提供多個(gè)預(yù)熱池130a,其每個(gè)具有相同配置的虛擬機(jī)實(shí)例。

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

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

在圖1例示的實(shí)例中,用戶代碼在被稱為容器的隔離的計(jì)算系統(tǒng)中執(zhí)行。容器是使用所述實(shí)例上可獲得的資源在虛擬機(jī)實(shí)例內(nèi)創(chuàng)建的邏輯單元。例如,工作器管理器140可基于執(zhí)行用戶代碼的請(qǐng)求中指定的信息創(chuàng)建新的容器或者將現(xiàn)有容器定位在活性池140a中的實(shí)例中的一個(gè)中并且將所述容器分配給請(qǐng)求以便處理與所述請(qǐng)求相關(guān)聯(lián)的用戶代碼的執(zhí)行。在一個(gè)實(shí)施方案中,此類容器被實(shí)現(xiàn)為linux容器。活性池140a中的虛擬機(jī)實(shí)例可具有其上創(chuàng)建的一個(gè)或多個(gè)容器并且具有其上加載的(例如,容器中的一個(gè)中或者實(shí)例的本地緩存中)與用戶相關(guān)聯(lián)的一個(gè)或多個(gè)程序代碼。每個(gè)容器可具有其中可獲得的憑證信息,以使得在容器上執(zhí)行的用戶代碼能夠訪問允許它們?cè)L問的任何對(duì)應(yīng)的憑證信息。

如圖1所示,實(shí)例可具有操作系統(tǒng)(os)、語言運(yùn)行時(shí)間和容器。容器可具有os和語言運(yùn)行時(shí)間以及其上加載的用戶代碼的單獨(dú)副本。在圖1的實(shí)例中,由工作器管理器140管理的活性池140a包括實(shí)例156、158。實(shí)例156具有容器156a、156b。容器156a具有os156a-1、運(yùn)行時(shí)間156a-2和其中加載的代碼156a-3。在所描繪的實(shí)例中,容器156a具有其自己的os、運(yùn)行時(shí)間和其中加載的代碼。在一個(gè)實(shí)施方案中,os156a-1(例如,其內(nèi)核)、運(yùn)行時(shí)間156a-2和/或代碼156a-3在容器156a、156b(以及圖1未例示的任何其他容器)之間共享。在另一個(gè)實(shí)施方案中,os156a-1(例如,在內(nèi)核外部運(yùn)行的任何代碼)、運(yùn)行時(shí)間156a-2和/或代碼156a-3是創(chuàng)建用于容器156a的獨(dú)立副本并且不與實(shí)例156上的其他容器共享。在又一個(gè)實(shí)施方案中,os156a-1、運(yùn)行時(shí)間156a-2和/或代碼156a-3中的一些部分在實(shí)例156上的容器之間共享,并且它們的其他部分是容器156a專用的獨(dú)立副本。實(shí)例158包括容器158a、158b以及用于存儲(chǔ)在實(shí)例158上的容器中的任一個(gè)中執(zhí)行的代碼的代碼緩存159c。

在圖1的實(shí)例中,圖1所描繪的容器的大小可與容器的實(shí)際大小成比例。例如,容器156a可比實(shí)例156上的容器156b占用更大的空間。類似地,容器158a、158b可具有相等的大小。實(shí)例158中所示的帶有標(biāo)號(hào)“c”的虛線框指示實(shí)例上可用來創(chuàng)建新的容器的剩余空間。在一些實(shí)施方案中,容器的大小可以是64mb或其任何倍數(shù)。在其他實(shí)施方案中,容器的大小可以是小于或等于容器創(chuàng)建在其中的實(shí)例的大小的任何任意大小。在一些實(shí)施方案中,容器的大小可以是小于、等于或大于容器創(chuàng)建在其中的實(shí)例的大小的任何任意大小。根據(jù)可超過的容器大小多少,可基于可利用所述那些容器超過實(shí)例所提供的容量的可能性來確定實(shí)例的大小。

盡管容器156b、158a內(nèi)的部件在圖1的實(shí)例中未例示,但這些容器中的每一個(gè)可具有不同的操作系統(tǒng)、語言運(yùn)行時(shí)間、庫和/或用戶代碼。在一些實(shí)施方案中,實(shí)例可具有其上加載的用戶代碼(例如,在實(shí)例水平的緩存諸如代碼緩存159c中),并且那些實(shí)例內(nèi)的容器還可具有其中(例如,容器156a)加載的用戶代碼。在一些實(shí)施方案中,工作器管理器140可維持活性池140a中的實(shí)例列表。實(shí)例列表可進(jìn)一步指定實(shí)例的配置(例如,os、運(yùn)行時(shí)間、容器等)。在一些實(shí)施方案中,工作器管理器140可能夠訪問預(yù)熱池130a中的實(shí)例列表(例如,包括實(shí)例的數(shù)目和類型)。在其他實(shí)施方案中,工作器管理器140從預(yù)熱池管理器130請(qǐng)求計(jì)算能力而無需了解預(yù)熱池130a中的虛擬機(jī)實(shí)例。

在前端120已經(jīng)成功地處理請(qǐng)求之后,工作器管理器140能夠服務(wù)在虛擬計(jì)算系統(tǒng)110上執(zhí)行用戶代碼的請(qǐng)求。例如,如果活性池140a中存在具有含加載在其中的相同用戶代碼(例如,容器156a所示的代碼156a-3)的容器的特定虛擬機(jī)實(shí)例,那么工作器管理器140可將容器分配給請(qǐng)求并且致使所述用戶代碼在容器中執(zhí)行?;蛘?,如果用戶代碼在虛擬機(jī)實(shí)例中的一個(gè)的本地緩存中(例如,存儲(chǔ)在實(shí)例158的代碼緩存159c中但不屬于任何單獨(dú)容器)可獲得,那么工作器管理器140可在這種實(shí)例上創(chuàng)建新的容器、將所述容器分配給請(qǐng)求、并且致使所述用戶代碼加載并且在容器中執(zhí)行。

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

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

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

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

當(dāng)工作器管理器140將虛擬機(jī)實(shí)例中的一個(gè)定位在可用來服務(wù)用戶代碼執(zhí)行請(qǐng)求的預(yù)熱池130a中時(shí),預(yù)熱池管理器130或工作器管理器140從預(yù)熱池130a中取出實(shí)例并且將其分配給與請(qǐng)求相關(guān)聯(lián)的用戶。所分配的虛擬機(jī)實(shí)例被從預(yù)熱池130a取出并且放置在活性池140a中。在一些實(shí)施方案中,當(dāng)虛擬機(jī)實(shí)例已經(jīng)被分配給特定用戶時(shí),相同的虛擬機(jī)實(shí)例不能用來服務(wù)任何其他用戶的請(qǐng)求。這通過防止可能的用戶資源的共混而為用戶提供了安全效益?;蛘?,在一些實(shí)施方案中,屬于不同用戶(或者分配給與不同用戶相關(guān)聯(lián)的請(qǐng)求)的多個(gè)容器可共同存在于單個(gè)虛擬機(jī)實(shí)例上。這種方式可提高可用計(jì)算能力的利用率。在一些實(shí)施方案中,虛擬計(jì)算系統(tǒng)110可維持獨(dú)立的緩存,用戶代碼被存儲(chǔ)在所述獨(dú)立的緩存中以便充當(dāng)虛擬機(jī)實(shí)例的本地緩存與基于web的網(wǎng)絡(luò)存儲(chǔ)裝置(例如,可經(jīng)由網(wǎng)絡(luò)104訪問)之間的中間水平的緩存系統(tǒng)。

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

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

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

版本化和部署管理器150管理用戶代碼在虛擬計(jì)算系統(tǒng)110上的部署。例如,版本化和部署管理器150可與前端120、預(yù)熱池管理器130、工作器管理器140和/或內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)160通信以便管理用戶代碼在任何內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)、實(shí)例水平代碼緩存和/或虛擬計(jì)算系統(tǒng)110上的容器上的部署。盡管版本化和部署管理器150被例示為虛擬計(jì)算系統(tǒng)110內(nèi)的不同部件,但版本化和部署管理器150的部分或所有功能可由前端120、預(yù)熱池管理器130、工作器管理器140和/或內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)160執(zhí)行。例如,版本化和部署管理器150可整個(gè)被實(shí)現(xiàn)在虛擬計(jì)算系統(tǒng)110的其他部件中的一個(gè)內(nèi)或者以分布式方式跨虛擬計(jì)算系統(tǒng)110的其他部件實(shí)現(xiàn)。在圖1的實(shí)例中,版本化和部署管理器150包括代碼部署數(shù)據(jù)150a。代碼部署數(shù)據(jù)150a可包括有關(guān)輸入請(qǐng)求的歷史的數(shù)據(jù)、在虛擬計(jì)算系統(tǒng)110上執(zhí)行的用戶代碼的版本、以及可由版本化和部署管理器150使用來調(diào)整和/或優(yōu)化與輸入代碼執(zhí)行請(qǐng)求相關(guān)聯(lián)的用戶代碼的部署的任何其他度量。代碼部署數(shù)據(jù)150a還可包括由用戶指定或者由版本化和部署管理器150確定用于將它們的代碼(例如,版本化偏好等)部署在虛擬計(jì)算系統(tǒng)110上的任何管理策略。

貫穿用戶代碼的壽命周期,可對(duì)代碼作出各種更新。在一些實(shí)施方案中,版本化和部署管理器150維持在虛擬計(jì)算系統(tǒng)110上執(zhí)行的所有用戶代碼的列表,并且當(dāng)版本化和部署管理器150確定用戶代碼中的一個(gè)或多個(gè)已經(jīng)被更新時(shí),版本化和部署管理器150致使已更新用戶代碼(而不是其更老的版本)結(jié)合由虛擬計(jì)算系統(tǒng)110接收的后續(xù)代碼執(zhí)行請(qǐng)求使用。例如,當(dāng)用戶使用一個(gè)api更新特定用戶代碼并且使用另一個(gè)api作出與所述用戶代碼相關(guān)聯(lián)的請(qǐng)求時(shí),虛擬計(jì)算系統(tǒng)110可以編程方式確定應(yīng)何時(shí)用新版本處理與用戶代碼相關(guān)聯(lián)的請(qǐng)求(例如,基于新版本的大小、活性池130a中更老版本的可獲得性等)。在一些實(shí)施方案中,請(qǐng)求可包括與請(qǐng)求相關(guān)聯(lián)的用戶代碼已經(jīng)被更新的指示。例如,用戶可指定代碼已經(jīng)被更新。在另一個(gè)實(shí)例中,用戶可指定他或她希望使用的代碼的版本,并且版本化和部署管理器150可針對(duì)每個(gè)請(qǐng)求確定由用戶指定的版本是否不同于可能將在虛擬計(jì)算系統(tǒng)110上運(yùn)行的代碼的一個(gè)或多個(gè)版本。在又一個(gè)實(shí)例中,請(qǐng)求可包括代碼所唯一的標(biāo)識(shí)符(例如,創(chuàng)建日期、修改日期、散列值等)。在其他實(shí)施方案中,版本化和部署管理器150可基于連同請(qǐng)求一起接收的用戶代碼自動(dòng)確定是否已經(jīng)對(duì)用戶代碼進(jìn)行任何更新。例如,版本化和部署管理器150可計(jì)算代碼的散列值或校驗(yàn)和并且確定代碼是否不同于可能將在虛擬計(jì)算系統(tǒng)110上運(yùn)行的代碼的一個(gè)或多個(gè)版本。

在一些實(shí)施方案中,版本化和部署管理器150可使用代碼的更老版本致使在用戶代碼已經(jīng)被更新之后接收的請(qǐng)求中的一個(gè)或多個(gè)被服務(wù)。例如,當(dāng)檢測(cè)到新版本的用戶代碼時(shí),版本化和部署管理器150可允許在執(zhí)行更老版本的用戶代碼中途的任何容器在將新版本加載到那些容器之上之前結(jié)束。在一些實(shí)施方案中,版本化和部署管理器150允許在將新版本下載到內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)、特定實(shí)例的代碼緩存和/或容器上的同時(shí)使用更老版本的代碼。通過在下載新版本的同時(shí)使用更老版本的代碼,由于變化所導(dǎo)致的任何延時(shí)增加可通過執(zhí)行請(qǐng)求來覆蓋新版本(例如,最新糾正的/請(qǐng)求版本)的獲得而得以避免。在一些實(shí)施方案中,版本化和部署管理器150可以立即開始將新版本下載到其上加載有更老版本的那些容器上(或在創(chuàng)建了在其上加載有更老版本的那些容器創(chuàng)建所在的實(shí)例上的新容器上),在其他實(shí)施方案中,版本化和部署管理器150可在那些容器變得閑置之后(例如,當(dāng)前不執(zhí)行任何用戶代碼)將新版本下載其上加載有更老版本的那些容器之上(或者下載到創(chuàng)建在其上加載有更老版本的那些容器創(chuàng)建所在的實(shí)例上的新容器之上)。在一些實(shí)施方案中,版本化和部署管理器150可確定其下載與特定請(qǐng)求相關(guān)聯(lián)的新版本所花費(fèi)的時(shí)間,并且在下載時(shí)間超過閾值時(shí)決定使用更老版本服務(wù)所述特定請(qǐng)求。在一些實(shí)施方案中,版本化和部署管理器150可確定正接收的與代碼相關(guān)聯(lián)的請(qǐng)求的數(shù)目,并且在一個(gè)或多個(gè)容器已經(jīng)加載更老版本、以及在沒有足夠容器加載更新的版本來服務(wù)所有請(qǐng)求時(shí)決定使用所述更老版本服務(wù)所述請(qǐng)求中的一個(gè)或多個(gè)。

在一些實(shí)施方案中,版本化和部署管理器150基于用戶請(qǐng)求確定應(yīng)多快地將更老版本的代碼從虛擬計(jì)算系統(tǒng)110移除。例如,與代碼執(zhí)行請(qǐng)求相關(guān)聯(lián)的用戶可指示更新是次要的并且用戶將偏好盡可能低的延時(shí)。在這種實(shí)例中,版本化和部署管理器150可保持運(yùn)行更老版本的代碼并且逐漸分階段進(jìn)入更新的版本中(例如,當(dāng)運(yùn)行更老版本的實(shí)例已經(jīng)全部被丟棄或者以其他方式不可用或者不具有處理與代碼相關(guān)聯(lián)的所有輸入請(qǐng)求的足夠能力時(shí))。在另一個(gè)實(shí)例中,用戶可指示更老的版本具有安全漏洞,所述安全漏洞泄露客戶的信用卡信息并且所有先前版本的代碼應(yīng)被立即終止。在這種實(shí)例中,版本化和部署管理器150可停止和/或終止運(yùn)行更老版本的代碼的任何容器并且立即開始使用更新的版本。

在一些實(shí)施方案中,版本化和部署管理器150基于由虛擬計(jì)算系統(tǒng)110接收的請(qǐng)求量的歷史可將在虛擬計(jì)算系統(tǒng)110上足夠頻繁地運(yùn)行的程序代碼先行加載到活性池140a中的一個(gè)或多個(gè)容器之上。在一些實(shí)施方案中,如果代碼預(yù)期以循環(huán)方式被執(zhí)行,那么版本化和部署管理器150致使某些代碼維持在容器和/或?qū)嵗?。例如,如果版本化和部署管理?50確定虛擬計(jì)算系統(tǒng)110在7pm與8pm小時(shí)之間接收請(qǐng)求的90%特定代碼,那么版本化和部署管理器150可致使所述特定代碼甚至在數(shù)小時(shí)不活動(dòng)之后仍維持在容器中。在一些實(shí)施方案中,當(dāng)版本化和部署管理器150檢測(cè)到新版本時(shí),版本化和部署管理器150可將新版本先行加載到活性池140a或預(yù)熱池130a中的一個(gè)或多個(gè)容器之上,即使在接收到與新版本相關(guān)聯(lián)的任何請(qǐng)求之前。

在圖1的實(shí)例中,版本化和部署管理器150維持用來由一個(gè)或多個(gè)實(shí)例訪問的數(shù)據(jù)存儲(chǔ)區(qū)的內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)160。例如,版本化和部署管理器150可將用戶代碼存儲(chǔ)到內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)160之上,以使得用戶代碼可在多個(gè)實(shí)例之間共享。在一些實(shí)施方案中,存儲(chǔ)在內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)160上的與此類多個(gè)實(shí)例(例如,在創(chuàng)建在此類實(shí)例上的容器中執(zhí)行的用戶代碼)相關(guān)的數(shù)據(jù)保持在內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)160上以供即使在特定實(shí)例被關(guān)閉之后由其他實(shí)例使用。在一個(gè)實(shí)例中,將代碼從內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)160下載到容器之上比將相同代碼從虛擬計(jì)算系統(tǒng)110外部的數(shù)據(jù)存儲(chǔ)區(qū)(例如,存儲(chǔ)服務(wù)108)下載到容器之上快超過10倍。在一些實(shí)施方案中,內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)160被分成隔離容器(其可在此類容器之間提供額外的安全性),并且對(duì)每個(gè)容器的訪問權(quán)被限制成與其相關(guān)聯(lián)的一個(gè)或多個(gè)實(shí)例。

版本化和部署管理器150可包括代碼部署單元,用于分析由虛擬計(jì)算系統(tǒng)110接收的輸入代碼執(zhí)行請(qǐng)求以及確定應(yīng)獲取并部署用戶代碼的地點(diǎn)和方式。版本化和部署管理器150的示例性配置在以下參考圖6更詳細(xì)地描述。

參考圖2-圖5,將描述在用戶代碼已經(jīng)被更新之后用于處理代碼執(zhí)行請(qǐng)求的示例性版本化方案。在圖2的實(shí)例中,存儲(chǔ)服務(wù)106具有其上加載的代碼(1)108b(“代碼(1)”),并且實(shí)例158具有代碼緩存158c,其上加載代碼(1),以及正忙于執(zhí)行代碼(1)108b的四個(gè)容器。實(shí)例158中所示的帶有標(biāo)號(hào)“c”的虛線框指示實(shí)例上可用來創(chuàng)建新的容器的剩余空間。

在圖3中,先前存儲(chǔ)在存儲(chǔ)服務(wù)108上的代碼(1)已經(jīng)被更新為代碼(2)108c(“代碼(2)”)。圖3還示出容器中的一個(gè)已變得閑置,并且另外三個(gè)容器仍忙于執(zhí)行代碼(1)(例如,和與代碼(1)相關(guān)聯(lián)的現(xiàn)有請(qǐng)求或者與代碼(2)相關(guān)聯(lián)的新請(qǐng)求有關(guān))。例如,三個(gè)容器即使在代碼已經(jīng)被更新為代碼(2)之后仍會(huì)執(zhí)行現(xiàn)已過時(shí)的代碼(1),例如以便減小與服務(wù)請(qǐng)求相關(guān)聯(lián)的延時(shí)。版本化和部署管理器150在此時(shí)可已經(jīng)啟動(dòng)代碼(2)的下載。

在圖4中,代碼(2)已經(jīng)完成下載到代碼緩存159c之上。代碼(2)還可被加載到先前閑置的容器和兩個(gè)新容器之上。前三個(gè)容器仍執(zhí)行代碼(1)(例如,使用其上加載的代碼(1)服務(wù)與代碼(2)相關(guān)聯(lián)的新請(qǐng)求)。

圖5例示所有容器已經(jīng)被切換到代碼(2)并且運(yùn)行與輸入代碼執(zhí)行請(qǐng)求有關(guān)的代碼(2)之后的配置。在圖5中,在已經(jīng)確定(例如,基于自代碼(1)被更新流逝的時(shí)間、或者基于最終停止代碼(1)的用戶指示)代碼(1)不再需要之后,代碼(1)還例如由版本化和部署管理器150從代碼緩存159c移除。在一些實(shí)施方案中,在代碼(2)已經(jīng)被完全引入之后,假設(shè)輸入代碼執(zhí)行請(qǐng)求的水平不會(huì)改變,相同數(shù)目的容器(例如,圖2-圖5的實(shí)例中為四個(gè))可能夠處理與特定代碼相關(guān)聯(lián)的輸入代碼執(zhí)行請(qǐng)求,而不管所使用特定代碼的版本。

因此,通過即使在代碼已經(jīng)被更新之后使用更老版本的代碼繼續(xù)服務(wù)輸入代碼執(zhí)行請(qǐng)求,其上加載有所述更老版本的代碼的現(xiàn)有容器可被利用來減小與處理代碼執(zhí)行請(qǐng)求相關(guān)聯(lián)的延時(shí)。

圖6描繪管理用戶代碼在虛擬計(jì)算系統(tǒng)110中的部署的計(jì)算系統(tǒng)(稱為版本化和部署管理器150)的總體架構(gòu)。圖6所描繪的版本化和部署管理器150的總體架構(gòu)包括可用來實(shí)現(xiàn)本公開的方面的計(jì)算機(jī)硬件和軟件模塊的布置。版本化和部署管理器150可包括比圖6所示的那些更多(或更少)的元件。然而,為了提供令人能夠?qū)崿F(xiàn)的公開,沒有必要示出所有這些總體常規(guī)的元件。如圖所示,版本化和部署管理器150包括處理單元190、網(wǎng)絡(luò)接口192、計(jì)算機(jī)可讀介質(zhì)驅(qū)動(dòng)器194、輸入/輸出裝置接口196,它們都可借助通信總線彼此通信。網(wǎng)絡(luò)接口192可提供到一個(gè)或多個(gè)網(wǎng)絡(luò)或計(jì)算系統(tǒng)的連接性。處理單元190因此可通過網(wǎng)絡(luò)104從其他計(jì)算系統(tǒng)或服務(wù)接收信息和指令。處理單元190還可與存儲(chǔ)器180進(jìn)行往返通信并且進(jìn)一步通過輸入/輸出裝置接口196向任選的顯示器(未示出)提供輸出信息。輸入/輸出裝置接口196還可從任選的輸入裝置(未示出)接受輸入。

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

除了和/或組合用戶界面單元182,存儲(chǔ)器180可包括可由處理單元190執(zhí)行的代碼部署單元186。在一個(gè)實(shí)施方案中,用戶界面單元182和代碼部署單元186單獨(dú)地或共同地實(shí)現(xiàn)本公開的各個(gè)方面,例如,分析由虛擬計(jì)算系統(tǒng)110接收的輸入代碼執(zhí)行請(qǐng)求、確定應(yīng)獲取并部署用戶代碼的地點(diǎn)和方式等,如以下進(jìn)一步描述。

代碼部署單元186分析由虛擬計(jì)算系統(tǒng)110接收的輸入代碼執(zhí)行請(qǐng)求。例如,代碼部署單元186可確定與輸入請(qǐng)求相關(guān)聯(lián)的用戶代碼是否是加載在虛擬計(jì)算系統(tǒng)110的容器中的一個(gè)或多個(gè)上的更新版本的代碼。基于輸入請(qǐng)求的性質(zhì)以及虛擬計(jì)算系統(tǒng)110的狀態(tài),代碼部署單元186確定代碼應(yīng)被放置的地點(diǎn)以及哪個(gè)代碼應(yīng)該用來服務(wù)哪個(gè)請(qǐng)求。

雖然代碼部署單元186在圖6中被示出為版本化和部署管理器150的一部分,但是在其他實(shí)施方案中,代碼部署單元186的所有或一部分可由虛擬計(jì)算系統(tǒng)110的其他部件和/或另一個(gè)計(jì)算裝置實(shí)現(xiàn)。例如,在本公開的某些實(shí)施方案中,與虛擬計(jì)算系統(tǒng)110通信的另一個(gè)計(jì)算裝置可包括與例示為版本化和部署管理器150的一部分的模塊和部件類似地操作的若干模塊或部件。

現(xiàn)在轉(zhuǎn)向圖7,將描述由虛擬計(jì)算系統(tǒng)110的一個(gè)或多個(gè)部件(例如,版本化和部署管理器150)實(shí)現(xiàn)的例程700。盡管例程700相對(duì)于由版本化和部署管理器150進(jìn)行的實(shí)現(xiàn)進(jìn)行描述,但相關(guān)領(lǐng)域的技術(shù)人員將了解替代的部件可實(shí)現(xiàn)例程700或者框中的一個(gè)或多個(gè)可由不同部件或以分布式方式來實(shí)現(xiàn)。

在說明性的例程700的框702處,版本化和部署管理器150接收與用戶代碼相關(guān)聯(lián)的代碼執(zhí)行請(qǐng)求。例如,版本化和部署管理器150可在前端已經(jīng)對(duì)請(qǐng)求執(zhí)行任何初始處理之后從前端120接收請(qǐng)求。如以上所論述的,請(qǐng)求可指定在虛擬計(jì)算系統(tǒng)110上執(zhí)行的代碼,以及任何操作條件諸如用于處理請(qǐng)求的計(jì)算能力的量、請(qǐng)求的類型(例如,http對(duì)比觸發(fā)事件)、請(qǐng)求的超時(shí)(例如,請(qǐng)求在其后可終止的閾值時(shí)間)、安全策略(例如,可控制預(yù)熱池130a中的哪些實(shí)例可由哪個(gè)用戶使用)等。

在框704處,版本化和部署管理器150檢測(cè)與請(qǐng)求相關(guān)聯(lián)的代碼是已經(jīng)被加載到虛擬計(jì)算系統(tǒng)110之上的已更新版本的代碼。例如,一個(gè)或多個(gè)容器可具有與其上加載的請(qǐng)求相關(guān)聯(lián)的更老版本的代碼。

在框706處,版本化和部署管理器150啟動(dòng)將已更新版本的代碼下載到虛擬計(jì)算系統(tǒng)110之上。例如,版本化和部署管理器150致使已更新版本的代碼下載到虛擬計(jì)算系統(tǒng)110的內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)(例如,圖1的內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)160)、實(shí)例中的一個(gè)上的代碼緩存(例如,圖1的代碼緩存158c)、或者創(chuàng)建在虛擬計(jì)算系統(tǒng)110上的一個(gè)或多個(gè)容器之上。

在框708處,版本化和部署管理器150致使與已更新版本的代碼相關(guān)聯(lián)的代碼執(zhí)行請(qǐng)求由在代碼執(zhí)行請(qǐng)求在框702處被接收之前先前加載在容器中的一個(gè)上的更老版本的代碼進(jìn)行處理。

雖然以上已經(jīng)參考框702-708描述圖7的例程700,本文所描述的實(shí)施方案并不被如此限制,并且可在不脫離本公開的精神的情況下添加、省略、修改或切換一個(gè)或多個(gè)框。例如,例程700還可包括框710,在所述框710中版本化和部署管理器150致使與已更新版本的代碼相關(guān)聯(lián)的后續(xù)代碼執(zhí)行請(qǐng)求由在框706啟動(dòng)的下載已經(jīng)完成之后加載到容器中的一個(gè)上的已更新版本的代碼進(jìn)行處理。

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

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

在此所描述和/或附圖中描繪的流程圖中的任何過程說明、元素或框應(yīng)當(dāng)被理解成潛在地代表代碼模塊、代碼片段、或代碼的部分,其包括用于在過程中實(shí)現(xiàn)特定邏輯功能或步驟的一個(gè)或多個(gè)可執(zhí)行指令。替代的實(shí)施包括在本文所述實(shí)施方案的范圍內(nèi),其中與本領(lǐng)域中的技術(shù)人員所理解的那樣相同,元素或功能可以刪除、不按照所示出或描述的順序執(zhí)行,包括基本上同時(shí)執(zhí)行或者逆序執(zhí)行,具體取決于所涉及的功能。將進(jìn)一步了解,上述數(shù)據(jù)和/或部件可存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上并使用與存儲(chǔ)計(jì)算機(jī)可執(zhí)行部件的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(諸如cd-rom、dvd-rom或網(wǎng)絡(luò)接口)相關(guān)聯(lián)的驅(qū)動(dòng)機(jī)構(gòu)加載到計(jì)算裝置的存儲(chǔ)器中。進(jìn)一步地,部件和/或數(shù)據(jù)可包含在單個(gè)裝置中或者以任何方式分布。因此,通用計(jì)算裝置可被配置來使用上述各種數(shù)據(jù)和/或部件的處理和/或執(zhí)行來實(shí)現(xiàn)本公開的過程、算法和方法。

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

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

1.一種用于從虛擬計(jì)算群提供低延時(shí)計(jì)算能力的系統(tǒng),所述系統(tǒng)包括:

電子數(shù)據(jù)存儲(chǔ)區(qū),其被配置來存儲(chǔ)至少用戶的程序代碼;以及

虛擬計(jì)算系統(tǒng),其包括執(zhí)行特定計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)硬件計(jì)算裝置,所述虛擬計(jì)算系統(tǒng)與所述數(shù)據(jù)存儲(chǔ)區(qū)通信,并且被配置來至少:

維持一個(gè)或多個(gè)物理計(jì)算裝置上的多個(gè)虛擬機(jī)實(shí)例,其中所述多個(gè)虛擬機(jī)實(shí)例包括:

預(yù)熱池,其包括虛擬機(jī)實(shí)例,所述虛擬機(jī)實(shí)例上加載有一個(gè)或多個(gè)軟件部件并且等待被分配給用戶;以及

活性池,其包括當(dāng)前分配給一個(gè)或多個(gè)用戶的虛擬機(jī)實(shí)例;

接收在所述虛擬計(jì)算系統(tǒng)上執(zhí)行第一程序代碼的第一代碼執(zhí)行請(qǐng)求;

基于所述第一代碼執(zhí)行請(qǐng)求確定所述第一程序代碼是加載到創(chuàng)建在所述活性池中的所述虛擬機(jī)實(shí)例的特定實(shí)例上的容器之上的更新版本的第二程序代碼;

啟動(dòng)將所述第一程序代碼下載到所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)、所述特定實(shí)例的代碼緩存和所述容器中的至少一個(gè)之上;以及

使用所述第二程序代碼處理所述代碼執(zhí)行請(qǐng)求。

2.如條款1所述的系統(tǒng),其中所述虛擬計(jì)算系統(tǒng)進(jìn)一步被配置來:

接收在所述虛擬計(jì)算系統(tǒng)上執(zhí)行所述第一程序代碼的第二代碼執(zhí)行請(qǐng)求;以及

致使所述第二請(qǐng)求在所述容器執(zhí)行所述第二程序代碼的同時(shí)由所述第一程序代碼進(jìn)行處理。

3.如條款1所述的系統(tǒng),其中所述虛擬計(jì)算系統(tǒng)進(jìn)一步被配置來:

將所述虛擬計(jì)算系統(tǒng)的所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)與所述活性池中的多個(gè)虛擬機(jī)實(shí)例相關(guān)聯(lián),所述多個(gè)虛擬機(jī)實(shí)例中的每一個(gè)能夠訪問存儲(chǔ)在所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)上的數(shù)據(jù);以及

致使加載到所述多個(gè)虛擬機(jī)實(shí)例中的任一個(gè)之上的一個(gè)或多個(gè)程序代碼自動(dòng)加載到所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)之上。

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

虛擬計(jì)算系統(tǒng),其包括執(zhí)行特定計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)硬件計(jì)算裝置,并且被配置來至少:

接收與更新的程序代碼相關(guān)聯(lián)的第一請(qǐng)求,

基于所述第一請(qǐng)求確定所述更新的程序代碼是先前加載到創(chuàng)建在所述虛擬計(jì)算系統(tǒng)上的虛擬機(jī)實(shí)例上的現(xiàn)有容器之上的更老的程序代碼的更新版本;

啟動(dòng)將所述更新的程序代碼下載到創(chuàng)建在所述虛擬機(jī)實(shí)例上的新容器、所述虛擬計(jì)算系統(tǒng)的內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)以及所述虛擬機(jī)實(shí)例的代碼緩存中的至少一個(gè)之上;以及

致使所述第一請(qǐng)求由所述現(xiàn)有容器中的所述更老的程序代碼進(jìn)行處理。

5.如條款4所述的系統(tǒng),其中所述虛擬計(jì)算系統(tǒng)進(jìn)一步被配置來:

確定所述更老的程序代碼已經(jīng)被更新;以及

致使所述更新的程序代碼在接收到與所述更新的程序代碼相關(guān)聯(lián)的任何請(qǐng)求之前被下載到所述虛擬計(jì)算系統(tǒng)之上。

6.如條款4所述的系統(tǒng),其中所述虛擬計(jì)算系統(tǒng)進(jìn)一步被配置來:

接收與所述更新的程序代碼相關(guān)聯(lián)的第二請(qǐng)求;以及

致使所述第二請(qǐng)求在所述現(xiàn)有容器執(zhí)行所述更老的程序代碼的同時(shí)由所述新容器中的所述更新的程序代碼進(jìn)行處理。

7.如條款4所述的系統(tǒng),其中所述第一請(qǐng)求包括所述更新的程序代碼中的同步并不急迫的指示,并且其中所述虛擬計(jì)算系統(tǒng)進(jìn)一步被配置來在所述更新的程序代碼正被下載的同時(shí)使用所述更老的程序代碼繼續(xù)處理與所述更新的程序代碼相關(guān)聯(lián)的附加請(qǐng)求。

8.如條款4所述的系統(tǒng),其中所述第一請(qǐng)求包括所述更新的程序代碼中的同步急迫的指示,并且其中所述虛擬計(jì)算系統(tǒng)進(jìn)一步被配置來防止與所述更新的程序代碼相關(guān)聯(lián)的任何附加請(qǐng)求由所述更老的程序代碼進(jìn)行處理。

9.如條款4所述的系統(tǒng),其中所述虛擬計(jì)算系統(tǒng)包括虛擬機(jī)實(shí)例的活性池,所述虛擬機(jī)實(shí)例被配置來在上面創(chuàng)建的一個(gè)或多個(gè)容器中執(zhí)行用戶代碼,并且其中所述虛擬計(jì)算系統(tǒng)進(jìn)一步被配置來:

將所述虛擬計(jì)算系統(tǒng)的所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)與所述活性池中的多個(gè)虛擬機(jī)實(shí)例相關(guān)聯(lián),所述多個(gè)虛擬機(jī)實(shí)例中的每一個(gè)能夠訪問存儲(chǔ)在所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)上的數(shù)據(jù);以及

致使加載到所述多個(gè)虛擬機(jī)實(shí)例中的任一個(gè)之上的一個(gè)或多個(gè)程序代碼自動(dòng)加載到所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)之上。

10.如條款9所述的系統(tǒng),其中所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)被配置來在所述特定虛擬機(jī)實(shí)例被終止之后終止所述特定虛擬機(jī)實(shí)例與所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)上的先前與所述特定虛擬機(jī)實(shí)例相關(guān)聯(lián)的任何數(shù)據(jù)之間的關(guān)聯(lián),同時(shí)保留所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)上的所述任何數(shù)據(jù)。

11.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,其包括:

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

接收在虛擬計(jì)算系統(tǒng)上執(zhí)行更新的程序代碼的第一請(qǐng)求;

基于所述第一請(qǐng)求確定所述更新的程序代碼是加載到創(chuàng)建在所述虛擬計(jì)算系統(tǒng)上的虛擬機(jī)實(shí)例上的現(xiàn)有容器之上的更老的程序代碼的更新版本;

啟動(dòng)將所述更新的程序代碼下載到創(chuàng)建在所述虛擬機(jī)實(shí)例上的新容器、所述虛擬計(jì)算系統(tǒng)的內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)以及所述虛擬機(jī)實(shí)例的代碼緩存中的至少一個(gè)之上;以及

致使所述第一請(qǐng)求由所述現(xiàn)有容器中的所述更老的程序代碼進(jìn)行處理。

12.如條款11所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述方法還包括:

確定所述更老的程序代碼已經(jīng)被更新;以及

致使所述更新的程序代碼在接收到與所述更新的程序代碼相關(guān)聯(lián)的任何請(qǐng)求之前被下載到所述虛擬計(jì)算系統(tǒng)之上。

13.如條款11所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述方法還包括:

接收在所述虛擬計(jì)算系統(tǒng)上執(zhí)行所述更新的程序代碼的第二請(qǐng)求;以及

致使所述第二請(qǐng)求在所述現(xiàn)有容器執(zhí)行所述更老的程序代碼的同時(shí)由所述更新的程序代碼進(jìn)行處理。

14.如條款11所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述第一請(qǐng)求包括所述更新的程序代碼中的同步急迫的指示,并且其中所述方法還包括防止與所述更新的程序代碼相關(guān)聯(lián)的任何附加請(qǐng)求由所述更老的程序代碼進(jìn)行處理。

15.如條款11所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述虛擬計(jì)算系統(tǒng)包括虛擬機(jī)實(shí)例的活性池,所述虛擬機(jī)實(shí)例被配置來在上面創(chuàng)建的一個(gè)或多個(gè)容器中執(zhí)行用戶代碼,并且其中所述方法還包括:

將所述虛擬計(jì)算系統(tǒng)的所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)與所述活性池中的多個(gè)虛擬機(jī)實(shí)例相關(guān)聯(lián),所述多個(gè)虛擬機(jī)實(shí)例中的每一個(gè)能夠訪問存儲(chǔ)在所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)上的數(shù)據(jù);以及

致使加載到所述多個(gè)虛擬機(jī)實(shí)例中的任一個(gè)之上的一個(gè)或多個(gè)程序代碼自動(dòng)加載到所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)之上。

16.一種存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀非暫時(shí)存儲(chǔ)介質(zhì),所述程序指令在由一個(gè)或多個(gè)計(jì)算裝置執(zhí)行時(shí)配置所述一個(gè)或多個(gè)計(jì)算裝置來執(zhí)行操作,所述操作包括:

接收在虛擬計(jì)算系統(tǒng)上執(zhí)行更新的程序代碼的第一請(qǐng)求;

基于所述第一請(qǐng)求確定所述更新的程序代碼是加載到創(chuàng)建在所述虛擬計(jì)算系統(tǒng)上的虛擬機(jī)實(shí)例上的現(xiàn)有容器之上的更老的程序代碼的更新版本;

啟動(dòng)將所述更新的程序代碼下載到創(chuàng)建在所述虛擬機(jī)實(shí)例上的新容器、所述虛擬計(jì)算系統(tǒng)的內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)以及所述虛擬機(jī)實(shí)例的代碼緩存中的至少一個(gè)之上;以及

致使所述第一請(qǐng)求由所述現(xiàn)有容器中的所述更老的程序代碼進(jìn)行處理。

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

確定所述更老的程序代碼已經(jīng)被更新;以及

致使所述更新的程序代碼在接收到與所述更新的程序代碼相關(guān)聯(lián)的任何請(qǐng)求之前被下載到所述虛擬計(jì)算系統(tǒng)之上。

18.如條款16所述的計(jì)算機(jī)可讀非暫時(shí)存儲(chǔ)介質(zhì),其中所述操作還包括:

接收在所述虛擬計(jì)算系統(tǒng)上執(zhí)行所述更新的程序代碼的第二請(qǐng)求;以及

致使所述第二請(qǐng)求在所述現(xiàn)有容器執(zhí)行所述更老的程序代碼的同時(shí)由所述更新的程序代碼進(jìn)行處理。

19.如條款16所述的計(jì)算機(jī)可讀非暫時(shí)存儲(chǔ)介質(zhì),其中所述第一請(qǐng)求包括所述更新的程序代碼中的同步急迫的指示,并且其中所述操作還包括防止與所述更新的程序代碼相關(guān)聯(lián)的任何附加請(qǐng)求由所述更老的程序代碼進(jìn)行處理。

20.如條款16所述的計(jì)算機(jī)可讀非暫時(shí)存儲(chǔ)介質(zhì),其中所述虛擬計(jì)算系統(tǒng)包括虛擬機(jī)實(shí)例的活性池,所述虛擬機(jī)實(shí)例被配置來在上面創(chuàng)建的一個(gè)或多個(gè)容器中執(zhí)行用戶代碼,并且其中所述操作還包括:

將所述虛擬計(jì)算系統(tǒng)的所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)與所述活性池中的多個(gè)虛擬機(jī)實(shí)例相關(guān)聯(lián),所述多個(gè)虛擬機(jī)實(shí)例中的每一個(gè)能夠訪問存儲(chǔ)在所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)上的數(shù)據(jù);以及

致使加載到所述多個(gè)虛擬機(jī)實(shí)例中的任一個(gè)之上的一個(gè)或多個(gè)程序代碼自動(dòng)加載到所述內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)之上。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1