全部產品
Search
文件中心

Function Compute:Serverless工作流程

更新時間:Jul 06, 2024

本文介紹了工作流程調度固定版本或預留資源函數和Serverless 工作流程實現的具體步驟。

簡介

在實際生產情境中,任務流所調度的函數因為業務情境變化可能需要頻繁變更,您會考慮到如何避免變更帶來的非預期行為,控制變更穩定性。在Serverless 工作流程任務步驟使用固定版本的函數將對以下情境產生協助:

  • 流程A編排了多個函數f1、f2和f3,同一次任務必須執行函數的相同版本。假如流程A正在執行中,已執行完了函數f1,但是此時進行了函數更新,則正在執行的流程可能會執行函數f2、f3的最新版本造成非預期情況發生。那麼必須保證,每次流程執行函數的版本在執行時已經固定。
  • 某個函數的快速復原。上線後,發現流程執行失敗是由於新變更引起的,那麼需要快速復原流程執行上一固定版本。
  • 通過函數別名調用預留資源函數、降低函數冷啟動時間。關於Function Compute的計費方式和按量模式,請參見計費概述彈性管理(含預留模式)

Function Compute版本別名可以有效支援類似上述情境的持續整合、持續發布的各種需求。下文將通過一個具體樣本展示如何在流程中使用別名調用預留資源函數。預留資源函數是依賴於固定版本函數的,因此對於其他需要固定版本的情境,也可參見本樣本操作。

步驟一:建立函數預留執行個體

首先建立一個名為fnf-demoFunction Compute服務,並在該服務下建立一個名為provision的Python3函數並發布版本、別名,產生預留執行個體,詳細步驟,請參見彈性管理(含預留模式)

假設建立的函數版本為1,別名為online,並發布了一個預留執行個體。函數內容如下。

import logging

def handler(event, context):
  logger = logging.getLogger()

  logger.info('Started function test')
  return {"success": True}           

步驟二:建立工作流程

Serverless 工作流程Function Compute版本及別名進行了原生支援。

Serverless 工作流程的Task步驟中,預設填寫的resourceArn一般為acs:fc:{region}:{accID}:services/fnf/functions/test。按照函數執行規則,預設會選擇最新的函數版本執行。您發行就緒版本別名,並在工作流程Task步驟中填寫resourceArn一項為acs:fc:{region}:{accID}:services/fnf.{別名or版本}/functions/test來實現對特定版本函數的調用。因此,流程可以定義如下:

version: v1
type: flow
steps:
  - type: task
    resourceArn: acs:fc:::services/fnf-demo.online/functions/provision 
    # 也可以使用版本號碼,resourceArn: acs:fc:::services/fnf-demo.1/functions/provision。
    name: TestFCProvision          

步驟三:使用命令列或控制台執行並觀察預留函數執行

  1. 啟動工作流程執行。使用預留模式前。1
  2. 使用預留模式後。2

從工作流程的執行時間來看,在task步驟從未使用預留模式前的耗時500 ms縮短為預留模式後的230 ms。