玩转阿里云函数工作流(一)——秒级定时触发器
前言
阿里云函数工作流 Function Flow(FnF),是一个用来编排分布式任务的 Serverless 云服务,方便用户将大型复杂的任务拆分为更小的子任务,用户可按需设计子任务之间的执行顺序和跳转流程,并可实时跟进子任务的执行状态和针对子任务设计错误处理。以此来简化业务开发的流程跳转、错误处理,让用户更聚焦于业务逻辑的开发。
阿里云函数计算 Function Compute(FC),旨在帮助用户采用弹性伸缩、动态分配资源的方式来执行业务函数。让用户无需购买部署服务器,无需考虑业务负载,就能快速搭建可处理高并发的后台服务。
函数计算定时触发器支持定时执行用户函数,目前定时粒度只支持分钟级别。本文介绍如何使用函数工作流来进一步的实现函数秒级定时触发。
整体框架
借助于 FnF 提供的 task 任务步骤、wait 等待步骤 和 foreach 并行循环步骤,很方便的实现对 FC 函数调用或定时调用,以下介绍如何实现秒级定时调用 FC 函数 timer-handler
。
执行流程如下:
- FC 定时触发器分钟级别触发
timer
函数 -
timer
函数使用 FnF SDK 执行工作流 - 工作流中 task 步骤调用
timer-gen
函数生成秒级触发时间戳序列 - 并行循环 foreach 步骤为序列中每个时间戳生成并行定时任务来调用目标函数
timer-hander
实现
只需以下几步就能快速的实现对目标函数 timer-handler
的秒级定时调用:
1. 代码准备
下载 github 中 second-level-timer 示例代码。
2. 创建 FnF 工作流
在 FnF 控制台 使用代码中提供的流定义文件 flow.yml
创建工作流命名为 demo-timer-seconds
3. [可选步骤] 配置日志仓库 sls
修改 template.yml
,修改日志仓库为您自己的配置,函数的执行日志会写入到该日志仓库中。
4. 创建 FC 函数和定时触发器
在代码根目录执行 fun deploy
,该命令会读取执行目录下的 template.yml
自动创建所有定义的 FC 函数和定时触发器。
默认执行完毕后会在 FC 上创建
- 服务
fnf-demo
- 函数
timer
、timer-gen
、timer-handler
- 函数
timer
的定时触发器trigger
。
5. 验证是否生效
- 前往 FnF 控制台查看工作流
demo-timer-seconds
执行记录,该工作流会每分钟触发一次。
- 查看目标函数
timer-handler
调用记录,如果您在步骤 3 中配置了日志仓库,可直接前往查看
自定义执行
您可对示例代码中配置文件稍作修改,支持以下自定义执行:
自定义目标函数
如果想使用你自己的 FC 函数来替换实例代码中默认目标函数 timer-handler
:
- 在 FC 控制台创建好你的函数,比如服务名:demo-timer-service,函数名:demo-timer-function。工作流调用 FC 函数时要求函数返回值为
json
格式,因而请确保您的函数返回正确的json
格式,类似于timer-handler
。 - 修改工作流定义文件
flow.yml
中 task 步骤对应函数的 resourceArn
- 在 FnF 控制台,更新工作流的定义
自定义秒级触发间隔
示例中默认的执行间隔为 1s,你可以修改 template.yml
文件中定时触发器的输入 duration
字段来设置:
修改完后执行 fun deploy
重新部署定时触发器即可。
自定义目标函数的输入
目标函数 timer-handler
调用时默认的 event
输入格式为:
{ "triggerName":"trigger", "triggerTime":"2019-12-12T09:56:05Z", "payload":{ "data":"hello world", "duration":1 } }
您可以修改 template.yml
中 Payload
字段的 input 值来自定义目标函数的输入:
修改完后执行 fun deploy
重新部署定时触发器即可。
总结
函数工作流 FnF 极大简化了复杂业务流程的实现,将业务中每个子任务的执行变得可控透明化。同时工作流提供的逻辑步骤(顺序执行、并行、等待、跳转等)天然支持高并发和分布式任务的 Map/Reduce。
知识链接
使用和交流
欢迎使用阿里云函数工作流和函数计算服务
- 函数工作流官网客户群(钉钉):23116481
- 函数计算官网客户群(钉钉):11721331
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Drone服务初使用
概要 Drone是Go语言编写的,基于容器技术的CI/CD系统。是目前为止个人感觉最轻量级的CI/CD系统,使用本身非常方便容易。目前Drone文档严重缺乏,而且好多文档是之前历史版本的使用文档,所以在安装和使用时会有一些小麻烦,除去这些一切很舒服。前一篇已经写完如何安装Drone,本篇会以一个实例来讲一下,如何用Drone完成一个最简单Golang项目的部署。 激活指定项目 打开部署好的Drone页面: 搜索你要做自动化部署的项目(这儿是test-drone项目): 点击『ACTIVATE』进入: 激活成功进入配置页。注意,Project settings要选择Trusted,因为要挂载宿主机文件系统;其他按需要选择。 默认配置文件是.drone.yml, 一般也就用这个文件。到此项目激活成功,可以开始下一步行动了。 配置私钥 进入配置页面,输入Secret Name和对应的Secret Value后点击「ADD A SECRET」,就成功添加私钥 Docker Hub相关私钥 这儿要配置2个私钥,Docker Hub的用户名和密码,即执行docker login时要输入的用户名和密...
- 下一篇
快速搭建 Serverless 在线图片处理应用
作者:倚贤 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息参考。ImageMagick:ImageMagick 是一个用于查看、编辑位图文件以及进行图像格式转换的开放源代码软件套装。它可以读取、编辑超过100种图象格式。。参见维基百科词条 ImageMagick 是图片处理的利器,借助 ImageMagick 可以轻松实现图片的裁剪和缩放。虽然很多语言都封装了 ImageMagick 的调用库,但是把图片处理功能和核心业务功能放在同一个服务内,在软件架构上往往不适合。有如下两方面的原因
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果