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