為滿足不同情境下的使用者需求,Function Compute提供事件函數、Web函數、任務函數和GPU函數四種函數類型。本文介紹Function Compute支援的函數類型的適用情境及差異,供您進行技術選型。
選型分析
函數類型選型
對比項 | 事件函數 | Web函數 | 任務函數 | GPU函數 |
適用情境 | 基於各個語言的流行Web應用程式框架(Java SpringBoot、Node.js Express、Python Flask、Golang Gin等),快速構建Web應用,或者遷移已有的架構應用。 | 對函數發起非同步呼叫,且需要追蹤並儲存非同步呼叫各個階段的狀態,可以選擇建立任務函數。 | 使用流行AI專案(Stable Diffusion WebUI、ComfyUI、RAG、TensorRT等)的容器鏡像建立GPU執行個體,快速構建AI模型推理服務。 | |
運行時環境 | 推薦使用內建運行時 | 推薦使用自訂運行時 | 推薦使用內建運行時 | 僅支援自訂容器運行環境 |
非同步任務 | 預設關閉 | 預設關閉 | 預設開啟 | 預設關閉 |
函數運行環境選型
對比項 | 內建運行時 | 自訂運行時 | 自訂容器運行環境 |
開發流程 | 按照Function Compute定義的介面編寫請求處理常式。 | 基於Web應用程式框架模板開發應用,通過公網訪問地址即時看到結果。 | 將自訂鏡像上傳至ACR然後使用鏡像,或者使用ACR中已有的鏡像。 |
支援的執行個體類型 | CPU執行個體 | CPU執行個體 | CPU執行個體和GPU執行個體 |
單一實例多並發 | 不支援 | 支援 | 支援 |
冷啟動 | 最快。程式碼封裝中不包含運行時,所以冷啟動最快。 | 較快。程式碼封裝是一個HTTP Server程式,體積較大,但不需要拉取ACR容器鏡像,所以冷啟動會較快。 | 較慢。需要拉取鏡像,所以冷啟動較慢。 |
代碼交付物大小限制 | 程式碼封裝大小不超過100 MB或500 MB,具體請參見代碼部署套件大小限制說明。 |
| |
代碼交付物格式 | ZIP、JAR(Java)、檔案夾 | 容器鏡像 | |
支援的程式設計語言 | Node.js、Python、PHP、Java、C#、Go | 無限制 | 無限制 |
通過控制台建立函數
事件函數
如果您想通過事件觸發(OSS觸發器、Kafka觸發器、SLS觸發器等)來調用關聯函數,請參見建立事件函數。推薦您選擇內建運行時作為運行環境。
Web函數
如果您想基於各個語言的流行架構(Java SpringBoot、Node.js Express、Python Flask、Golang Gin等)編寫程式,請參見建立Web函數。推薦您選擇自訂運行時作為運行環境。
任務函數
如果您想對函數發起非同步呼叫,且需要追蹤並儲存非同步呼叫各個階段的狀態,可以選擇建立任務函數。任務函數預設開啟任務模式,您可以使用任務模式提交、查看、停止和重試非同步任務。詳情參見建立任務函數。推薦您選擇內建運行時作為運行環境。
GPU函數
如果您想使用流行AI專案(Stable Diffusion WebUI、ComfyUI、RAG、TensorRT等)的容器鏡像建立GPU執行個體,請使用GPU函數。具體操作,請參見建立GPU函數。GPU函數僅支援自訂容器運行環境。
相關文檔
關於非同步任務的更多資訊,請參見非同步任務。
關於執行個體類型的更多資訊,請參見執行個體類型及使用模式。
關於單一實例多並發功能的更多資訊,請參見配置單一實例並發度。
如果您想瞭解關於Function Compute冷啟動的更多資訊,請參見概念。