分佈式架構之 LiteFlow
一、LiteFlow 是什麼?
LiteFlow 是一個輕量且強大的國產規則引擎框架,可用於複雜的組件化業務的編排領域,獨有的 DSL 規則驅動整個複雜業務,並可實現平滑刷新熱部署,支持多種腳本語言規則的嵌入。幫助系統變得更加絲滑且靈活。
LiteFlow 官方網站:
https://liteflow.yomahub.com/
LiteFlow Github 源代碼:
https://github.com/dromara/liteflow/
LiteFlow Gitee 源代碼:
https://gitee.com/dromara/liteFlow
二、LiteFlow 的架構圖是怎樣的?
三、LiteFlow 有哪些特性?
-
- 組件定義統一:所有的邏輯都是組件,爲所有的邏輯提供統一化的組件實現方式,小身材,大能量。
-
- 規則輕量:基於規則文件來編排流程,學習規則入門只需要 5 分鐘,一看既懂。
-
- 規則多樣化:規則支持 xml、json、yml 三種規則文件寫法方式,喜歡哪種用哪個。
-
- 任意編排:同步異步混編,再複雜的邏輯過程,利用 LiteFlow 的規則,都是很容易做到的,看規則文件就能知道邏輯是如何運轉的。
-
- 規則能從任意地方加載:框架中提供本地文件配置源和 zk 配置源的實現,也提供了擴展接口,您可以把規則存儲在任何地方。
-
- 優雅熱刷新機制:規則變化,無需重啓您的應用,即時改變應用的規則。高併發下不會因爲刷新規則導致正在執行的規則有任何錯亂。
-
- 支持廣泛:不管你的項目是不是基於 Springboot,Spring 還是任何其他 java 框架構建,LiteFlow 都能遊刃有餘。
-
8.JDK 支持:從 JDK8 到 JDK17,統統支持。無需擔心 JDK 版本。
-
- 腳本語言支持:可以定義腳本語言節點,支持 QLExpress 和 Groovy 兩種腳本。未來還會支持更多的腳本語言。
-
- 規則嵌套支持:只要你想的出,你可以利用簡單的表達式完成多重嵌套的複雜邏輯編排。
-
- 組件重試支持:組件可以支持重試,每個組件均可自定義重試配置和指定異常。
-
- 上下文隔離機制:可靠的上下文隔離機制,你無需擔心高併發情況下的數據串流。
-
- 聲明式組件支持:你可以讓你的任意類秒變組件。
-
- 詳細的步驟信息:你的鏈路如何執行的,每個組件耗時多少,報了什麼錯,一目瞭然。
-
- 穩定可靠:歷時 2 年多的迭代,在各大公司的核心繫統上穩定運行。
-
- 性能卓越:框架本身幾乎不消耗額外性能,性能取決你的組件執行效率。
-
- 自帶簡單監控:框架內自帶一個命令行的監控,能夠知道每個組件的運行耗時排行。
四、LiteFlow 的設計原則是怎樣的?
LiteFlow 是基於工作臺模式進行設計的,何謂工作臺模式?
n 個工人按照一定順序圍着一張工作臺,按順序各自生產零件,生產的零件最終能組裝成一個機器,每個工人只需要完成自己手中零件的生產,而無需知道其他工人生產的內容。每一個工人生產所需要的資源都從工作臺上拿取,如果工作臺上有生產所必須的資源,則就進行生產,若是沒有,就等到有這個資源。每個工人所做好的零件,也都放在工作臺上。
這個模式有幾個好處:
每個工人無需和其他工人進行溝通。工人只需要關心自己的工作內容和工作臺上的資源。這樣就做到了每個工人之間的解耦和無差異性。
即便是工人之間調換位置,工人的工作內容和關心的資源沒有任何變化。這樣就保證了每個工人的穩定性。
如果是指派某個工人去其他的工作臺,工人的工作內容和需要的資源依舊沒有任何變化,這樣就做到了工人的可複用性。
因爲每個工人不需要和其他工人溝通,所以可以在生產任務進行時進行實時工位更改:替換,插入,撤掉一些工人,這樣生產任務也能實時的被更改。這樣就保證了整個生產任務的靈活性。
這個模式映射到 LiteFlow 框架裏,工人就是組件,工人坐的順序就是流程配置,工作臺就是上下文,資源就是參數,最終組裝的這個機器就是這個業務。正因爲有這些特性,所以 LiteFlow 能做到統一解耦的組件和靈活的裝配。
五、LiteFlow 適合哪些場景?
LiteFlow 適用於擁有複雜邏輯的業務,比如說價格引擎,下單流程等,這些業務往往都擁有很多步驟,這些步驟完全可以按照業務粒度拆分成一個個獨立的組件,進行裝配複用變更。使用 LiteFlow,你會得到一個靈活度高,擴展性很強的系統。因爲組件之間相互獨立,也可以避免改一處而動全身的這樣的風險。
六、LiteFlow 不適合哪些場景?
LiteFlow 自開源來,經常有一些小夥伴來問我,如何做角色任務之間的流轉,類似於審批流,A 審批完應該是 B 審批,然後再流轉到 C 角色。
注意:
LiteFlow 只做基於邏輯的流轉,而不做基於角色任務的流轉。如果你想做基於角色任務的流轉,推薦使用 flowable ,activiti 這 2 個框架。
七、YC-Framework 中如何使用 LiteFlow?
引入如下依賴:
<dependency>
<groupId>com.yc.framework</groupId>
<artifactId>yc-common-liteflow</artifactId>
</dependency>
如何使用可參考 LiteFlow 官方文檔:
https://liteflow.yomahub.com/pages/5816c5/
我在 yc-framework 中也曾寫過關於如何使用 liteflow 的示例,示例模塊位於 yc-example 下,名字叫 yc-example-liteflow。
yc-example-liteflow 地址如下:
https://github.com/developers-youcong/yc-framework/tree/main/yc-example/yc-example-liteflow
以上源代碼均已開源,開源不易,如果對你有幫助,不妨給個 star!!!
YC-Framework 官網:
https://framework.youcongtech.com/
YC-Framework Github 源代碼:
https://github.com/developers-youcong/yc-framework
YC-Framework Gitee 源代碼:
https://gitee.com/developers-youcong/yc-framework
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/vRtj1SSbAjVqTx0LB7rpcg