為了要讓無伺服器( Serverless )架構可以處理高流量,可以使用 Lambda 的 Concurrency 機制,提升處理整個系統處理 request 的速度,但是這麼做也有一些風險,接下這兩天就來探討如何使用 Lambda 的 Concurrency ,以及優缺點。
在深入討論如何處理高流量之前,讓我們先了解 AWS Lambda 中的「併發( Concurrency )」究竟是什麼。
併發( Concurrency ): 指同時有多個 Lambda 處理多個 request。每當有新的 request 到達, Lambda 會為其配置獨立的執行環境。
在沒有調整任何併發( Concurrency )機制下, AWS 會根據流量自動為 Lambda 進行 auto-scaling ,這也是無伺服器架構「自動擴展」的核心優勢。以 Lambda 和 SQS 為例,如下圖所示,可以清楚看到 AWS 自己長出 Lambda 消化 SQS 的 message 。
為了解決上述的困境,需要適當的調整併發( Concurrency )策略,讓整個處理 request 的流程可以更順暢,明天會介紹如何調整 Lambda 的併發( Concurrency )。
medium: 使用 AWS Lambda 的 Concurrency 機制處理高流量應用