编排引擎如何工作

时间:2013-08-22 11:01:30

标签: orchestration

我对这个主题有几个问题。例如,我发现了很多类似的论文 “迈向语义Web服务的动态编排” “复合Web服务的分散式编排” 等等...但在实践中,我发现只有与Bitztalk或ESB链接的编排(我的意思是大软件程序员)。

是否有可能自己开发和编排语言? 开发编排引擎的最佳方法是什么?

1 个答案:

答案 0 :(得分:25)

关于 Orchestration的目的和应用的最佳信息来源可能是您引用的论文本身。

背景

我们在Firefox上浏览网页,在Microsoft Office上键入文档。这些是集中式应用程序。这些类型的软件可以在一个地方工作。它们在您的计算机上运行,​​它们可以在我的计算机上运行。

您前往超市,领取物品并从许多现金柜台中的一个退房。每个办公桌的每个职员都有自己的条形码扫描仪和他自己的刷卡读卡器。这些柜台上的每个收银机都链接到某个后台房间的一台服务器。在此设置中,计费软件分布在职员的柜台上,但整个应用程序仍然是集中的。服务器管理库存并记录销售。它是集中化中心

然后你写了一封电子邮件并发送给它。假设您将Gmail帐户中的电子邮件发送到我的Hotmail帐户。有Gmail的服务器,还有Hotmail的服务器。有两个中心,而不是一个。现在事情不再集中 - 我们有一个分布式系统。在这里,一个中心的失败不会削弱整个系统。如果Hotmail发生故障,Gmail仍然存在。

不是从当地超市购买,而是从网上商店购买东西。说eBay或亚马逊。在这个例子中,有eBay的服务器,还有eBay的供应商。供应商在自己的服务器上管理自己的库存,而不是在eBay的服务器上。还有一家快递公司将包裹带给买家。买家也有自己的服务器。买方的在线支付是通过万事达卡,另一个单独的服务器。现在我们谈论的是一个非常大的分布式系统。

目的

既然您正在进行在线购买,那么很多事情都会发生,这需要的不仅仅是一堆服务器。必须有一个主要的木偶操纵者同步这些服务器之间的活动。必须扣除一个帐户。必须发送电子邮件。必须通知仓库。需要安排快递员。谁控制这种错综复杂的舞蹈?这是你的协调者。

应用

大多数情况下,有许多不同的独立服务器,每个服务器都由不同的实体拥有。然而,当所有这些实体需要共同创建业务流程,“用户交互会话”时,我们需要编排。

通过 master-puppeteer 服务器实现一组服务器之间的活动编排。实际上,协调器本身就是一组服务器。因此,一组服务器指向另一组服务器。这些第二组服务器是实际工作的地方。正在发送电子邮件。图像正在被压缩。正在对地址进行排序,依此类推。第一组服务器(orchestrator)确保事情按照需要发生的顺序发生。

实施

一个答案:排队。开始这整个故事的一项活动是尝试进行在线购买。从那里,您所做的点击,您发送的命令,都在这些业务流程服务器中排队。像purchase-this-itemmake-a-payment然后payment-received这样的命令都排队,然后一个接一个地处理。

业务流程系统在一个线程上接受这些命令,并且在另一个线程上,业务流程服务器异步将它们分派给相应的工作服务器。因此purchase-this-item命令被分派到eBay的服务器,而make-a-payment命令被分派到MasterCard的服务器。

工作服务器可能会生成更多命令。验证您的卡号后,万事达卡服务器可能会决定向您发送短信。所以它向队列添加send-sms命令。该命令被发送到Vodaphone服务器。

这种排队和调度逻辑称为“编排引擎”。从那里,事情可能会变得复杂。 Vodaphone服务器可能处于脱机状态。万事达卡可能拒绝该卡。仓库服务器可能会返回out-of-stock响应。然后,该响应将需要路由到eBay的服务器,该服务器可以将purchase命令重新排队到某个不同的仓库。有服务器崩溃。磁盘故障。停电等等。

最后

Orchestration是为了确保在地理上分布在不同的时间点上有这么多不同的组件,有些是并行的,有些是错误的,有些是慢的,有些是恶意的,有些是非法的......所有这些都是为了获取你是通过互联网购买的该死的耳机。