天天看点

玩转阿里云函数工作流(一)——秒级定时触发器

前言

阿里云函数工作流

Function Flow(FnF),是一个用来编排分布式任务的 Serverless 云服务,方便用户将大型复杂的任务拆分为更小的子任务,用户可按需设计子任务之间的执行顺序和跳转流程,并可实时跟进执行状态和设计错误处理。极大简化业务开发流程跳转、错误处理,让用户更聚焦于业务逻辑的开发。

阿里云函数计算

Function Compute(FC),旨在帮助用户采用弹性伸缩、动态分配资源的方式来执行业务函数。让用户无需购买部署服务器,无需考虑业务负载,就能快速搭建可处理高并发的后台服务。

函数计算

定时触发器

支持定时执行用户函数,目前定时粒度只支持分钟级别。本文介绍如何使用函数工作流来进一步的实现函数秒级定时触发。

整体框架

借助于 FnF 提供的

task 任务步骤

wait 等待步骤

foreach 并行循环步骤

,很方便的实现对 FC 函数调用或定时调用。以下介绍如何实现秒级定时调用 FC 函数

timer-handler

玩转阿里云函数工作流(一)——秒级定时触发器

执行流程如下:

  1. FC 定时触发器分钟级别触发

    timer

    函数
  2. timer

    函数使用 FnF SDK 执行工作流
  3. 工作流中 task 步骤调用

    timer-gen

    函数生成秒级触发时间戳序列
  4. 并行循环 foreach 步骤为序列中每个时间戳生成并行定时任务来调用目标函数

    timer-hander

部署实现

你可以选择以下方式使用,推荐应用中心方式,只需简单的点击创建就能完成。

一、通过 FC 应用中心部署

实现已集成在

FC 应用中心

,可直接前往创建使用。

1. 创建应用

玩转阿里云函数工作流(一)——秒级定时触发器

2. 验证是否生效

玩转阿里云函数工作流(一)——秒级定时触发器

二、通过脚本部署

当然如果某些需求需要更改模版脚本,可选择通过脚本方式部署

1. 代码准备

下载 github 中

second-level-timer

示例代码。

2. 安装依赖

下载并安装

aliyun 命令行工具

3. 部署

示例使用

资源编排 ROS

服务,自动编排所有资源。在代码根目录执行:

Action=create StackName=fnf-timer-demo ResourceArn=XXX Input='{\"name\": \"hello world\"}' Duration=5 ./deploy.sh           

其中:

  • ResourceArn

    :目标函数 resource arn,默认为

    acs:fc:::services/FnFDemoTimer/functions/timer-handler

  • Input

    :目标函数调用时输入 event 的 payload

    目标函数 event 默认格式为:

    {
     "triggerName":"trigger",
     "triggerTime":"2019-12-12T09:56:05Z",
     "payload": {
        "name":"hello world",
      }
    }           
  • Duration

    :设置目标函数被调用的秒级间隔,默认 1s

关于其它可自定义参数和如何更新部署,参考

deploy.sh

脚本或

README

执行完毕后会自动创建以下资源:

  • ROS 栈,默认名为

    stack-fnf-timer-test

    ,可通过

    StackName=XXX

    指定
  • Ram 角色

    TimerFCRole-test

    TimerFnFRole-test

  • FC 服务

    FnFDemoTimer

    并绑定角色

    TimerFCRole-test

  • FC 函数

    timer

    timer-gen

    timer-handler

  • FC 定时触发器

    trigger

  • FnF 工作流

    FnFSecondLevelTimer-test

4. 验证是否生效

  • 前往 FnF 控制台 查看工作流

    FnFSecondLevelTimer-test

    执行记录,该工作流会每分钟触发一次。
    玩转阿里云函数工作流(一)——秒级定时触发器
  • 查看目标函数

    timer-handler

    调用记录,如果您在部署中指定了日志仓库配置

    Project=XXX Logstore=XXX

    ,可直接前往查看
    玩转阿里云函数工作流(一)——秒级定时触发器

总结

函数工作流 FnF 极大简化了复杂业务流程的实现,将业务中每个子任务的执行变得可控透明化。同时工作流提供的逻辑步骤(顺序执行、并行、等待、跳转等)天然支持高并发和分布式任务的 Map/Reduce。

知识链接

函数工作流文档 函数计算文档 函数计算定时触发器

使用和交流

欢迎使用阿里云函数工作流和函数计算服务

  • 函数工作流官网客户群(钉钉):23116481
  • 函数计算官网客户群(钉钉):11721331