聂同学

一个程序员和架构师的实践与思考

Orchestration 和 Choreography

Orchestration 和 Choreography,这个两个词在跟“服务”有关的架构讨论中常有出现。比如微服务和SOA。

如果直译的话,这两个词一个是“编曲”,一个“编舞”。

编曲和编舞都是编。编就是安排、设计。不论是微服务的服务还是SOA的服务,要想沟通协同,合力完成业务请求,都是需要安排设计的。

但二者编排的对象不同,一个是曲一个是舞。特别是,按照词的本意,这里的“曲”指的是“管弦乐曲”,是相对复杂宏大的演奏。

曲和舞有什么区别呢?

  1. 曲需要指挥,舞不需要。乐者在演奏时,需要指挥随时指挥协调。而舞者则不需要,按照事前安排做好自己就行。需要跟其他舞者合作时,也由自己直接沟通完成。
  2. 曲分工复杂,舞比较简单。管弦乐曲演奏需要多种不同乐器多种不同乐者,要求彼此配合得当,才能演出成功。而舞蹈没那么多分工,即使是大型舞蹈,台上人多,但角色也就数种而已。
  3. 曲比较严肃,舞比较宽松。乐者的演奏和配合一丝不苟,少有随性。舞者则有较多的个人发挥空间。

SOA的理念是自上而下,比较多的依赖于集中安排,运行时也需要明确的中间件进行中央控制协调。边界内有多种类型的服务,相互之间严密配合。SOA的风格类似于编曲。

跟SOA相比,微服务风格更类似于编舞。边界内的服务遵循简单的约定,负责一个特定的领域。他们的地位相似,实现方式和沟通方式由自己选择。

编曲和编舞是一种形象的比喻,并不会完全精确。架构师编排服务的时候不要照抄。

微服务, 架构

分享 -