Netflix Conductor源码分析--总体架构介绍

关于Netflix Conductor的简介和Demo使用,我已经在深入浅出Netflix Conductor使用文章中做了详细说明,从本文开始将深入分析Conductor的源码以及原理期待能够给喜欢Conductor的同学一些指导和建议。

一、Conductor源码总体介绍

从github(https://github.com/Netflix/conductor/)上面check源码后在idea界面上展示,如图1-1所示:

图1-1

从图中可以看到整个项目使用的是gradle进行项目管理的并且项目默认采用的是从jcenter仓库(http://jcenter.bintray.com)jar包下载非常慢,于是采用了阿里云的仓库,但是目前在企业开发过程中普遍使用的是maven来管理项目于对项目结构进行了转换,变成了maven结构,git地址如下:http://git.hualala.com/infrastructure/hualala-conductor

项目结构如图1-2所示:

图1-2

说明:

  • admin层
    由于Conductor采用的是DSL来做流程定义,但是没有可视化界面需要使用者每次自己手动书写流程定义,这样对使用者的要求就比较高必须要先非常熟悉定义格式才能进行编写,同时没有校验机制不知道写的是不是正确,同时写完流程格式定义文件后还需要自己手动上传到swagger管理界面中才能被server识别,所以基于此我们二次开发了一个模块admin,我们提供了界面通过在界面中简单填写数据生成DSL文件同时能够自动上传到swagger管理界面中。
  • client层
    Conductor的使用场景是服务编排,必然会涉及client和server端也就是说在我们的微服务中的服务中可以使用client端来和conductor的server端进行通信,根据不同状态来执行相应任务。
  • common层
    这一层主要涉及的是Task任务和Workflow工作流的元数据和请求参数定义,还有一些工具类。
  • core层
    这一层主要包括的是核心类,包括:事件、队列功能类,还包括任务类型定义、每种类型任务的具体实现逻辑和映射关系,比如分支条件如何进行判断,逻辑表达式如何解析,并行任务如何执行等等。
  • jersey层
    这个主要提供的是Swagger接口展示层,通过启动这个模块可以看到一个接口列表页面,用户可以在界面上操作接口实现任务和工作流元数据的编写和上传,还可以在界面上启动工作流引擎等。
  • es-persistence
    这一层主要是持久层,根据请求版本不同包括es5和es2二个模块,作用主要包括将任务和工作流元数据保存到es中,还有就是将任务运行时数据进行保存,比如任务执行的状态,执行时间等等。
  • mysql-persistence
    mysql持久层,存储任务和工作流定义的元数据。
  • redis-persistence
    redis持久层,存储任务和工作流定义的元数据。
  • server层
    负责conductor server端的启动、工作流任务的启动,由server层调用core层实现分布式状态机控制和任务的调度。
  • UI层
    可视化任务管理界面,通过该界面能够看到任务和工作流定义的元数据和图形展现,以及工作流执行的状态情况。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • Netflix Conductor框架是典型的服务编排框架,通过Conductor还可以实现工作流和分布式调度,性...
    小程故事多阅读 36,443评论 7 20
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,912评论 2 89
  • 静静地 月亮挂在天边 我走在教室外的夜幕下 树影一点一点随着谁的脚步 编织起路灯暖暖 默默地 轻风飘在街口 你来到...
    一只走心的90single汪阅读 240评论 0 4
  • 这个六月,刚刚毕业,沉溺于无尽的假期中,颠倒黑白的日子,会忽然觉得自己是不是堕落,可又能找到一个借口让自己安心于这...
    壁花少女W阅读 192评论 0 0