編譯 | 星璇
出品 | 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 區域。