转载

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

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

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

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

Conductor的架构图如下:

Netflix 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

感谢薛命灯对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。

原文  http://www.infoq.com/cn/news/2016/12/netflix-conductor
正文到此结束
Loading...