擴充速度提高了12倍!AWS Lambda 函數重大改進!
編譯| 星璇
出品| 51CTO技術棧(微訊號:blog51cto)
Marcia 是Amazon Web Services 的首席開發倡導者,在軟體產業建置和擴展應用程式方面擁有20年的工作經驗。她熱衷於設計能夠充分利用雲端並擁抱DevOps文化的系統。最近她發表了一篇博文,帶來了一個AWS Lambda重大改進:擴展速度提升了12 倍!
1.Lambda函數更新,擴展速度倍增
現在,AWS Lambda 的擴展速度提高了 12 倍。每個同步呼叫的Lambda 函數現在每10 秒擴展1000 個並發執行,直到所有函數的聚合並發達到帳戶的並發限制。此外,帳戶中的每個功能現在都可以彼此獨立地擴展,無論這些功能是如何呼叫的。這些改進無需額外成本,並且無需在現有功能中進行任何配置。
圖片
使用傳統架構建立可擴展且高效能的應用程式可能具有挑戰性,通常需要過度配置運算資源或複雜的快取解決方案來滿足尖峰需求和不可預測的流量。許多開發人員選擇Lambda 是因為當應用程式面臨不可預測的流量時,它可以按需擴展。
在此更新之前,Lambda 函數最初可以在第一分鐘內在帳戶層級擴展500-3,000 個並發執行(取決於區域),然後每分鐘擴展500 個並發執行,直到達到帳戶的並發限制。
由於此擴充限制由同一帳戶和區域中的所有功能共享,因此如果某個功能遇到流量湧入,可能會影響同一帳戶中其他功能的吞吐量。這增加了監控一些可能超出帳戶限制的功能的工程工作量,從而導致嘈雜的鄰居場景並降低同一帳戶中其他功能的整體並發性。
現在,透過這些擴展改進,流量變化較大的客戶可以比以前更快達到並發目標。例如,發布突發新聞報導的新聞網站或進行限時搶購的線上商店將迎來大量訪客湧入。由於這些改進,它們現在的擴展速度比以前快了12 倍。
此外,使用Amazon Athena和Amazon Redshift等服務以及基於Lambda 的標量UDF來執行資料豐富或資料轉換的客戶將受益於這些改進。這些服務依賴批次資料並將其分塊傳遞給Lambda,同時呼叫多個平行函數。增強的並發擴展行為確保Lambda 可以快速擴展並滿足服務等級協定(SLA) 要求。
2、實踐中究竟如何?
下圖顯示了一個函數每10 秒接收並處理請求。帳戶並發限制設定為7,000 個並發請求,並在同一帳戶中的所有功能之間共用。每個函數的擴展速率固定為每10 秒1,000 個並發執行。此速率獨立於同一帳戶中的其他功能,這樣可以更輕鬆地預測此功能將如何擴展和限制請求(如果需要)。
圖片
- 09:00:00 – 該函數已經運行了一段時間,並且已經有1,000 個並發執行正在處理。
- 09:00:10 – 十秒後,又爆發了1,000 個新請求。該函數可以毫無問題地處理它們,因為函數每10 秒最多可以擴展至1,000 個並發執行。
- 09:00:20 – 同樣的情況也發生在這裡:一千個新請求。
- 09:00:30 – 函數現在收到1,500 個新請求。由於函數的最大擴展容量為每10 秒1,000 個請求,因此其中500 個請求將受到限制。
- 09:01:00 – 此時,函數已處理4,500 個並發請求。但突然出現了3,000 個新請求。Lambda 處理1,000 個新請求並限制2,000 個,因為函數每10 秒可以擴展到1,000 個請求。
- 09:01:10 – 10 秒後,又爆發了2,000 個請求,該函數現在可以再處理1,000 個請求。但是,其餘1,000 個請求會受到限制,因為函數可以擴展到每10 秒1,000 個請求。
- 09:01:20 – 現在函數正在處理6,500 個並發請求,並且有1,000 個傳入請求。其中前500 個請求得到處理,但其他500 個請求受到限制,因為函數達到了7,000 個請求的帳戶並發限制。請務必記住,可以透過在AWS 管理控制台中建立支援票證來提高帳戶並發限制。
如果你的帳戶中有多個函數,這些函數將獨立擴展,直到達到帳戶總並發限制。之後,所有新的呼叫都將受到限制。
3、可用範圍及具體規則
預設情況下,所有功能都會啟用這些擴充功能改進。據悉,從去年11 月26 日開始到12 月中旬,AWS 將逐步向除中國和GovCloud 區域之外的所有AWS 區域推出這些擴展改進。
具體規則如下:
Lambda不會累積並發擴展率中未使用的部分。這意味著,在任何時刻,你的擴展速率始終最大為1000個並發單元。例如,如果在10秒的時間間隔內沒有使用任何可用的1000個並發單元,那麼在接下來的10秒間隔內就不會增加1000個額外的單元。在接下來的10秒內,並發擴展率仍然是1000。
只要你的函數繼續接收越來越多的請求,Lambda就會以最快的速度擴展,達到帳戶的並發限制。可以透過配置保留並發來限制單一函數可以使用的並發量。如果請求的速度快於函數的擴展速度,或者函數處於最大並發狀態,那麼其他請求將失敗,並出現節流錯誤(429狀態代碼)。
4、總結
以前,Lambda 函數在帳戶層級共享擴展限制,如果一個函數遇到高流量,則會導致潛在的吞吐量問題。AWS Lambda 函數更新後,擴充速度提高了12 倍。現在,每個函數每10 秒擴展1,000 個並發執行,獨立於同一帳戶中的其他函數,直到達到帳戶的聚合並發限制。此更新無需額外成本或配置更改,透過允許快速擴展,使面臨不可預測流量的應用程式受益匪淺。
新的獨立擴展系統可以讓函數更快達到並發目標,這對於突發新聞或秒殺閃購等場景將會更加出色。
此外,利用Lambda 進行資料處理的Amazon Athena 和Amazon Redshift 等服務將因此次更新而獲得效能增強。這些改進預設為啟用,並將推廣到除中國和GovCloud 區域之外的所有AWS 區域。