前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Netflix Conductor源码分析--总体架构介绍

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

作者头像
小程故事多
发布2018-12-12 15:35:22
3.7K2
发布2018-12-12 15:35:22
举报
文章被收录于专栏:微服务生态

关于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层 可视化任务管理界面,通过该界面能够看到任务和工作流定义的元数据和图形展现,以及工作流执行的状态情况。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.11.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Conductor源码总体介绍
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档