我熟悉亚马逊SWF的概念。我可以看到许多不同语言的SDK使用SWF服务。此外,amazon Flow Framework是一组用于实现分布式应用程序的库。目前,此Flow Framework以Java和Ruby提供。那么我们如何在其他语言如python,php等中使用SWF编写分布式应用程序。这是否意味着amazon仅提供Java和Ruby的框架,其他语言还有其他供应商的库?请解释 。
答案 0 :(得分:1)
您说得对,AWS目前只提供Ruby和Java的高级框架(“Flow”框架)。大多数(所有?)官方SDK中都提供对SWF的低级访问:pyoto的boto2 / 3,go-sdk等。
使用SWF时,您会发现自己主要实现两种类型的程序:“活动工作者”和“决策者”(http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-actors.html)。
使用Flow框架不是强制性的,但它通过提供用于描述同步点的高级抽象,定义哪些任务可以并行运行,重试等来帮助实现决策者。还有非官方库(I'我个人为我的公司维护一个“simpleflow”)。
如果你想为决策者使用其他语言,我建议你首先尝试使用现有的框架,然后看看你是否想自己实现这个(根据我的经验,这并非易事)。
如果你想用其他语言实现活动,我建议你开始使用端到端的Flow框架,然后你可以1 / fork并使用你最喜欢的语言作为Ruby / Java Flow worker的子进程,或者2 /模仿Flow框架的序列化逻辑,并使用低级API直接实现工作者(这很简单:对一个活动进行轮询,做一些工作,然后用结果响应SWF)。