编排与编舞


Answers:


333

诸如(XML,SOAP,WSDL)之类的基本技术提供了将服务描述,定位和调用为实体的手段。但是,这些技术并未提供有关服务在更复杂的协作中的角色的丰富行为细节。这种协作包括一系列活动以及活动之间的关系,从而建立了业务流程。有两种方法可以构建此过程:服务编排和服务编排。

服务编排

服务编排表示单个集中的可执行业务流程(协调器),该业务流程协调不同服务之间的交互。协调器负责调用和合并服务。

所有参与服务之间的关系由单个端点(即复合服务)描述。编排包括各个服务之间的事务管理。编排采用集中式方法进行服务组合。

编排

服务编排

服务编排是参与服务的全局描述,它是通过两个或多个端点之间的消息交换,交互规则和协议来定义的。编排采用分散式方法进行服务组合。

编舞

编排描述了多个服务之间的交互,其中从一个参与方的角度来看,编排表示控制。这意味着一个编排 不同编排相对于其中逻辑控制涉及应驻留在服务之间的交互。


7
精彩图片展示了两者!你从哪里买的?
David Mann

6
@DavidMann非常感谢您的评论,如果您认为这对您有用,请进行投票。我在Visio中制作了这些图,作为启发,我在服务组合中使用了一些文献。但是,我意识到这个答案是2年前刚开始阅读有关服务组合的知识。我会更新这个答案与参考文献和扩大双方的礼节
安德烈

@Andrei:再简单不过了。
Anshul Nigam '18

编排和编排相结合是否合理?例如,为核心同步工作流程进行编排,但随后进行一些编排以将异步事件流回源功能(微服务)。在我的场景中,这种方法可能使我不必做传奇/状态机和补偿逻辑。
Ryan.Bartsch

1
一些读者可能从您的业务流程图中推断出,业务流程意味着从控制服务到提供服务的同步调用。我想澄清的是,Invoke-Reply通信也可以使用异步方法来完成,例如。通过消息代理。
Christoph

34

服务编排:您通过固定逻辑将多个服务组合在一起。此逻辑在单个位置描述。您可以想象一个团队,其中有一个经理进行微观管理。经理清楚地告诉应该做什么,什么时候以及由谁做。团队成员并不关心整个工作目标,经理将输出合并为一个可交付成果。一个实际的例子是BPEL流程。BPEL流程包含逻辑,可以调用多个服务并将它们的响应组合为一个服务响应。

服务编排:决策逻辑是分布式的,没有集中点。您可以想象一个家庭,每个人都为共同的利益而努力,并且在没有微观管理的情况下主动工作。或者您可以想象一个人体,其中不同的成员相互依存,并为共同的目标而努力。一个实际的示例是事件驱动的处理,其中代理由事件激活并完成其工作。所有代理共同构成一个系统。没有集中的逻辑。编排的可能性可能会比编排更远,因为它与现实世界更加契合。

我的观点是,我们不需要在这两者之间做太多区分,因为我们需要专注于业务逻辑。在一个逻辑点完成任务的地方,我们进行编排。在集中式逻辑无法解决问题的地方,无论如何我们都被迫编排。这就是为什么我们经常在IT流程中遇到杂乱无章的原因,而杂乱无章仍然是一个学术概念和研究主题。就像在现实世界中一样,我们经常在没有实际了解的情况下进行编排。


21

服务可以在原子服务和其他服务组成的服务之间进行区分。这样的组成被称为“编排”。有时是工作流程,有时是业务流程。例如,BPEL是一种编排语言,但自称为“业务流程执行语言”。

不要求服务必须按层次构成。这意味着,两个服务可能会互相交谈。它们之间运行的协议称为“编排”。它可能是两个服务,但是通常涉及两个以上的服务。编排中的每个服务都可以视为伙伴服务的协调器。参与编排的每个服务可以被实现为编排/工作流程/过程。

编排显示了每个服务的完整行为,而编排则组合了每个服务的接口行为描述。

以下是一篇区分编排,界面行为,提供者行为和编排的优秀科学文章: Dijkman,R.&Dumas,M.面向服务的设计:一种多视角方法国际合作信息系统杂志,2004,13, 337-368


