Netflix开发了一个叫“ Conductor ”的编制引擎,已经在内部生产环境中使用了一年了。在这段时间里,Netflix已经运行了大约260万个处理工作流,包括简单的线性工作流,以及运行数天的动态工作流。现在Netflix开源了Conductor,所有对工作流编制感兴趣的人都能使用它。
根据Netflix的 Conductor开发文档 的描述,这个引擎包含以下几个主要特性:
Conductor的架构图如下:
API和存储层都是可插拔的,允许使用不同的队列和存储引擎。Netflix使用 Dynomite 做为存储方案,但也能够通过实现一个 接口 来转换成别的方案。
工作流中的任务分为两种类型: Worker ,运行在远端机器上的用户任务; System ,运行在引擎的JVM上的任务。后者是用来对Worker执行任务进行branch、fork、join。Worker任务通过HTTP或者gRPC(基于HTTP/2)和Conductor通信。
Netflix决定开发一个编制(orchestration)而不是编排(choreography)引擎,是因为后者在他们的测试中扩展性不好。相关问题如下:
Conductor在 GitHub 上开源,使用Apache License 2.0许可。
查看英文原文: Netflix Conductor, an Orchestration Engine for Microservices
感谢薛命灯对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。