本文以一個函數建立流程為例,為您介紹每個階段涉及到的相關概念,方便您系統地瞭解Function Compute。建立函數的具體操作,請參見使用事件函數處理雲端服務產生的事件。
FC函數建立流程
FC函數是Function Compute的資源調度與啟動並執行基本單位。FC函數由函數代碼和函數配置構成。下圖是建立FC函數的基本流程。
建立函數
在建立函數階段,您可選擇函數類型和匹配的運行環境,並上傳函數代碼到Function Compute,其他參數都可在稍後的配置函數階段根據具體情況配置。
函數選型
事件函數
選擇事件觸發如OSS觸發器、Kafka觸發器、SLS觸發器等方式,按照Function Compute定義的介面編寫程式。更多資訊,請參見建立事件函數。
Web函數
選擇流行Web架構如Flask、ThinkPHP、Express、SpringBoot等,按照架構定義的介面編寫程式。更多資訊,請參見建立Web函數。
任務函數
選擇任務模式處理非同步請求,每個任務都將追蹤狀態且允許手動啟停,推薦在定時任務、音視頻處理、資料處理等離線情境使用。更多資訊,請參見建立任務函數。
GPU函數
選擇流行 AI 專案如 Stable Diffusion WebUI、ComfyUI、RAG、TensorRT等方式,推薦以鏡像方式部署至Function Compute。更多資訊,請參見建立GPU函數。
運行環境
內建運行時
內建運行時是Function Compute平台預定義的運行環境,必須按照Function Compute定義的介面編寫請求處理常式。內建運行時不支援單一實例多並發情境,但冷啟動最快,適合在基於事件觸發的情境中使用,例如使用OSS 觸發器、Kafka 觸發器、SLS 觸發器等方式。更多資訊,請參見Function Compute運行時。
事件(
event)事件資料以 JSON 格式文檔的形式傳遞給您的函數。運行時將事件轉換為一個對象,並將該對象傳遞給函數的入口參數
event。如果事件由另一項阿里雲服務產生,則事件格式取決於產生該事件的服務。更多資訊,請參見觸發器Event格式。上下文(
context)當Function Compute運行您的函數時,會將內容物件傳遞函數的入口參數
context。該對象包含有關調用、服務、函數和執行環境等資訊。更多資訊,請參見上下文。
自訂運行時
自訂運行時支援Flask、ThinkPHP、Express、SpringBoot等主流Web架構,您只需按照架構定義的介面編寫程式。針對自訂運行時,您的代碼檔案ZIP包是一個HTTP Server程式,您只需設定函數配置中的啟動命令和啟動參數完成HTTP Server的啟動。更多資訊,請參見基本原理。
自訂鏡像
Function Compute提供自訂鏡像功能,開發人員可以將容器鏡像作為函數的交付物。您可將自訂鏡像上傳至ACR然後使用鏡像,或者使用樣本鏡像。具體操作,請參見建立自訂鏡像函數。
Function Compute中,只有自訂鏡像支援建立GPU函數。
版本
發布版本相當於為函數建立版本快照,版本快照包括函數代碼及函數配置,不包括觸發器、非同步任務配置及預留策略等資源屬性。版本類似於
Git裡的一個commit,該commit包含了一個或者多個代碼檔案及其配置變更,是當前倉庫的一次快照。更多資訊,請參見版本管理。別名
別名可以理解為指向特定函數版本的指標,使用別名訪問函數時,Function Compute會將別名解析為其指向的版本,調用方無需瞭解別名指向的具體版本。您可以利用別名來輕鬆實現發布、復原以及灰階發布等功能。別名類似於
Git裡的tag,可以將當前commit標記為tag,進而release為一次業務迭代。更多資訊,請參見別名管理。CPU執行個體
Function Compute的基本執行個體,適用於各種突發流量和計算密集情境。更多資訊,請參見執行個體類型和規格。
GPU執行個體
基於Turing架構的執行個體,將不同業務負載下沉至GPU硬體加速,使得業務處理效率更高。主要適用於音視頻、AI人工智慧和影像處理等情境。更多資訊,請參見執行個體類型和規格。
配置函數
完成函數建立後,您可能需要根據業務需求調整以下配置項。
基礎配置
執行個體規格
Function Compute提供豐富的函數執行個體規格,您可以根據業務的需要選擇不同的規格。更多資訊,請參見執行個體規格。
臨時硬碟
函數執行個體提供臨時儲存磁碟,該磁碟掛載到執行個體根目錄,資料隨執行個體回收自動清除。為了實現檔案系統的持久化,建議使用配置NAS檔案系統或配置OSS檔案系統等儲存方案。這將確保資料在系統重啟或故障後仍然能夠被保留,並且可以方便地進行管理和擴充。
說明Function ComputeGPU顯存規格整卡(Tesla 系列16GB、Ada 系列48GB)已支援配置30GB、60GB的磁碟規格,其他函數規格僅支援選擇512MB 和10GB 兩種規格的磁碟。512MB的磁碟規格不收費。
觸發器
某些阿里雲服務可以使用觸發器直接調用FC函數。這些服務將事件推送到Function Compute,並在指定事件發生時立即調用該函數。更多資訊,請參見觸發器簡介。
一個函數可具有多個觸發器。每個觸發器都可以作為一個用戶端獨立調用您的函數,Function Compute傳遞到您的函數的每個事件僅具有一個觸發器的資料。Function Compute將事件文檔轉換為一個對象,並將該對象傳遞給函數處理常式。
運行時
Function Compute通過使用運行時支援多種語言。運行時系統提供在執行環境中啟動並執行語言特定環境。運行時在Function Compute與函數之間中繼呼叫事件、上下文資訊和響應。更多資訊,請參見運行時介紹。
環境變數
環境變數作為函數配置的一部分,以字串索引值對的方式儲存,不同函數擁有獨立的環境變數。您可以使用環境變數來調整函數的行為,而無需更新代碼。更多資訊,請參見配置環境變數。
層
層是可以包含其他代碼或其他內容的
.zip檔案。層通常包含庫、自訂運行時、資料或設定檔。Function Compute提供官方公用層供您使用,同時也支援建立自訂層。一般來說,使用層具有以下優勢:減小部署套件的大小。
將所有函數依賴項放在一個層中,有助於減少函數代碼部署套件的大小,並加快代碼的部署速度。
分離核心函數邏輯與依賴項。
藉助層,您無需更新函數代碼即可更新函數依賴項,反之亦然。這有助於將二者分離,並協助您專註於函數邏輯。
在多個函數之間共用依賴項。
您可以將公用函數或依賴項放在層中,並將其添加到賬戶中任意數量的函數中。如果沒有層,則需要在每個單獨的部署套件中包含相同的依賴項。
說明使用自訂鏡像(Custom Container)的函數不支援添加層,您可以在建立自訂鏡像函數時打包首選運行時系統、庫和其他依賴項到容器映像。
許可權
為函數配置許可權通過配置函數角色來實現,Function Compute平台會使用這個RAM角色(Role)來產生訪問您的阿里雲資源的臨時密鑰,並傳遞給您的代碼。更多資訊,請參見授予Function Compute訪問其他雲端服務的許可權。
日誌
Function Compute支援與Simple Log Service (SLS)進行整合,為函數配置日誌後,Function Compute會自動收集日誌,並把日誌投遞到指定的日誌庫。更多資訊,請參見配置日誌。
網路
建立的函數預設可以訪問公網,但無法訪問VPC內的資源。如果您需要函數能夠訪問VPC內的資源,或允許指定的VPC來調用函數,那麼需要手動為函數配置網路和許可權。更多資訊,請參見配置網路。
儲存
Function Compute支援掛載掛NAS檔案系統和OSSObject Storage Service。更多資訊,請參見配置NAS檔案系統、配置OSSObject Storage Service。
預留執行個體
Function Compute會為您建立預留模式的函數執行個體,並且在您將預留執行個體數設定為0之前預留執行個體會持續運行。因此,即使您的函數執行個體未執行任何請求,只要沒有釋放函數執行個體,您都需要為這些函數執行個體付費。更多資訊,請參見配置啟動快照。
非同步配置
Function Compute支援以任務模式執行非同步請求。在任務模式下,Function Compute系統會記錄您的每個任務在各個階段的執行狀態,提供任務狀態查詢,任務排隊數指標,任務去重,任務主動終止等功能。非同步任務適用於長時執行任務。如果您的非同步請求處理延時敏感,要求在百毫秒以下,或者您需要持續的每秒數千甚至更高的任務提交速度,那麼非同步任務模式不太合適。更多資訊,請參見非同步呼叫。
生命週期
函數執行個體會根據即時請求量動態建立或銷毀,每個函數執行個體的生命週期包括執行個體構建(Creating)、請求調用(Invoke)和執行個體銷毀(Destroy)三個階段。更多資訊,請參見配置執行個體生命週期。
健全狀態檢查
Function Compute支援為Web函數和GPU函數執行個體設定周期性健全狀態檢查,避免請求訊息被分配至異常執行個體而導致請求失敗。更多資訊,請參見配置執行個體健全狀態檢查。
DNS
自訂DNS功能適用於加速網站訪問等情境,且只支援內建運行時和自訂運行時。更多資訊,請參見配置自訂DNS。
自訂網域名
您可以為函數或應用綁定自訂網域名,實現通過固定的網域名稱訪問該函數或應用。您也可以將配置的自訂網域名作為來源站點網域名稱,為其添加CDN加速網域名稱,使您的訪問使用者能夠更加快速地讀取所需內容,降低訪問時延,提高服務品質。更多資訊,請參見配置自訂網域名。
調用函數
部署FC函數後,可以通過多種方式調用函數。例如Function Compute控制台快速建立測試事件來調用函數、使用SDK調用函數、調用API直接調用函數、函數URL HTTP(S)端點、事件來源觸發等。以下是函數調用過程中涉及到的一些概念。
同步調用
事件被函數處理完成後直接返回結果。更多資訊,請參見同步調用。
非同步呼叫
事件被成功觸發後立即返迴響應結果,無需等待背景工作執行完成。Function Compute系統會可靠地處理該訊息,但不會返回具體的調用情況和函數執行狀態。如您想擷取非同步呼叫結果,必須通過配置非同步呼叫目標來實現。具體資訊,請參見功能概覽。
調用分析
調用分析功能是函數請求層級的執行狀態匯總,開啟調用分析功能後,系統會收集合函式每次執行的指標資訊。更多資訊,請參見請求層級指標日誌。
單一實例並發數
單一實例並發數是指單個函數執行個體同時可以處理的請求數。更多資訊,請參見配置單一實例並發度。
閑置模式
在預留模式下,開啟閑置模式後,如果執行個體上沒有正在執行任何請求,Function Compute將凍結為執行個體分配的GPU資源或vCPU資源,將執行個體轉為閑置狀態,閑置狀態執行個體的費用遠遠小於活躍狀態執行個體,減少了預留模式的使用成本。
按量模式
按量模式下,Function Compute系統自動為函數分配和釋放執行個體。更多資訊,請參見執行個體類型和規格。
預留模式
預留模式是將函數執行個體的分配和釋放交由您管理。當您預留了函數執行個體,Function Compute系統收到函數調用請求時,會優先將請求轉寄給您預留的函數執行個體。當函數請求的峰值超過預留的函數執行個體處理能力時,剩餘的部分請求將會轉寄給您的按量模式的執行個體。更多資訊,請參見執行個體類型和規格。
預留模式下的函數執行個體保持常駐狀態,可以徹底消除冷啟動對業務的影響。
為瞭解決預留模式配置的固定預留執行個體利用不充分問題,您可以設定預留模式執行個體的Auto Scaling功能,支援定時Auto Scaling和指標追蹤Auto Scaling兩種方案。
定時Auto Scaling
在指定時間將預留的函數執行個體量設定成需要的值。更多資訊,請參見修改或刪除啟動快照策略。
指標追蹤Auto Scaling
通過追蹤監控指標實現對預留模式的函數執行個體進行動態伸縮。更多資訊,請參見修改或刪除啟動快照策略。
執行個體數上限
當前函數最大的執行個體數上限。阿里雲帳號(主帳號)在單個地區內預設的執行個體數上限為 300,您可以聯絡我們(DingTalk群號:
64970014484)申請調整此限制。
其他相關概念
標籤
使用標籤(Tag)對服務資源進行歸類,便於搜尋和資源彙總。您還可以通過標籤功能將服務分組,實現不同角色對不同分組的服務擁有不同的操作許可權。更多資訊,請參見標籤管理。