BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 杨雷 关注 2 他的粉丝 发布于 2016年12月26日. 估计阅读时间: 2 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

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

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

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

Conductor的架构图如下:
conductor-architecture

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)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT