@lsmn
2017-01-07T06:21:51.000000Z
字数 1969
阅读 3595
AWS
微服务
Lambda
Amazon Web Services推出了AWS Step Functions,该服务让用户可以使用可视化工作流协调分布式应用程序和微服务。AWS Step Functions控制台支持定义状态机的JSON规范,从而在应用程序内执行“步骤(steps)”,例如,调用外部的AWS Lambda函数或者运行在AWS ECS上的容器化应用程序。
Amazon Web Services推出了AWS Step Functions,该服务让用户可以使用可视化工作流协调分布式应用程序和微服务。AWS Step Functions控制台支持定义状态机的JSON规范,从而在应用程序内执行“步骤(steps)”,例如,调用外部的AWS Lambda函数或者运行在AWS EC2容器服务(ECS)上的容器化应用程序。
通过AWS Step Function服务创建的每一个状态机都定义了一组状态以及状态之间的转换。状态可以顺序或并行激活,该服务可以确保所有并行的状态都运行完毕再进行下一步操作。状态会执行任务、作出决定,并通过状态机控制这个过程。每个状态机的多个副本可以同时独立地运行;每个副本称为一个“执行(execution)”。按照AWS博客的说法,AWS Step Functions服务允许并发运行数以千计的执行。
AWS Step Function状态机承担的所有工作都是由“任务(tasks)”负责处理。一项任务可以是:
- AWS Lambda函数:完全基于云的任务,在Lambda服务上运行。Lambda函数可以使用JavaScript(可以使用AWS管理控制台编写,也可以上传到AWS Lambda服务)、Java或Python(必须上传到AWS服务)编写。
- 一个活动:这个概念是指由“worker”应用程序或者托管在类似AWS EC2或AWS ECS这样的平台上的微服务执行的一项任务。
- Worker可以使用任何能够调用AWS Step Functions API的语言实现。
- Worker必须调用API “GetActivityTask”和“SendTask*”轮询AWS Step Functions。据AWS博客介绍,最基本的,一项活动甚至可以是一项“人工任务”,等待某个人来执行一些动作,然后继续。
- 如果一项活动有心跳超时时间,则实现这项活动的worker必须使用“SendTaskHeartbeat”动作发送心跳更新。
- 活动没有版本控制,它们应该总是向后兼容。如果必须对一项活动的定义做向后不兼容的修改,那么就应该借助Step Functions使用一个唯一的名称新建一项活动。
错误处理行为和重试逻辑可以作为状态机的一部分在JSON规范中指定。这让你可以构建“健壮的多步骤应用程序”,即使应用程序的一部分瞬时出现了问题,导致了短暂的故障,它仍然可以成功运行。
在创建状态机规范时,可以使用AWS Labs新推出的Ruby gem “statelint”验证手动或机器生成的JSON,从而发现常见的错误,包括状态不可达和遗漏终端状态。
任何状态机的设计都可以在AWS Step Functions控制台上以可视化的方式进行,而在执行过程中,可以启用一个彩色的图表来审查状态机内的当前进展(步骤成功/失败):
虽然AWS Step Functions最近才刚刚发布,但Leading Edge Forum研究人员Simon Wardley指出,该服务和类似AWS Lambda这样的“无服务器”功能可以支持未来“编码化(codification)”业务运作方式,这是为了提高灵活性而开始创建业务流程执行语言(BPEL)的早期尝试。
当你考虑AWS Lambda、AWS Step Functions等等服务时,你需要以一个自动化基本原则的角度来考虑,也就是说,不只是说或者编码到地图和相关系统中,而是要随处嵌入。大规模地,以我希望我们能够达到的竞争速度,那么,这是必须的。
据AWS博客介绍,AWS Step Functions当前的可用区域包括美国东部(北弗吉尼亚)、美国东部(俄亥俄州)、美国西部(俄勒冈州)、欧洲(爱尔兰)及亚太(东京)。作为AWS免费试用方案的一部分,用户每月最多可以免费运行4000次状态转换。除了免费使用方案外,每1000次状态转换的费用为0.025美元。
要了解更多信息,请查看AWS Step Functions的产品页面、AWS博客以及在YouTube上观看AWS最近举办的在线研讨会“AWS Step Functions发布”。
查看英文原文:AWS Step Functions: Coordinating Distributed Applications and Microservices Using Visual Workflows