https://netflix.github.io/conductor/

https://github.com/Netflix/conductor

编译版: https://jcenter.bintray.com/com/netflix/conductor/

-----------------------------------------------------

Motivation

我们建立了Conductor,以帮助我们在Netflix上编制基于微服务的流程,具有以下特点:

  • 允许创建复杂的流程/业务流程,其中单个任务由微服务器实现。
  • 基于JSON DSL的蓝图(blueprint)定义了执行流程。
  • 为这些流程提供可见性和可追溯性。
  • 围绕暂停,恢复,重新启动等方式展现控制语义,从而实现更好的体验。
  • 允许更多地重用现有的微服务器,为onboarding提供更简单的路径。
  • 用户界面可视化流程。
  • 能够在需要时同步处理所有任务。
  • 能够扩展数以百万计的同时运行的流程。
  • 由客户抽象的排队服务支持。
  • 能够在HTTP或其他传输(如gRPC)上运行。

Why not peer to peer choreography?

通过对等任务编排,我们发现随着业务需求和复杂性的增长难以扩展。 Pub / sub模式为最简单的流程工作,但很快突出了与该方法相关的一些问题:

  • 流程在多个应用程序的代码中被“嵌入”。
  • 通常,关于输入/输出,SLA等的紧耦合和假设,使其难以适应不断变化的需求。
  • 几乎没有办法系统地回答“我们对过程X做了多少工作”?

API和存储层可插拔,并提供与不同后台和队列服务提供者合作的能力。

-----------------------------------------------------------------------------------------------

git clone git@github.com:Netflix/conductor.git

启动server

方法1:进入server目录执行../gradlew server此命令会自动下载gradle此脚本最终执行的是如下命令

(java -Dorg.gradle.appname=gradlew -classpath /root/conductor/gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain server)

方法2: 手动下载gradle工具,进入server目录

gradle build

进入/root/conductor/server/build/libs 目录下

java -jar conductor-server-VERSION-all.jar

实现此接口

https://github.com/Netflix/conductor/blob/dev/client/src/main/java/com/netflix/conductor/client/worker/Worker.java

例子:

https://github.com/Netflix/conductor/blob/dev/client/src/main/java/com/netflix/conductor/client/task/WorkflowTaskCoordinator.java

https://github.com/Netflix/conductor/blob/dev/client/src/test/java/com/netflix/conductor/client/sample/SampleWorker.java

启动ui:

cd ui
gulp watch

访问 http://localhost:3000/

运行模式:conductor遵循基于RPC的通信模式,其中worker与server在单独的机器上运行。 worker通过基于HTTP的端点与服务器通信,并使用轮询模型来管理工作队列。

worker是远程系统,并通过HTTP(或任何支持的RPC机制)与conductor server进行通信。
     任务队列用于为worker安排任务。 我们在内部使用了dyno-queue,但是它可以很容易地与SQS或类似的pub-sub机制进行交换。
     conductor重新持久化模块使用Dynomite存储状态和元数据以及Elasticsearch用于索引后端。
     请参阅扩展后端部分,以实现对不同数据库的支持以进行存储和索引。

要注册并执行新工作流所需的步骤:

1. 定义工作流的任务定义。
2. 创建工作流定义
3. 创建定期轮询调度任务的任务worker.

触发工作流执行

POST /workflow/{name}
{... //json payload as workflow input
}

轮询任务
GET /tasks/poll/batch/{taskType}

