前言
目前主流的Java開源流程引擎有Activiti、Flowable、Camunda,筆者在進行流程引擎技術選型時,除了功能方面,性能和穩定性是尤其關注的指標,是選擇Flowable?還是Camunda?我們先進行了二者性能對比測試,先分享給大家。
一、測試環境
PC筆記本,8G內存,CPU兩核i5-8250
壓測工具:JMeter5.1
數據庫:mysql5.7
Flowable版本:6.4.1
Camunda版本:7.10
二、測試用例
基於springboot編寫測試代碼,調用流程引擎的API接口,測試流程圖如下:
測試過程:流程啟動——獲取待辦——流程審批1——獲取待辦——流程審批2——流程結束
測試代碼邏輯:(camunda代碼)其中,流程名稱叫flow-test1, 審批人為demo, 增加1個流程變量taskuser

三、測試數據
通過壓力測試工具JMeter分別對flowable和camunda進行高並發壓力測試,並發用戶數從100到1000,JMeter設置Ramp-up為1,循環次數為10,測試數據如下:
| 並發數 | flowable | camunda | 性能對比(Camunda比flowable提升) |
|---|---|---|---|
| 100並發 | 2269 ms | 1631 ms | +39% |
| 200並發 | 3907 ms | 3489 ms | +12% |
| 400並發 | 7250 ms | 6452 ms | +12% |
| 600並發 | 9943 ms | 8700 ms | +14% |
| 800並發 | 13700 ms | 12400 ms | +10% |
| 1000並發 | 18800 ms | 15700 ms | +20% |
四、測試結論
在1000並發時,flowable6后台報錯,但能執行成功.報錯信息為:Caused by:com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction;camunda后台無報錯,執行全部成功。
通過flowable和camunda多組對比測試,camunda性能比flowablet提升最小10%,最大39%,而且camunda無報錯,flowable有報錯,camunda在高並發場景下穩定性更好。
