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


当前回答

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

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

其他回答

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在评论中指出这一点。

我认为编排在内部非常适合高度分散的组织。您不需要中央业务流程执行器。这有利于每个组织子单元的独立成长和发展。

(我赞同编配与编排问题的解释: http://geekexplains.blogspot.com/2008/07/ways-of-combining-web-services.html)

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.

Service orchestration: you put together several services by a fixed logic. This logic is described at a single place. You can imagine a team of people with a manager doing micro-management. The manager precisly tells what, when and who should do. The team members do not care of the entire goal of the job, the manager combines the outputs into a single deliverable. A practical example is a BPEL process. BPEL process contains the logic, can invoke several services and combine their responses into a single service response.

Service choreography: the decision logic is distributed, with no centralized point. You can imagine a home, where everybody aims for the common good and works pro-actively without micro-management. Or you can imagine a human body, where different members are interdependent and work for the common goal. A practical example is event driven processing, where an agent is activated by an event and does its job. All the agents make a system together. There is no centralized logic. Choreography possibilities may go farther beyond orchestration as it is more aligned with the real world.

我的观点是,我们不需要对这两者进行太多区分,因为我们需要关注业务逻辑。在单点逻辑可以完成工作的地方,我们进行编排。如果一个问题不能被集中的逻辑覆盖,我们就不得不编排。这就是为什么我们经常在IT中遇到编排,而编排更多地是一个学术概念和一个研究主题。我们经常在不知情的情况下编舞,就像在现实世界中一样。

因为线程已经很老了,但仍然在为那些像我一样在这里跌跌撞撞地寻找这个问题的人写信。在面向服务的体系结构(SOA)中,这是一个备受争议的问题,初学者需要更清晰的解释。

业务流程:可执行过程

Used in private business processes A central process (which can be another Web service) takes control of the involved Web services and coordinates the execution of different operations on the Web services involved in the operation The involved Web services do not "know" (and do not need to know) that they are involved in a composition process and that they are taking part in a higher-level business process. Only the central coordinator of the orchestration is aware of this goal, so the orchestration is centralized with explicit definitions of operations and the order of invocation of Web services.

编排:多方合作

相反,编排不依赖于中央协调器。 相反,编排中涉及的每个Web服务都确切地知道 何时执行其操作以及与谁进行交互。 编舞是一种专注于交流的协作 公共业务流程中的消息。 编排的所有参与者都需要了解业务 流程、要执行的操作、要交换的消息和定时 信息交换。

编排与编排

从组合Web服务以执行业务的角度来看 流程、编排是一种更灵活的范式,并且具有 与编舞相比,以下优点: 组件过程的协调由一个 已知的协调员。 Web服务可以在它们不知道的情况下被合并 正在参与一个更大的业务流程。 在出现故障时,可以设置备用场景。