19

由于线程较旧,但仍为那些会像我一样在这里寻找这个问题的人而写。在面向服务的体系结构(SOA)中,这是一个备受争议的问题,它需要为初学者提供更清晰的解释。

编排:可执行过程

  • 用于私人业务流程
  • 中央进程(可以是另一个Web服务)控制所涉及的Web服务并协调对操作所涉及的Web服务上不同操作的执行
  • 所涉及的Web服务不会“知道”(并且不需要知道)它们参与了组合过程,并且它们正在参与更高级别的业务过程。
  • 只有业务流程的中央协调者才知道此目标,因此业务流程通过明确的操作定义和Web服务调用顺序来进行集中。

在此处输入图片说明

编舞:多方协作

  • 相比之下,编舞并不依赖中央协调器。而是,编排中涉及的每个Web服务都确切知道何时执行其操作以及与谁进行交互。编排是一项协作工作,致力于在公共业务流程中交换消息。

  • 编排的所有参与者都需要了解业务流程,要执行的操作,要交换的消息以及消息交换的时间。

在此处输入图片说明

编排与编排

  • 从组合Web服务以执行业务流程的角度来看,编排是一种更灵活的范例,与编排相比具有以下优点:

  • 组件过程的协调由已知的协调员集中管理。

  • 可以合并Web服务,而无需知道它们正在参与更大的业务流程。

  • 如果发生故障,可以采用其他方案。

1
实际上,编排通常确实依赖中央协调器-通常,该协调器是某种形式的分布式消息代理。不使用诸如消息代理之类的东西会以非常不灵活的方式将您的服务绑定在一起,从而导致脆弱性和低可重用性。
Rodney P. Barbati

8

Andrei和其他人在解释什么是编排和什么是编排方面做得很好。对于在这两种选择之间进行选择的软件架构师,将它们在不同质量方面进行比较也很重要。

编排优于编排

  • 可靠性:业务流程平台内置了对错误处理和事务管理(补偿事务)的支持。在编排中,自定义开发的工作流和错误处理往往更容易出错。
  • 可修改性:在业务流程平台中的可视化BPM工具中,创建和更改流程工作流以及复杂的服务组合变得更加容易。

编排优于编排

  • 性能:由于工作流程脚本解释和业务流程平台本身的附加层,业务流程会产生性能开销。

  • 成本:编舞不需要额外的中间件或语言,而中间件或语言具有相关的学习曲线和治理负担。

编辑

如果业务流程元素不采用高可用性机制,则业务流程解决方案可能会引入SPOF。感谢@Deepak por在评论中指出这一点。


3
除了编排确实需要其他中间件。需求(任务)需要匹配到不同的节点。之后,将编排,制定,监视和调整编排。所有这些管理都需要通常由中间件提供的工具。
Andrei'2

1
编排是否不会带来编排所没有的单点故障的缺点?
迪帕克


6

当您控制流程中的所有参与者时,编排非常有用-当他们都处于一个控制域中并且您可以决定活动的流程时。当然,这通常是在您指定要在您拥有控制权的组织内部制定的业务流程时进行的。

编排是一种指定两个或多个参与方(其中没有一个对其他参与方的流程具有任何控制权,或者对这些流程的任何可见性)可以如何协调其活动和流程以共享信息和价值的方式。当需要跨控制/可见性域进行协调时,请使用编排。您可以在简单的情况下将编排视为网络协议。它规定了各方之间可接受的请求和响应模式。


5

查看服务编排与编排的另一种方式:

-服务编排:围绕业务领域。
-服务编排:在多个业务领域中。


1

在编排中,有指挥家和乐器演奏者。玩家根据指挥的行为进行游戏。如果更换了导体,谐波表示将有所不同,即它仍然是相同的作用(服务),但结果不同。例如,为了提供财务安排建议,业务流程服务将根据指挥家的模板(业务)要求(调用)每个参与者(实体或公用事业服务,例如信用检查)进行播放(返回结果或调整/更新其播放)来进行规则)。在舞蹈编排中,有一个舞蹈编排和一群舞者。编舞是一个方向,但是每组舞者在实现该方向上都是自主的。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.