1. 簡介
1.1 項目介紹
SnailJob是一個高效且可靠的開源分布式任務(wù)重試和任務(wù)調(diào)度平臺,旨在解決復(fù)雜分布式環(huán)境中的任務(wù)執(zhí)行問題。它的設(shè)計靈感源于對高可用性、靈活性和性能的追求,能夠幫助企業(yè)提升分布式業(yè)務(wù)系統(tǒng)的整體一致性。通過SnailJob,您可以輕松創(chuàng)建、管理和監(jiān)控可重試或定時執(zhí)行的任務(wù),確保業(yè)務(wù)流程的順暢進(jìn)行。
開源地址:https://gitee.com/aizuda/snail-job
1.2核心功能
1.3 開源組件對比
2. 常用注解
2.1Retryable注解
2.2ExecutorMethodRegister注解
2.3JobExecutor注解
3. 部署與試用
3.1 搭建數(shù)據(jù)庫環(huán)境
Snail Job支持多種數(shù)據(jù)庫,其中包含Mysql、Mariadb、Postgres、Oracle、MS SQL Server、達(dá)夢等??梢詧?zhí)行sql腳本生成相關(guān)表結(jié)構(gòu)也可以使用 docker compse快速構(gòu)建數(shù)據(jù)庫環(huán)境。以使用docker搭建數(shù)據(jù)庫環(huán)境為例,打開拉下來的項目代碼
cd ./doc/docker
## 啟動 mysql
docker compose up -d mysql
3.2 服務(wù)端配置
服務(wù)端代碼整體目錄結(jié)構(gòu)如圖所示:
在snail-job-server-sater啟動服務(wù)端程序
application.yml 常用配置
3.3 客戶端配置
注:在啟動多個客戶端時要配置客戶端端口,否則會報地址被占用,在集群模式下只會有一個服務(wù)正常訪問
3.4 服務(wù)端web界面
服務(wù)端啟動后,默認(rèn)訪問地址為:http://127.0.0.1:8080/snail-job/
3.5 定時任務(wù)配置
點擊新增新建一個新的定時任務(wù)
組名稱:組是一個邏輯概念, 它可以看做是場景的分類或者是標(biāo)簽, 用于將一些相關(guān)性的場景進(jìn)行分組,可以理解為MQ的Topic和Queue的關(guān)系; 服務(wù)端的負(fù)載均衡也是基于組 把不同的組分配到不同的服務(wù)端集群的其中一個節(jié)點。
客戶端的group為已經(jīng)配置好的組名
執(zhí)行器名稱:執(zhí)行任務(wù)的方法名稱
任務(wù)類型:
路由策略:
阻塞策略:
我們配置的為切片類型,因此在配置完定時任務(wù)后,我們啟動兩個不同端口的客戶端,分組名為job_demo,點擊執(zhí)行該定時任務(wù),兩個客戶端會收到不同的分片參數(shù),如圖所示
3.6工作流
可以通過工作流執(zhí)行定時任務(wù),以上文的切片任務(wù)為例
在創(chuàng)建完定時任務(wù)后,客戶端以十秒一次執(zhí)行切片任務(wù),結(jié)果如下圖所示