从组织内部的角度来看,服务编制和服务编排之间的区别是什么?


当前回答

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

配器优于舞蹈编排

Reliability: Orchestration platforms have built-in support for error handling and transaction management (compensating transactions). In choreography, custom-developed workflow and error handling tends to be more error-prone. Also, choreography is often event-driven and much of the processing is asynchronous. Therefore, choreography may require undo/correction events that add complexity to the solution. Modifiability: Creating and changing process workflows and complex service compositions is easier in the visual BPM tools found in orchestration platforms. You gain in "process visibility".

编舞优于编曲

性能:由于工作流脚本解释和编制平台本身的附加层,编制会引起性能开销。 成本:编排不需要额外的中间件或语言,它们有相关的学习曲线和治理负担。

EDIT

如果编配器元素没有采用高可用性机制,编配解决方案可能会引入SPOF。谢谢@Deepak在评论中指出这一点。

其他回答

编配和编排都是大规模的过程形式主义的两种哲学,即协作空间。协作空间是一个行业的正式表示,例如健康行业、食品行业、汽车行业或... .因此,在您决定编排它们或使用编排来提供对终端消费者有意义的需求之前,您应该有一些小规模的能够使用某种交流语言的服务提供者。

编排通常遵循分布式系统中著名的中间件。IT行业中一些很好的工具例子可以是Juju, Zapier IFTTT。您可以对所使用的服务进行集中控制、听觉、修改和故障排除。

Choreography is more decentralized than orchestration in the sense that it accepts more autonomous collaborators. For example bitcoin network is a collection of service providers called nodes which collectively provide a Defi service namely distributed ledger functionality to its service end-consumers. But this does not have any centralized authority in charge, and there is no total-view over whole network. There is just a consensus machanism that if respected candidate service provider joins the network and participate in end-consumer service provision. Anywhere you need to attack trusted third party and its side effects such as corruption, an orchestration would not suffice.

同样,任何行业参与者之间的任何协作都可能受到编排或编排的影响,因此我希望将示例仅限于IT行业不会造成误导。

我还可以补充一点,命名暗示了两者与舞台表演的相似之处。在管弦乐队中,如果每个乐器演奏者都跟随指挥,他/她就能与其他成员和谐相处。另一方面,类似于编舞中的舞台舞蹈,没有指挥,每个舞台舞者只与他/她的搭档协调(最好是作为同伴),没有单一的协调领导。但两者仍然向观众呈现和谐。

另一种看待服务编排与编排的方法:

—服务编排:围绕业务域。 —服务编排:在多个业务域之间。

In orchestration, there is a conductor and there are instrument players. Players play according to how conductor conducts. If conductor is replaced, the harmonic expression will be different i.e. it is still the same play (service) but with a different outcome. For example, to provide a financial arrangement proposal, the orchestration service will conduct by asking (invoking) each player (entity or utility service, e.g. credit check) to play (return results or adjust/update its playing) according to conductor's template (business rules). In choreography, there is a choreographer and there are groups of dancers. Choreography is a direction, but each group of dancers is autonomous in how to realize that direction.

One can use both choreography and orchestration is the same system as we have done in our product. Various actors performing various tasks dispatched to them are choreographed by the event pub/sub system via events they generate. For example, when a prime mover carrying a container arrives at a warehouse, that event, which is subscribed by the warehouse manager app, prompts the warehouse manager to activate the resources to unload the cargo. But when exceptions happen, such as the forklift to carry the load breaks down, that event starts an orchestration engine (a workflow processor) to orchestrate the task for various actors as per the exception handling workflow to handle the exception.

当您可以控制流程中的所有参与者时——当它们都在一个控制域中并且您可以指定活动流时,编排非常有用。当然,当您指定将在您拥有控制权的组织内部实施的业务流程时,这是最常见的情况。

编排是一种指定两个或多个参与方如何协调其活动和过程以共享信息和价值的方法——其中任何一方都不能控制其他参与方的过程,或者可能对这些过程没有任何可见性。当需要跨控制/可见性领域进行协调时,使用编排。在一个简单的场景中,您可以把编排想象成一个网络协议。它规定了各方之间可接受的请求和响应模式。