全部產品
Search
文件中心

Function Compute:概念

更新時間:Jun 10, 2025

本文以一個函數建立流程為例,為您介紹每個階段涉及到的相關概念,方便您系統地瞭解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兩種方案。

  • 執行個體數上限

    當前函數最大的執行個體數上限。阿里雲帳號(主帳號)在單個地區內預設的執行個體數上限為 300,您可以聯絡我們(DingTalk群號:64970014484)申請調整此限制。

其他相關概念

  • 標籤

    使用標籤(Tag)對服務資源進行歸類,便於搜尋和資源彙總。您還可以通過標籤功能將服務分組,實現不同角色對不同分組的服務擁有不同的操作許可權。更多資訊,請參見標籤管理