美文网首页
服务编排

服务编排

作者: 追风还是少年 | 来源:发表于2023-08-07 23:56 被阅读0次

    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服务端处理

    架构
    架构图
    运行模型
    运行模型
    任务生命周期
    • 任务状态流转


      任务状态流转

    相关文章

      网友评论

          本文标题:服务编排

          本文链接:https://www.haomeiwen.com/subject/wsnwpdtx.html