阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

编配和编排的定义之争

  • 2008-09-05
  • 本文字数:1770 字

    阅读完需:约 6 分钟

随着 SOA 所受关注渐增,标准化(给予精确的含义)所用术语显得尤为重要。一场有趣的讨论更是阐明的了这点。这场讨论的起因是Michale Poulin 抛出了这样一个问题,“orchestration(编配)”和“choreography(编排)”之间的区别何在,并寻求指引能将这一区别“清楚阐述”的解答。他的问题引来了一窝蜂的回复,而不是简单的答案,每个人根据自己不同的理解,给出的含义也略有差异……

Anne Thomas Manes 从引用 Merriam-Webster(韦氏大词典)上这些词汇的传统含义来展开她的解释:

编排(Choreography):一种象征性地表达舞蹈的艺术:

  • 对舞蹈的组合以及安排,特别是芭蕾
  • 这一活动所产生的作品

编配(Orchestration):针对乐队表演对音乐作品进行的调整;又:对音乐作品的乐队演奏

尽管这一定义并不能真正从 IT 的角度帮助澄清编配(orchestration)与编排(choreography)之间的差异,但许多讨论的参与者都间接地用到了它。Anne 接着又通过引用在现有的 WS-* 规范,即业务流程执行语言(BPEL)与 Web 服务编排定义语言(WS-CDL)中的定义,继续进行了阐释:

编配(Orchestration)指的是自动执行一个工作流,即,你用一种执行语言如 BPELP 定义好工作流,同时你让编配引擎在运行时执行这一工作流。一个编配好的工作流一般暴露为一个可以通过 API 调用的服务。它并不描述两三个参与方之间一系列协调交互。

编排(Choreography)指的是对两者或两者以上参与方之间协调交互的描述。例如,你请求投标,我给出报价,你下采购单,我向你发货。

John Evdemon 表达了另一种略为不同的观点,基于其可见性对这两个术语进行了分类:

编配描述了一个宏观流程表现出来是如何完成工作的,而没有明确说明其如何实现。

我将编排视为一种点对点形式的交互,因为不存在所谓的“指挥”。编排是一种交互的议定(agreed-upon)模型,这个交互可能由一系列编配组成。

从 B2B 的视角而言,编配是组织内的,而编排是组织间的。更简洁一点,一个组织谈不上对另一组织进行编配。

Steve Johns 更进一步细化了这一定义:

编配是“固定”的,其主要是步骤和决策的描述集合。而编排,应该是更具目标导向性,是关于通向那个目标的各资源之间的相互协调。

Alan Dean 根据整个架构中是否含有一个“集中式控制者”来区分这两个术语:

对我而言,编配 / 协调有一个中心的指挥者 / 协调者,而编排却没有…… - 编配是专制的

  • 编排是自治的

来自 Metamaxim 的 Ashley McNeile 将编排追溯到 RosettaNet 的“合作伙伴接口流程(Partner Interface Processes)”标准,并将其认为是对参与方之间特定的(交互)行为模式的一种描述。他认为这一争端:

……并非是在于“编排”和“编配”在概念上到底有多大区别,而是在于需要一种语言在独立于编配之外来描述 / 捕获编排。

Rob Eamon 站在 Ashley 这方,谈到:

就架构定义或是设计而言,编排和编配的区别又有什么影响呢?在一个架构或设计中使用其中一个术语而不加以更多解释就够了吗?对我而言,这是在一特定上下文假设某种特定含义将会导致无法沟通的又一例证。明智的做法是保证各参与方对所用的术语有共同的理解,而不管术语是如何定义的。

这一观点与 Gregg Wonderly 不谋而合:

通常的情况是,计算机科学家选用了业已存在的词汇,并试图将其运用到某种特定的上下文中。而在不同的上下文了解和使用这些词汇人们,积累的偏颇与经验使其在领会这些用途时不免有错有对(二元逻辑, “有时候”是很难作为一个合理解释在绝对逻辑的世界里使用的)。因此,我们之所以要有这么多讨论是想要使大家都形成一种一致的观点,而不管这论点是如何被扭曲了……

