當您對函數發起異步調用時,相關請求會被持久化保存到函數計算內部隊列中,然后被可靠地處理。如果您想追蹤并保存異步調用各個階段的狀態,實現更豐富的任務控制和可觀測能力,可以選擇開啟任務模式處理異步請求。本文介紹異步任務的背景信息、使用限制和常用功能。
背景信息
開啟異步任務后,您可以實現以下功能:
每次函數調用將詳細記錄調用過程中的狀態轉換信息,例如調用輸入、執行結果和錯誤信息等。
擁有調用級的控制能力,可以主動終止調用等。
異步任務會保存狀態信息,因此,函數的調用和執行會有一定的額外延遲,該延遲不會產生額外的費用。關于函數計算計費的詳細信息,請參見計費概述。
使用限制
場景限制
異步任務雖然功能更豐富,但相應的系統開銷更大。以下場景建議您關閉任務模式:
您對請求處理鏈路延時非常敏感,需要平均延時在百毫秒以下。
您需要每秒數千甚至更高的速率發起異步調用。
地域限制
異步任務支持華東1(杭州)、華東2(上海)、華北1(青島)、華北2(北京)、華北3(張家口)、華南1(深圳)、西南1(成都)、中國香港、新加坡、英國(倫敦)、美國(硅谷)、美國(弗吉尼亞)、德國(法蘭克福)、澳大利亞(悉尼)關停中、馬來西亞(吉隆坡)、印度尼西亞(雅加達)、泰國(曼谷)、日本(東京)和韓國(首爾)地域。
時效限制
僅支持查詢7天內的任務狀態信息。
功能對比
如果您要自行構建異步任務處理平臺,或者實現簡單的定時類任務,可以使用Kubernetes的Jobs功能來實現。以下是函數計算異步任務和Kubernetes的Jobs功能對比。
對比項 | 函數計算異步任務 | Kubernetes的Jobs功能 |
適用場景 | 適用于任務執行時長數十毫秒的實時任務和任務執行時長數十小時的離線任務。 | 適用于任務提交速度要求不高,任務負載比較固定,任務實時性要求不高的離線任務。 |
任務可觀測能力 | 支持。提供日志、任務排隊數等指標和任務鏈路耗時、任務狀態查詢等豐富的可觀測能力。 | 需自行整合開源軟件來實現。 |
任務實例自動擴縮容 | 支持。根據任務排隊數和實例資源使用率自動擴縮容。 | 需通過任務隊列自行實現擴縮容和實例負載均衡,復雜度較高。 |
任務實例伸縮速度 | 毫秒級。 | 分鐘級。 |
任務實例資源利用率 | 用戶只需要選擇合適的實例規格,實例自動伸縮,按實際處理任務的時長計量,資源利用率高。 | 需在Jobs提交時確定實例的規格和數目。實例難以自動伸縮和負載均衡,資源利用率低。 |
任務提交速度 | 單個用戶支持每秒提交數萬條任務。 | 整個集群每秒最多啟動數百條Jobs。 |
任務定時或延時提交 | 支持。 | 支持任務定時提交,不支持任務延時提交。 |
任務去重 | 支持。 | 不支持。 |
終止指定任務 | 支持。 | 有限支持。通過終止任務實例間接實現。 |
任務流控 | 支持。可在用戶或任務處理函數等不同粒度進行流控。 | 不支持。 |
任務結果自動回調 | 支持。 | 不支持。 |
開發運維成本 | 只需要實現任務的處理邏輯。 | 需維護K8s集群。 |
常見功能
異步任務的常見功能如下所示: