写点什么

亚马逊推出 Simple Workflow Service 手册

  • 2013-01-25
  • 本文字数:1236 字

    阅读完需:约 4 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

亚马逊刚刚发布了一份白皮书与代码示例,其中包含了 Amazon Simple Workflow Service 手册

Amazon Simple Workflow Service(SWF)是

……面向创造可扩展、弹性应用的工作流服务。不论是金融或者保险应用中的业务流程自动化,构建复杂的数据分析应用,还是管理云基础设施的服务,亚马逊 SWF 能可靠地协调应用中的每个处理步骤。

SWF 的最大优点在于,它是完全管理的服务,用户不需要在硬件或管理维护上进行任何额外的投资,即,不需要进行调优、打补丁或升级。它提供了简单的 API,并允许在 EC2 或任何联网的计算机上执行工作流步骤。SWF 基于轮询(Polling)实现,因此运行在内部(企业内部)的程序可以向 SWF 轮询以获取新的任务。最后,AWS 管理控制台还可以为工作流提供当前状态及执行历史的详细报告。

SWF 的实现要求给新的 / 现有的应用增加决策(decider)代码,该代码通过指定工作顺序、分时、故障条件来定义工作流的协作逻辑。另外还需要实现活动(activities),即用来执行工作流每一步的组件。决策程序和活动组成工作流。一旦决策程序和活动就位,SWF 服务代表应用协调所有工作。

尽管 AWS SWF 有这些优点,但由于缺乏示例和有关实现的最佳实践,搭建 SWF 应用并不是件容易事。亚马逊新发布的白皮书填补了这个空白。该白皮书提供大量工作流模式的实施范例,并提供了实现这些模式的代码。白皮书覆盖了如下几类模式和实现的相关信息:

反复执行某一活动,包括:

  • 指定次数循环重复执行某一活动
  • 指定次数递归执行异步活动
  • 在条件满足的情况下递归执行异步活动

同步执行多个活动,包括:

  • 固定数目活动的分支聚合
  • 动态决定活动数目的分支聚合
  • 分裂多个活动并使用第一个完成的活动的执行结果

工作流逻辑的条件执行,包括:

  • 基于条件执行多个活动中的一个活动
  • 基于条件执行一个更大群体中的多个活动

人工完成一个活动任务:人工活动实现

异步执行的异常处理:

  • 处理异步代码(如活动)产生的异常以及通过 try/catch/finally 清理资源
  • 处理其他异步代码调用另一个异步代码产生的异常

重试执行失败的异步代码:

  • 重试某项活动直到成功,或者重试达到一定的次数
  • 注解一个活动以便框架可以通过使用时间递增重试策略进行自动重试,即,每次重试间隔增长,在达到指定值后停止
  • 通过 RetryDecorator 类实现时间递增重试,即在运行时指定重试策略,也可按需修改
  • 通过 AsyncRetryingExecutor 类实现指数重试,即允许运行时指定重试策略。另外,白皮书还展示了在实现 run 方法中 AsyncRunnable 抽象的用法,即,在每次重试的时候 AsyncRetryingExecutor 都会要求执行活动。
  • 实现定制的重试策略

工作流的信号传送:实现在执行前等待某一信号一定时间的工作流

新发布的 SWF 手册为实现新的定制工作流了提供了了一个绝佳的起点。

查看英文原文 Amazon Provides Simple Workflow Service Recipes


感谢杨赛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-01-25 02:103074

评论

发布
暂无评论
发现更多内容

在线YAML转JSON工具

入门小站

工具

事务的隔离级别与MVCC

蝉沐风

MySQL 事务隔离级别 事务

亚马逊云科技平台上的无服务器 WebSocket

亚马逊云科技 (Amazon Web Services)

Serverless websocket 亚马逊云科技 appsync

热敏电阻、RTD、热电偶的原理和特性

不脱发的程序猿

PT100 热敏电阻 RTD 热电偶

spring-cloud-kubernetes与k8s的configmap

程序员欣宸

Java 4月月更

银行App为什么都不怎么好用?

InfoQ IT百科

深入浅出 Ext4 块和 Inode 分配器的优化(下)

焱融科技

云计算 高性能 文件存储 文件系统

预测猝死时间:AI与死神的争夺

脑极体

虎符交易所完成三月份HOO回购 生态板块持续扩展

区块链前沿News

Hoo 虎符交易所 回购

Flutter 使用 Dio 的 Post 请求添加数据

岛上码农

flutter ios 安卓开发 4月月更 跨平台开发

如何制定移动APP的加载与刷新策略?

InfoQ IT百科

外包学生管理系统

流火

Python 中删除列表元素的三种方法

AlwaysBeta

Python List 编程 程序员 列表

[Day21]-[动态规划] 494. 目标和

方勇(gopher)

LeetCode 动态规划 数据结构算法

如何进行APP版本升级管理?

InfoQ IT百科

云效钉钉小程序上线啦!业务方请痛快一键三连

阿里云云效

阿里云 云原生 钉钉 研发 云效钉钉小程序

在线CSV转XML工具

入门小站

工具

架构训练营 - 模块 3- 作业

kenlu

Robot OS网络通信MQTT实战

轻口味

c++ android IoT mqtt 4月月更

Go 语言入门很简单:sort 包

宇宙之一粟

排序 Go 语言 4月月更

Pipy MQTT 代理之(三)Logging

Flomesh

IoT 代理 mqtt Pipy

2022年,我加入了微软MVP大家庭

不脱发的程序猿

开源社区 技术影响力 微软MVP

linux之sshpass命令

入门小站

Linux

抖音获客源码,蓝V思域运营,大热的X-Gorgon 0408和8408算法,今年的SaaS源码,编程语言需要变革吗?

yunluohd168

抖音短视频获客系统 抖音获客源码

模块三作业(学生管理系统架构设计文档)

Dean.Zhang

学生管理系统详细架构设计文档

踩着太阳看日出

架构训练营

OpenMLDB Pulsar Connector:高效打通实时数据到特征工程

第四范式开发者社区

数据库 数据传输 OpenMLDB 特征 特征平台

Grpc服务开发和接口测试初探【Java】

FunTester

睡眠革命

石刻掌纹

开源规则引擎——ice:致力于解决灵活繁复的硬编码问题

声网

开源 规则引擎 Dev for Dev

MongoDB Java 原生使用示例

Java mongodb 4月月更

亚马逊推出Simple Workflow Service手册_亚马逊云科技_Boris Lublinsky_InfoQ精选文章