Netflix Conductor:一个微服务编制引擎

责任编辑:editor005

作者:Abel Avram

2016-12-26 11:35:03

摘自:INFOQ

Netflix开发了一个叫“Conductor”的编制引擎,已经在内部生产环境中使用了一年了。Netflix决定开发一个编制(orchestration)而不是编排(choreography)引擎,是因为后者在他们的测试中扩展性不好。

Netflix开发了一个叫“Conductor”的编制引擎,已经在内部生产环境中使用了一年了。在这段时间里,Netflix已经运行了大约260万个处理工作流,包括简单的线性工作流,以及运行数天的动态工作流。现在Netflix开源了Conductor,所有对工作流编制感兴趣的人都能使用它。

根据Netflix的Conductor开发文档的描述,这个引擎包含以下几个主要特性:

能够构建复杂工作流 能够通过微服务执行任务 使用JSON DSL描述的工作流蓝图 执行过程可见、可跟踪 能够暂停、恢复、重启、停止任务 任务执行通常是异步的,也可以强制同步执行 处理工作流能够扩展到百万级别

Conductor的架构图如下: 
 

API和存储层都是可插拔的,允许使用不同的队列和存储引擎。Netflix使用Dynomite做为存储方案,但也能够通过实现一个接口来转换成别的方案。

工作流中的任务分为两种类型:Worker,运行在远端机器上的用户任务;System,运行在引擎的JVM上的任务。后者是用来对Worker执行任务进行branch、fork、join。Worker任务通过HTTP或者gRPC(基于HTTP/2)和Conductor通信。

Netflix决定开发一个编制(orchestration)而不是编排(choreography)引擎,是因为后者在他们的测试中扩展性不好。相关问题如下:

过程流被“嵌入到”多个应用的代码里 通常,在输入和输出、SLAs等方面存在强耦合和假设,导致很难适应需求的变化 几乎没有办法系统地回答“某过程X完成了多少”?

Conductor在GitHub上开源,使用Apache License 2.0许可。

查看英文原文:Netflix Conductor, an Orchestration Engine for Microservices

链接已复制,快去分享吧

企业网版权所有©2010-2025 京ICP备09108050号-6京公网安备 11010502049343号