Netflix Conductor
基本概念
工作流(Workflows)
工作流分为工作流定义和工作流执行。
工作流定义:
(1) 包括业务逻辑的处理流程,描述流程行为的一些必要信息
(2) 由一组任务配置的集合组成,说明任务之间的执行顺序、数据及状态在任务之间传递
(3) 包含控制运行时行为的元数据,例如:整个工作流的期望的输入及输出、工作流超时、重试配置
工作流执行:
就像工作流定义是类,工作流执行是类对象实例,每次当工作流定义通过给定输入被调用,新的工作流执行就会独一无二的被创建出来,工作流定义与工作流执行是一对多的关系
任务(Task)
任务是工作流的构建块,每个工作流定义至少配置一个任务
任务分为三类:
(1) 系统任务(System Task)
内建的任务,用于通用目的及可重用,在Conductor服务端的jvm中执行
(2) 简单任务(Simple Task)
简单任务,或叫做工作任务,由用户自己应用实现,运行在与Conductor服务端隔离的单独环境,它们通过REST/gRPC与服务端通信,并轮询获取任务、执行完任务后更新任务状态
(3) 操作员(Operator)
用于控制工作流的任务流,类似编程语言中的Swich、Loop
任务配置:
(1) 对所有任务来说,任务配置说明任务接收什么输入参数
(2) 对简单任务来说,任务配置包含引用到已注册的woker的任务名称
(3) 对系统任务和操作员(Operator)来说,任务配置包含控制任务行为的重要参数,如:HTTP任务的任务配置包含endpoint地址和标准的负荷(playload)
任务定义:
(1) 定位任务级别的参数,如:输入、输出、超时时间、重试次数
(2) 所有简单任务被活动工作流使用前需要先注册
(3) 通过UI、API注册任务定义
(4) 被注册的任务可以被多个不同工作流引用
任务执行:
每次工作被传递给已配置的任务,任务执行对象就会被创建,任务执行对象包含一个唯一的id和代表操作的结果,操作的结果包含与任务相关的状态(任务执行成功与否的状态)、输入、输出、变量
(Worker)
一个worker负责执行一个任务,每个worker体现微服务设计模式和遵循一些基本原则:
(1) workers是无状态,不实现工作流具体逻辑
(2) 每个worker执行明确的任务和提供明确的输入并产生定义好的输出
(3) worker是幂等的
(4) worker不实现处理重试的逻辑等等,这是由Conductor服务端处理
架构
架构图运行模型
运行模型任务生命周期
-
任务状态流转
任务状态流转
网友评论