更新任务状态
POST /tasks
{"outputData": {"encodeResult":"success", "location": "http://cdn.example.com/file/location.png" //any task specific output }, "status": "COMPLETED" } 

工作流定义:

工作流使用以DSL为基础的JSON定义的,包括一组要执行的任务,这些任务组成了工作流,任务是远程机器上的控制任务(fork, conditional等等),

或应用程序任务(e.g. encode a file)

任务定义:

所有的任务必须在活动的工作流使用之前注册.

一个任务可以被多个工作流重复使用,任务分成两类:

  • System Task
  • Worker Task

System Tasks:

系统任务在Conductor服务器的JVM内执行,由Conductor管理,用于其执行和可扩展性。

DYNAMIC : 基于对任务的输入表达式导出的工作任务,而不是静态定义为blueprint的一部分

DECIDE:决策任务 - 实现案例...开关式fork

FORK:fork一组并行的任务。 每组计划并行执行

FORK_JOIN_DYNAMIC:FORK_JOIN_DYNAMIC与FORK类似,但不是并行执行blueprint中定义的任务集,基于此任务的输入表达式生成并行任务

JOIN:完成FORK和FORK_JOIN_DYNAMIC。 用于合并更多的并行分支*

SUB_WORKFLOW: 将另一个工作流作为子工作流任务。 执行后,实例化子工作流程,等待完成

EVENT:在支持的事件系统(例如conductor,SQS)中产生事件

conductor提供了一个API来创建在与引擎相同的JVM中执行的用户定义的任务。 有关详细信息,请参阅WorkflowSystemTask界面。

Worker Tasks

worker tasks由应用程序实现,并在独立于Conductor的环境中运行。 worker tasks可以用任何语言实现。 这些任务通过REST API端点与Conductor服务器进行通信,以轮询任务并在执行后更新其状态。

worker tasks由blueprint中的任务类型SIMPLE标识。

Lifecycle of a Workflow Task

转载于:https://www.cnblogs.com/mhc-fly/p/6956305.html

conductor介绍相关推荐

  1. 服务编排:conductor学习(一)

    一.Conductor介绍 conductor官方文档:https://netflix.github.io/conductor/ conductor介绍:主要是帮助我们在Netflix上编制基于微服务 ...

  2. Ubuntu中docker的安装和使用

    Ubuntu 中docker安装和使用 安装VMware16 安装Ubuntu22.04 安装docker Docker的主要作用 起到一个"容器"(代码+环境)的作用,解决了软件 ...

  3. 服务编排--Conductor 文档翻译 (介绍与基本概念)

    介绍 Conductor 优点 为什么不进行点对点编排? 基本概念 工作流定义 任务定义 系统任务 工人任务 工作流任务的生命周期 元数据定义 任务定义 重试逻辑 超时政策 工作流定义 工作流程中的任 ...

  4. 【干货】裸金属服务Ironic项目介绍

    在其字面意义上更强调了它是一种未安装操作系统或者刻意剥离操作系统的一种概念,更确切的表面他是CPU.RAM.local_gb的计算资源产品集合. 1.Ironic项目和组件介绍 Ironic是Open ...

  5. 开源微服务编排框架:Netflix Conductor

    简介:本文主要介绍netflix conductor的基本概念和主要运行机制. 作者 | 夜阳 来源 | 阿里技术公众号 本文主要介绍netflix conductor的基本概念和主要运行机制. 一 ...

  6. PBR:双向反射分布函数(BRDF)介绍与Cook-Torrance模型的实现

    PBR:双向反射分布函数(BRDF)介绍与Cook-Torrance模型的实现 BRDF简介 再介绍BRDF之前我们要引入渲染方程这个东西: 其中L表示辐射率,其公式为: 它表示了一个拥有辐射强度Φ的 ...

  7. 云计算运营—01华为云计算解决方案介绍

    华为云计算解决方案介绍 文章目录 华为云计算解决方案介绍 一.FusionSphere虚拟化解决方案介绍 云操作系统架构 FusionCompute组成 FusionManager FusionSto ...

  8. 8000字34张图史诗级介绍同轴电缆、双绞线、光纤等线缆,超级详细!

    各种线缆对于网络工程师来说应该是最为熟悉的东西了,线缆有很多种,比如直连线.交叉线.同轴电缆等,但是你知道不同种类的线缆,它们长啥样子吗?每种线缆的用途有哪些?本文瑞哥就带着大家好好学习一下这方面的知 ...

  9. Filament介绍

    摘要 Filament是一款Google开发的跨平台的实时渲染引擎,支持PBR材质,并且针对Android平台做了优化(毕竟Google亲儿子).本文将针对Filament的特点,简单介绍Filame ...

最新文章

  1. 【keras】rnn中的LSTM
  2. Source Insight,修改字体
  3. weblogic常见漏洞
  4. 聊一聊Kafka分区的隐藏属性——二次归类
  5. jvm ide_通过微调JVM Garbage Collector减少Java IDE滞后
  6. 配色方案没有头绪?看看给你灵感的专业指导
  7. C++Primer第5版学习笔记(三)
  8. python 数组排序索引_python对数组进行排序,并输出排序后对应的索引值方式
  9. 简单的用堆栈实现的表达式计算
  10. 最懂基金经理的第三方机构猫头鹰,到底是谁?
  11. 转载 Camera Link接口
  12. 高通平台Camera Dtsi解析
  13. WordPress站点上传文件插件WordPress File Upload
  14. 整个网站网页变黑白的效果
  15. 国产手机厂商抢占高端,二手机市场不容忽视
  16. marked转换html失败,JavaScript使用marked.js在线Markdown转HTML
  17. Qt编写的qml程序全屏时,挡住系统虚拟键盘的解决办法
  18. CentOS7 安装学之思开源考试系统Mysql版
  19. 钟平逻辑英语语法_关于钟平的逻辑英语
  20. 4g dtu无线透明通讯模块传输RS232/485手机APP全网通CAT1

热门文章

  1. 安全设计 -- 会话安全
  2. oppo禁用android系统通知栏,OPPO全机型手机去除状态栏ROOT警告-安卓刷机教程
  3. linux pci/pcie驱动
  4. 不需要密码卸载Symantec Endpoint Protection的步骤
  5. 模型压缩工具Distiller-INT8量化
  6. 【大学生软件测试基础】三角形类型 - 白盒测试 - 语句覆盖 -02
  7. springboot影院售票小程序毕业设计源码111154
  8. 如何在 Linux 服务器上安装 Red5?
  9. 计算机配件名称++太平洋,笔记本电脑配件大全
  10. Hexo 个人博客绑定域名配置