Netflix Conductor:微服务编排器

Netflix Conductor作为一个微服务编排器,用于管理复杂的分布式工作流。它提供基于JSON DSL的工作流定义,支持任务跟踪、暂停、恢复和重启,以及UI界面进行流程可视化。Conductor解决了点对点编排的扩展性和耦合性问题,通过Decider服务进行状态决策,并采用Dynomite作为存储引擎,Elasticsearch用于索引。目前,Conductor已在Netflix内部广泛使用,并已开源。
摘要由CSDN通过智能技术生成

翻译自 https://medium.com/netflix-techblog/netflix-conductor-a-microservices-orchestrator-2e8d4771bf40

Netflix 内容平台工程团队支撑了许多业务,这些业务流程由微服务任务异步驱动的。其中一些任务是持续数天的长流程。这些流程在为全球观众提供字幕方面发挥着至关重要的作用。

这些流程包括:

  • Studio 合作伙伴内容集成
  • 来自合作伙伴的基于 IMF 的内容集成
  • 在 Netflix 中设置新标题
  • 接收内容,编码和部署到 CDN

传统做法中,这些流程是临时编排的,使用 pub/sub(发布/订阅模型)组合起来,直接进行 REST 调用,并使用数据库来管理状态。然而,随着微服务数量和流程复杂度的增加,如果没有中央协调器,理解这些分布式工作流会变得非常困难。

我们将 Conductor 作为“编排引擎”构建,以满足以下需求,在应用程序中消除了模板,同时提供反应流:

  • 使用基于 JSON DSL 的 Blueprint 定义执行流程
  • 跟踪并管理工作流
  • 能够暂停,恢复和重新启动流程
  • 用户界面可视化处理流程
  • 能够在需要时同步处理所有任务
  • 能够扩展为百万级并发运行的流程
  • 由客户端提取出来的的队列服务支撑
  • 能够通过 HTTP 或其他方式操作,例如 GRPC

Conductor 旨在满足上述需求,现在已在 Netflix 使用了将近一年。迄今为止,它调度超过 260 万个工作流,包括从简单的线性工作流到运行多天的非常复杂的动态工作流。

在线 Conductor 已经在社区开源,我们希望 Conductor 可以服务于有类似需求的场景,并提升其能力。附上Conductor 的开发人员文档

为什么不使用点对点编排

使用点对点任务编排很难随着业务需求和复杂度增长的而完成扩展。Pub/sub(发布/订阅模型)模型适用于最简单的流程,但是该方案的也存在一些问题,包括:

  • 流程分散在多个应用程序的代码中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值