我正在撰寫一個 AWS-lambda 函式,它從資料庫讀取過去 1 分鐘的資料,將其轉換為 JSON,然后將其推送到 Kafka 主題。lambda 將每 1 分鐘運行一次。因此,如果出現這樣的情況:在 t1,呼叫了一個 lambda 行程,比如說 P1,它正在從 t1 讀取資料到 t1-1。在 t2 時,如果 P1 沒有完成,那么將呼叫一個新的 lambda 行程還是我們將等待 P1 完成以便我們可以呼叫另一個行程?我知道 lambda 在一個區域中最多支持 1000 個并行行程,但在這種情況下,lambda 函式將已經在一個行程中運行。
uj5u.com熱心網友回復:
Lambda 在同一執行中支持多執行緒和多行程(參見示例)。但是,從您提供的背景關系來看,這似乎不是根本問題。
并發允許您配置在給定時間可以執行的單個 Lambda 函式的實體數。參考檔案的相關部分:
并發是您的函式在任何給定時間服務的請求數。當您的函式被呼叫時,Lambda 會分配它的一個實體來處理事件。當功能代碼完成運行時,它可以處理另一個請求。如果在處理請求時再次呼叫該函式,則會分配另一個實體,這會增加該函式的并發性。您賬戶中所有功能的總并發量取決于每個區域的配額。
觸發器定義何時執行 Lambda。如果您有多個事件(例如來自 SQS)發送到并發>1 的 lambda,那么很可能會有該給定 Lambda 的多個實體同時運行。
concurrency=1,如果你每 1 分鐘觸發一次 Lambda,并且執行和完成需要超過 1 分鐘,那么你的處理就會滯后。換句話說,未來的 Lambda 將處理 t-2、t-3 等。
使用 concurrency=1,如果您希望每 1 分鐘處理一次,則必須確保處理它的時間不超過 1 分鐘。使用額外的并發性可能需要更長的時間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/421540.html
標籤:
上一篇:為AWSKinesis流設定bisectBatchOnFunctionError=true
下一篇:錯誤:提供的關鍵元素與架構不匹配
