Netflix Conductor流程系统(二):官方样例搭建

一、首先从git上检出项目

这个https://github.com/Netflix/conductor是项目的github地址,

Netflix Conductor流程系统(二):官方样例搭建

选择SSH或者HTTPs检出,git clone [email protected]:Netflix/conductor.git(执行git命令需要先安装git)至任意位置

二、启动本地服务

进入项目目录下,右键git bash here,执行命令cd server进入server目录,再执行../gradlew server,然后等待项目构建成功即可。注意:此处JDK版本必须为1.8否则会报错:无效的源发行版: 1.8。启动成功后会创建一个kitchen workflow样例:

Netflix Conductor流程系统(二):官方样例搭建Netflix Conductor流程系统(二):官方样例搭建

此时可以打开http://localhost:8080/查看Swagger APIs。

Netflix Conductor流程系统(二):官方样例搭建Netflix Conductor流程系统(二):官方样例搭建Netflix Conductor流程系统(二):官方样例搭建

重新打开一个git命令窗口,执行cd ui,进入ui目录,执行gulp watch等待构建成功即可。注意:需要执行gulp命令,首先需要安装node.js,并且由于框架使用了import,node.js版本必须使用8.0以上,node装好后再安装glup。顺序应该为:安装node.js->全局安装gulp->项目安装gulp。

成功后可打开http://localhost:3000查看任务相关,如下图:


Netflix Conductor流程系统(二):官方样例搭建Netflix Conductor流程系统(二):官方样例搭建Netflix Conductor流程系统(二):官方样例搭建

运行时模型:

Conductor 遵循RPC的通讯模型,其中workers运行在与 服务器分离的应用机器上,并通过HTTP协议或者是轮询的方式来管理work队列。

Netflix Conductor流程系统(二):官方样例搭建

1.Workers作为远程系统,通过HTTP协议(或者任意支持的RPC机制)同Conductor 服务进行通信。

2.任务队列用于为workers安排任务,Conductor使用内部的dyno-queues 作为任务队列,当然也可以使用其他SQS(简单队列)或者pub-sub机制的队列作为代替。

3.conductor-redis-persistence模块使用Dynomite作为存储引擎,以及Elasticsearch作为索引的解决方案。

4.对于存储和索引支持不同数据库。

一个新的workflow的注册和执行需要以下步骤:

1.定义这个workflow需要的task

2.创建workflow。

3.创建消费这些任务的workers并通过轮询的方式来获取任务。

4.触发工作流执行:

POST /workflow/{name}{

... //json payload as workflow input

}

5.轮询获取任务

GET /tasks/poll/batch/{taskType}

6.更新任务状态

POST /tasks{

"outputData": {

"encodeResult":"success",

"location": "http://cdn.example.com/file/location.png"

//any task specific output

},

"status": "COMPLETED"

}