AWS更新其無(wú)服務(wù)器運(yùn)算服務(wù)Lambda,加入SnapStart新功能來(lái)加快初始階段,進(jìn)而加速整體函數(shù)的執(zhí)行速度,AWS提到,SnapStart可讓Spring Boot、Quarkus和Micronaut等Java框架啟動(dòng)速度提高至10倍。
AWS解釋,函數(shù)執(zhí)行環(huán)境生命周期有三個(gè)主要的階段,分別為初始(Init)、調(diào)用(Invoke)和結(jié)束(Shutdown),而初始則是啟動(dòng)Runtime并且執(zhí)行函數(shù)靜態(tài)程序代碼的階段,在許多情況下,這些操作會(huì)在數(shù)毫秒內(nèi)完成,并且不會(huì)有任何明顯的時(shí)間延長(zhǎng)。
但在部分情況,函數(shù)初始可能會(huì)需要相當(dāng)長(zhǎng)的時(shí)間,像是Spring Boot、Quarkus或Micronaut等Java程序語(yǔ)言框架,就會(huì)花費(fèi)較長(zhǎng)的時(shí)間初始化Runtime,整個(gè)Lambda函數(shù)初始化可能長(zhǎng)達(dá)10秒,執(zhí)行諸如相依項(xiàng)目注入和函數(shù)程序代碼編譯等操作,另外,靜態(tài)程序代碼也可能需要下載機(jī)器學(xué)習(xí)模型,預(yù)計(jì)算一些參照資料,或是和其AWS服務(wù)創(chuàng)建網(wǎng)絡(luò)連接。
而Lambda SnapStart能夠針對(duì)Lambda函數(shù)啟動(dòng)優(yōu)化程序,該程序會(huì)啟動(dòng)函數(shù)并且在初始階段運(yùn)行,截取內(nèi)存和磁盤(pán)狀態(tài)成為不可篡改的加密快照,并且將其緩存以供重復(fù)使用。之后當(dāng)函數(shù)再次被調(diào)用時(shí),狀態(tài)將會(huì)從緩存中檢索并用于填充環(huán)境。AWS提到,由于優(yōu)化讓創(chuàng)建新的執(zhí)行環(huán)境不需要經(jīng)過(guò)初始階段,因此函數(shù)調(diào)用時(shí)間將更快更可預(yù)測(cè)。