Netflix Conductor源碼分析--總體架構(gòu)介紹

關(guān)于Netflix Conductor的簡介和Demo使用,我已經(jīng)在深入淺出Netflix Conductor使用文章中做了詳細(xì)說明,從本文開始將深入分析Conductor的源碼以及原理期待能夠給喜歡Conductor的同學(xué)一些指導(dǎo)和建議。

一、Conductor源碼總體介紹

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

圖1-1

從圖中可以看到整個(gè)項(xiàng)目使用的是gradle進(jìn)行項(xiàng)目管理的并且項(xiàng)目默認(rèn)采用的是從jcenter倉庫(http://jcenter.bintray.com)jar包下載非常慢,于是采用了阿里云的倉庫,但是目前在企業(yè)開發(fā)過程中普遍使用的是maven來管理項(xiàng)目于對(duì)項(xiàng)目結(jié)構(gòu)進(jìn)行了轉(zhuǎn)換,變成了maven結(jié)構(gòu),git地址如下:http://git.hualala.com/infrastructure/hualala-conductor

項(xiàng)目結(jié)構(gòu)如圖1-2所示:

圖1-2

說明:

  • admin層
    由于Conductor采用的是DSL來做流程定義,但是沒有可視化界面需要使用者每次自己手動(dòng)書寫流程定義,這樣對(duì)使用者的要求就比較高必須要先非常熟悉定義格式才能進(jìn)行編寫,同時(shí)沒有校驗(yàn)機(jī)制不知道寫的是不是正確,同時(shí)寫完流程格式定義文件后還需要自己手動(dòng)上傳到swagger管理界面中才能被server識(shí)別,所以基于此我們二次開發(fā)了一個(gè)模塊admin,我們提供了界面通過在界面中簡單填寫數(shù)據(jù)生成DSL文件同時(shí)能夠自動(dòng)上傳到swagger管理界面中。
  • client層
    Conductor的使用場(chǎng)景是服務(wù)編排,必然會(huì)涉及client和server端也就是說在我們的微服務(wù)中的服務(wù)中可以使用client端來和conductor的server端進(jìn)行通信,根據(jù)不同狀態(tài)來執(zhí)行相應(yīng)任務(wù)。
  • common層
    這一層主要涉及的是Task任務(wù)和Workflow工作流的元數(shù)據(jù)和請(qǐng)求參數(shù)定義,還有一些工具類。
  • core層
    這一層主要包括的是核心類,包括:事件、隊(duì)列功能類,還包括任務(wù)類型定義、每種類型任務(wù)的具體實(shí)現(xiàn)邏輯和映射關(guān)系,比如分支條件如何進(jìn)行判斷,邏輯表達(dá)式如何解析,并行任務(wù)如何執(zhí)行等等。
  • jersey層
    這個(gè)主要提供的是Swagger接口展示層,通過啟動(dòng)這個(gè)模塊可以看到一個(gè)接口列表頁面,用戶可以在界面上操作接口實(shí)現(xiàn)任務(wù)和工作流元數(shù)據(jù)的編寫和上傳,還可以在界面上啟動(dòng)工作流引擎等。
  • es-persistence
    這一層主要是持久層,根據(jù)請(qǐng)求版本不同包括es5和es2二個(gè)模塊,作用主要包括將任務(wù)和工作流元數(shù)據(jù)保存到es中,還有就是將任務(wù)運(yùn)行時(shí)數(shù)據(jù)進(jìn)行保存,比如任務(wù)執(zhí)行的狀態(tài),執(zhí)行時(shí)間等等。
  • mysql-persistence
    mysql持久層,存儲(chǔ)任務(wù)和工作流定義的元數(shù)據(jù)。
  • redis-persistence
    redis持久層,存儲(chǔ)任務(wù)和工作流定義的元數(shù)據(jù)。
  • server層
    負(fù)責(zé)conductor server端的啟動(dòng)、工作流任務(wù)的啟動(dòng),由server層調(diào)用core層實(shí)現(xiàn)分布式狀態(tài)機(jī)控制和任務(wù)的調(diào)度。
  • UI層
    可視化任務(wù)管理界面,通過該界面能夠看到任務(wù)和工作流定義的元數(shù)據(jù)和圖形展現(xiàn),以及工作流執(zhí)行的狀態(tài)情況。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,547評(píng)論 19 139
  • Netflix Conductor框架是典型的服務(wù)編排框架,通過Conductor還可以實(shí)現(xiàn)工作流和分布式調(diào)度,性...
    小程故事多閱讀 37,014評(píng)論 7 20
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,292評(píng)論 2 89
  • 靜靜地 月亮掛在天邊 我走在教室外的夜幕下 樹影一點(diǎn)一點(diǎn)隨著誰的腳步 編織起路燈暖暖 默默地 輕風(fēng)飄在街口 你來到...
    一只走心的90single汪閱讀 269評(píng)論 0 4
  • 這個(gè)六月,剛剛畢業(yè),沉溺于無盡的假期中,顛倒黑白的日子,會(huì)忽然覺得自己是不是墮落,可又能找到一個(gè)借口讓自己安心于這...
    壁花少女W閱讀 221評(píng)論 0 0

友情鏈接更多精彩內(nèi)容