為滿足不同情境下的使用者需求,Function Compute提供事件函數、Web函數和任務函數的建立方式。本文介紹Function Compute支援的建立函數方式的適用情境及差異,供您進行技術選型。
選型分析
對比項 | 事件函數 | Web函數 | 任務函數 | |
適用情境 | 按照Function Compute定義的介面編寫程式處理事件。 | 基於各個語言的流行架構(Java SpringBoot、Node.js Express、Python Flask、Golang Gin等)編寫程式,或者遷移已有的架構應用。 | 容器鏡像
| 對函數發起非同步呼叫,且需要追蹤並儲存非同步呼叫各個階段的狀態,可以選擇建立任務函數。任務函數預設開啟任務模式,您可以使用任務模式提交、查看、停止和重試非同步任務。 |
冷啟動 | 最快。程式碼封裝中不包含運行時,所以冷啟動最快。 | 較快。Web函數使用公用鏡像,沒有鏡像拉取時間,所以冷啟動會較快。 | 較慢。需要拉取鏡像,所以冷啟動較慢。 | 最快。程式碼封裝中不包含運行時,所以冷啟動最快。 |
程式碼封裝限制 | 500 MB未解壓程式碼封裝 | 500 MB未解壓程式碼封裝 | 10 GB未解壓鏡像 | 500 MB未解壓程式碼封裝 |
程式碼封裝格式 | ZIP、JAR(Java)、檔案夾 | ZIP、JAR(Java)、檔案夾 | ZIP、JAR(Java)、檔案夾 | |
是否支援GPU執行個體 | 不支援 | 不支援 | 支援 | 不支援 |
運行時環境 | Node.js、Python、PHP、Java、.NET Core 、Go | 無限制 | 無限制 | Node.js、Python、PHP、Java、.NET Core 、Go |
函數建立方式介紹
事件函數
如果您想按照Function Compute定義的介面編寫程式處理事件,請選擇事件函數。具體操作,請參見建立事件函數。
Web函數
如果您想基於各個語言的流行架構(Java SpringBoot、Node.js Express、Python Flask、Golang Gin等)編寫程式、自訂容器鏡像,或者遷移已有的架構應用,請選擇Web函數。具體操作,請參見建立Web函數。
任務函數
如果您想對函數發起非同步呼叫,且需要追蹤並儲存非同步呼叫各個階段的狀態,可以選擇建立任務函數。任務函數預設開啟任務模式,您可以使用任務模式提交、查看、停止和重試非同步任務。詳情參見建立任務函數。