本文以一個函數建立流程為例,為您介紹每個階段涉及到的相關概念,方便您系統地瞭解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函數。
常駐執行個體
購買常駐資源集區後,您可以在建立GPU函數時,為函數綁定常駐資源集區,分配常駐執行個體,使用常駐執行個體處理請求。
常駐資源集區僅適用於GPU函數,採用按月預付費的方式,協助使用者提前鎖定稀缺GPU資源,確保業務平穩運行,避免因資源不足而受到影響。
彈性執行個體
彈性執行個體是指Function Compute根據函數的調用量自動進行執行個體擴縮容,在調用增加時建立執行個體,在請求減少後銷毀執行個體。整個過程中,通過請求自動觸發執行個體建立。首次發起調用時,需要等待執行個體冷啟動。
彈性執行個體(淺休眠(原閑置))
設定最小執行個體數≥1後,系統將自動啟用淺休眠(原閑置)功能。在此狀態下,無請求執行個體的部分資源將被凍結,僅產生最低保活費用。請求到達時,執行個體會進入活躍狀態,淺休眠(原閑置)狀態下凍結的資源快速解凍,暖開機效率通常大於2秒(具體時間因模型大小而異)。
以下情境的彈性執行個體會自動進入彈性執行個體(淺休眠(原閑置))計費狀態:
設定最小執行個體數≥1,處於無請求狀態的彈性執行個體。
會話親和情境下,執行個體保活期間的彈性執行個體。
背景工作情境下,未處理背景工作的彈性執行個體。
彈性執行個體(活躍)
以下情境的彈性執行個體會自動進入彈性執行個體(活躍)計費狀態:
未設定最小執行個體數,即預設最小執行個體縮容到0時,隨著請求自動啟動的彈性執行個體。
設定最小執行個體數≥1後,隨著請求到達,進入活躍狀態的彈性執行個體。
會話親和情境下,處理請求的彈性執行個體。
背景工作情境下,處理背景工作的彈性執行個體。
最小執行個體數
通過設定最小執行個體數≥1可有效解決彈性執行個體首次處理請求時存在的冷啟動問題,並能提前鎖定彈性資源保證剛性交付。針對WebSocket、gRPC等業務強依賴會話親和情境,設定最小執行個體數≥1能夠實現Session親和調度及長串連保持等,確保高即時互動的穩定性。
還可以通過配置定時伸縮和水位伸縮動態調整最小執行個體數,即系統指定時間段或指定指標利用率達到一定閾值後提升最小執行個體數應對負載高峰,並在負載下降到指定值後降低最小執行個體數,實現資源使用率的最大化。更多資訊,請參見執行個體伸縮限制及彈性策略。
配置函數
完成函數建立後,您可能需要根據業務需求調整以下配置項。
基礎配置
執行個體規格
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支援以任務模式執行非同步請求。在任務模式下,Function Compute系統會記錄您的每個任務在各個階段的執行狀態,提供任務狀態查詢,任務排隊數指標,任務去重,任務主動終止等功能。非同步任務適用於長時執行任務。如果您的非同步請求處理延時敏感,要求在百毫秒以下,或者您需要持續的每秒數千甚至更高的任務提交速度,那麼非同步任務模式不太合適。更多資訊,請參見非同步呼叫。
生命週期
函數執行個體會根據即時請求量動態建立或銷毀,每個函數執行個體的生命週期包括執行個體構建(Creating)、請求調用(Invoke)和執行個體銷毀(Destroy)三個階段。更多資訊,請參見配置執行個體生命週期。
健全狀態檢查
Function Compute支援為Web函數和GPU函數執行個體設定周期性健全狀態檢查,避免請求訊息被分配至異常執行個體而導致請求失敗。更多資訊,請參見配置執行個體健全狀態檢查。
DNS
自訂DNS功能適用於加速網站訪問等情境,且只支援內建運行時和自訂運行時。更多資訊,請參見配置自訂DNS。
自訂網域名
您可以為函數或應用綁定自訂網域名,實現通過固定的網域名稱訪問該函數或應用。您也可以將配置的自訂網域名作為來源站點網域名稱,為其添加CDN加速網域名稱,使您的訪問使用者能夠更加快速地讀取所需內容,降低訪問時延,提高服務品質。更多資訊,請參見配置自訂網域名。
調用函數
部署FC函數後,可以通過多種方式調用函數。例如Function Compute控制台快速建立測試事件來調用函數、使用SDK調用函數、調用API直接調用函數、函數URL HTTP(S)端點、事件來源觸發等。以下是函數調用過程中涉及到的一些概念。
同步調用
事件被函數處理完成後直接返回結果。更多資訊,請參見同步調用。
非同步呼叫
事件被成功觸發後立即返迴響應結果,無需等待背景工作執行完成。Function Compute系統會可靠地處理該訊息,但不會返回具體的調用情況和函數執行狀態。如您想擷取非同步呼叫結果,必須通過配置非同步呼叫目標來實現。具體資訊,請參見功能概覽。
調用分析
調用分析功能是函數請求層級的執行狀態匯總,開啟調用分析功能後,系統會收集合函式每次執行的指標資訊。更多資訊,請參見請求層級指標日誌。
執行個體數上限
當前函數最大的執行個體數上限。阿里雲帳號(主帳號)在單個地區內預設的執行個體數上限為100,實際數值以配額中心為準,如果您需要提高該限制,請前往配額中心申請。
單一實例並發度
單一實例並發度是指單個函數執行個體同時可以處理的請求數。通過自訂運行時和容器鏡像建立函數時,支援配置單一實例多並發,減少執行時間長度,降低總執行個體數從而提高資源使用率。更多資訊,請參見配置單一實例並發度。
其他相關概念
版本
發布版本相當於將當前代碼和配置固化為一個不可變更的基準版本,這個基準版本包括函數代碼及函數配置,不包括觸發器、非同步任務配置及彈性配置等資源屬性。版本類似於
Git裡的一個commit,該commit包含了一個或者多個代碼檔案及其配置變更,是當前倉庫的一次快照。更多資訊,請參見版本管理。別名
別名可以理解為指向特定函數版本的指標,使用別名訪問函數時,Function Compute會將別名解析為其指向的版本,調用方無需瞭解別名指向的具體版本。您可以利用別名來輕鬆實現發布、復原以及灰階發布等功能。別名類似於
Git裡的tag,可以將當前commit標記為tag,進而release為一次業務迭代。更多資訊,請參見別名管理。標籤
使用標籤(Tag)對服務資源進行歸類,便於搜尋和資源彙總。您還可以通過標籤功能將服務分組,實現不同角色對不同分組的服務擁有不同的操作許可權。更多資訊,請參見配置標籤。