写点什么

亚马逊推出 Simple Workflow Service 手册

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

    阅读完需:约 4 分钟

亚马逊刚刚发布了一份白皮书与代码示例,其中包含了 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:103158

评论

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

币神量化交易系统开发|币神量化交易APP软件开发

系统开发

鼎昂量化交易系统APP开发|鼎昂炒币机器人软件开发

系统开发

(28DW-S8-Day17) 讲故事能力

mtfelix

28天写作 讲故事能力 复述能力

Wireshark数据包分析学习笔记Day5

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

面试被吊打系列 - Redis原理

数据库 架构 面试

vm

梅花鹿鹿

28天写作 3月日更

【动态规划/总结必看】从一道入门题与你分享关于 DP 的分析技巧 ...

宫水三叶的刷题日记

面试 算法 LeetCode

进步

lenka

3月日更

算法喜刷刷

Kylin

算法 3月日更 21天挑战

Python 数据类型

HoneyMoose

雪花算法,到底是个啥?

架构精进之路

算法 七日更 3月日更

正则表达式.04 - 引用

insight

正则表达式 3月日更

程序员成长第二十三篇:员工不符合预期,怎么办?

石云升

程序员 28天写作 职场经验 管理经验 3月日更

线上MySQL读写分离,出现写完读不到问题如何解决

程序员历小冰

MySQL 读写分离

准备参加软考的小伙伴注意了!

IT蜗壳-Tango

IT蜗壳 3月日更

优雅编程 | javascript代码优化的15个小知识

devpoint

ES6 JS代码优化 JS迭代

什么是职业

ES_her0

28天写作 3月日更

今日随想

Nydia

Elasticsearch Dynamic Mapping

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

事务消息应用场景、实现原理与项目实战(附全部源码)

中间件兴趣圈

RocketMQ 实战 消息中间件 事务消息

《精通比特币》学习笔记(第五章)

棉花糖

区块链 读书笔记 3月日更

《接口测试入门》 学习笔记

有梦想的tester

七日更 3月日更

不一样的软件们——GitHub 热点速览 v.21.10

HelloGitHub

数据库 GitHub 开源

CR量化交易APP开发|CR炒币机器人软件系统开发

系统开发

3-8 工作日志

技术骨干

LeetCode题解:518. 零钱兑换 II,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

冰河公开了进大厂的核心技能,服了!

冰河

程序员 面试 大厂技能 硬核技能图谱

如何用python优雅的写论文

张鹤羽

28天写作 3月日更

如何在 Python 中清屏

HoneyMoose

Java8 Stream 数据流,大数据量下的性能效率怎么样?

xcbeyond

Java java8 Stream<T> 3月日更

更新60篇的复盘:持续书写,见证文字的力量

boshi

写作 七日更

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