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