我只希望 SOA 的众生能够学会对使用所有这些具有“限定性”意义的词汇与术语感到满意,而不是试图强塞一些愚笨的词汇进去。

Steve Jones 对这一争论做出了很好的总结:

基本上我认为编排,编配,协调,流程管理以及诸等词汇都定义得极为不妥。要是哪个供应商声称一个 BPEL 引擎是某种编排产品,我也不会感到奇怪了。编排并没有流行起来的一个原因(在我的眼中)就是其现实社会的等价物(舞蹈)可真不是什么 IT 所专长的。

总体而言,这种情况在 SOA 和 IT 中越来越普遍了,这个讨论只是其中一例而已。人们使用相同词汇而实际上指的是不同事物,并总因为使用不同词汇而争论,尽管实际上他们说的是一回事。

查看英文原文: Orchestration vs. Choreography: Debate Over Definitions

2008-09-05 03:323697
用户头像

发布了 133 篇内容, 共 35.0 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

我的大厂面试经历

老大哥

Java 程序员 后端

第13周 作业

Jaye

架构师训练营第 0 期第 13 周作业

无名氏

开源流数据公司 StreamNative 正式加入 CNCF,积极推动云原生策略发展

Apache Pulsar

云原生 pulsar Apache Pulsar 消息系统 消息中间件

大厂面试题:集群部署时的分布式 session 如何实现? 面试官心理分析

老大哥

Java 程序员 后端

商业通识 : 商业从哪里来?

Walker

学习 得到 个人成长 商业

Spring 5 中文解析核心篇-集成测试之TestContext(上)

青年IT男

单元测试 Spring5 JUnit

防止APP窃取用户隐私问题,OPPO安全在行动

OPPO安全

App 安全 隐私保护 数据隐私 sdk

「查缺补漏」巩固你的RocketMQ知识体系

Kerwin

Java RocketMQ

为什么一个还没毕业的大学生能够把 IO 讲的这么好?

cxuan

Java 后端 io

oeasy 教您玩转linux 之010208 满屏乱码 bb

o

全票通过!易观开源项目DolphinScheduler进入Apache孵化器

易观大数据

超详细:完整的推荐系统架构设计

博文视点Broadview

架构 算法 推荐系统

What's new in Dubbo-go v1.5.1

apache/dubbo-go

dubbo 服务端 Go 语言

模板方法模式——看看 JDK 和 Spring 是如何优雅复用代码的

简爱W

Java 程序员 java架构

Java架构师JVM启动流程和内存结构,程序员必看!

老大哥

Java 程序员 后端

服务化反面案例

心平气和

服务化 权限

【真实面试经历】我和阿里面试官的一次“邂逅”

老大哥

关于二进制的补码,反码,正负数表示以及Java代码测试

Zexho

Java 补码 位运算 反码 计算机知识

架构师训练营第十三周作业

张明森

PageRank 算法

周冬辉

没想到 Hash 冲突还能这么玩,你的服务中招了吗?

老大哥

Java 程序员 后端

对PageRank的理解

2流程序员

解Bug之路-Nginx 502 Bad Gateway

无毁的湖光

nginx Linux TCP

架构师第十三周作业

傻傻的帅

架构师

面试官为什么会问你,如何设计一个高并发系统?

老大哥

Java 程序员 后端

第十三周作业

olderwei

极客大学架构师训练营

Java服务,内存OOM问题如何快速定位?

老大哥

Java 程序员 后端

架构师训练营第13周作业

Hessian Bug修复

心平气和

php 序列化 hessian

你应该了解的MySQL锁分类

X先生

MySQL 数据库 sql 数据库优化

编配和编排的定义之争_SOA_Boris Lublinsky_InfoQ精选文章