阿里工作流引擎_一个Netflix开发的微服务编排引擎,支持可视化工作流定义

阿⾥⼯作流引擎_⼀个Netflix开发的微服务编排引擎,⽀持可
视化⼯作流定义
导读:相对于传统架构,微服务架构下更需要通过各微服务之间的协作来实现⼀个完整的业务流程,可以说服务编排是微服务架构下的必备功能。Netflix Conductor作为服务编排的佼佼者,从推出就引起很⼤关注。本⽂深⼊浅出的介绍了起基本功能和设计。
Netflix内容平台⼯程团队⽀撑了许多业务,这些业务流程由微服务任务异步驱动的。 其中⼀些任务是持续数天的长期进程。 这些进程在为全球观众提供字幕⽅⾯发挥着⾄关重要的作⽤。
⽐如:
Studio合作伙伴内容集成
来⾃合作伙伴的基于IMF的内容集成
在Netflix中设置新标题
接收内容,编码和部署到CDN
诱捕黄鳝
传统做法中,这些进程是临时编排的,使⽤pub/sub 组合起来,直接进⾏REST调⽤,并使⽤数据库来管理状态。 然⽽,随着微服务数量和流程复杂性的增加,如果没有中央协调器,就⽆法了解这些分布式⼯作流(workflow)。
热轧螺纹钢
潜流带我们将Conductor“作为编排引擎”构建,以满⾜以下需求,在应⽤程序中消除了模板,并提供反应流:
使⽤基于JSON DSL 的蓝图定义执⾏流程。
跟踪和管理⼯作流。
能够暂停,恢复和重新启动进程。
⽤户界⾯可视化处理流程。
能够在需要时同步处理所有任务。
能够扩展到数百万个并发运⾏的流程。
由客户端提取出来的的队列服务⽀持。
能够通过HTTP或其他⽅式操作,例如GRPC。
Conductor旨在满⾜上述需求,现在已在Netflix使⽤了将近⼀年。 迄今为⽌,它调度超过260万个⼯作流,从简单的线性⼯作流到运⾏多天的⾮常复杂的动态⼯作流。
如今Conductor已经开源,我们希望Conductor可以服务于有类似需求的场景,并提升其能⼒。 你可以在此处到Conductor的开发⼈员⽂档。
为什么不进⾏点对点编排?
随着业务需求和复杂性的增长,使⽤点对点任务编排会难以扩展。 发布/订阅模型适⽤于最简单的流程,也有⼀些问题:
流程分散在多个应⽤程序的代码中
通常围绕输⼊/输出,SLA等存在紧密耦合和假设,PUB/SUB难以适应不断变化的需求
⼏乎没有办法系统地回答“设置电影还有什么没完成”?
为什么是微服务?
在微服务领域,许多业务流程⾃动化都是通过协调服务来实现的。 Conductor⽀持跨服务的协调,同
时提供交互式控制和可视性。 能够跨进⾏微服务协调,有助于我们利⽤现有服务构建新流程或更新现有流程,从⽽⾮常快速地普及Conductor。
架构总览
陶粒砂过滤
微生物发酵床
烘手机
引擎的核⼼是状态机服务,即Decider服务。 当⼯作流事件发⽣时(例如任务完成,失败等),Decider将⼯作流蓝图与⼯作流的当前状态相匹配,识别下⼀个状态,并安排适当的任务,或更新⼯作流的状态。
Decider与分布式队列⼀起使⽤来管理计划任务。我们使⽤dyno-queues作为分布式延迟队列,dyno-queues使⽤dynomite作为K-V存储。该队列已于今年早些时候开源,欲知详情请看这⾥。
Task Worker实现
task由worker应⽤程序实现,其通过API层进⾏通信。 woker实现了可由流程引擎调⽤的REST接⼝,或者通过定期检查挂起任务的状态来达到此⽬的。 Worker实际上是幂等的⽆状态函数。 轮询模型允许处理worker的压⼒,并在可能的情况下根据队列深度⽀持⾃动伸缩。Conductor提供API以检查worker的⼯作负载⼤⼩。
API层
API通过HTTP公开 - 使⽤HTTP可以轻松地与不同客户端集成。 添加其他协议(例如gRPC)也是很简单的。
存储
我们使⽤Dynomite作为存储引擎,并使⽤Elasticsearch来索引执⾏流程。 存储API是可插拔的,可以适⽤于各种存储系统,包括传统的RDBMS或Apache Cassandra。
关键概念
⼯作流定义
使⽤基于JSON的DSL定义⼯作流。 ⼯作流蓝图定义了⼀系列需要执⾏的任务。 每个任务是控制任务(例如,fork,join,决策,⼦⼯作流等)或worker任务(译者注:提供具体的数据处理功能)。 ⼯作流定义⽀持版本,可以灵活地管理升级和迁移。
⼯作流定义概述:
{
"name": "workflow_name

本文发布于:2024-09-21 13:34:01,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/156705.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:服务   作流   任务   提供   编排   流程
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议