1 簡單總結
1 說明
2 特點
3 搭建排程中心
架構圖
git地址:https://gitee。com/xuxueli0323/xxl-job
2 主要介紹
2.1 說明
XXL-JOB是一個分散式任務排程框架,核心設計目標是快速開發、學習簡單、輕量級、易擴充套件。
2.2 特點
1。簡單:支援透過網頁對任務進行CRUD操作,操作簡單,一分鐘上手;
2。動態:支援動態修改任務狀態、暫停/恢復任務、終止正在執行的任務,即時生效;
3。排程中心HA(中心型):排程中心設計,“排程中心”基於Quartz的叢集實現,可以保證排程-中心HA;
4。Executor HA(Distributed):任務分散式執行,任務“執行者”支援叢集部署,保證任務執行HA;
5。Task Failover:部署Excutor叢集,當路由器的策略選擇“failover”時,任務會平滑切換執行器;
6。一致性:“排程中心”透過DB鎖保證叢集分散式排程的一致性,一個任務執行一次;
7。自定義任務引數:支援線上配置排程任務匯入引數,即時生效;
8。排程執行緒池:排程系統多執行緒觸發排程操作,保證排程準確,不阻塞;
9。彈性擴容:一旦新的執行機上線或下線,下次排程將重新分配任務;
10。郵件告警:任務失敗支援郵件告警,支援配置多個郵箱傳送批次告警資訊;
11。狀態監控:支援實時監控任務進度;
12。Rolling執行日誌:支援線上檢視排程結果,支援Rolling實時檢視完整執行日誌的執行器輸出;
13。GLUE:提供Web IDE,支援線上開發任務邏輯程式碼,動態釋出,實時編譯有效,省略上線流程的部署。支援30個版本回溯的歷史版本;
14。資料加密:排程中心與執行器之間的通訊用於資料加密,增強排程資訊的安全性;
15。Task Dependency:支援配置子任務依賴,當父任務執行結束並執行成功後會主動觸發第二個任務執行,多個子任務之間用逗號隔開;
16。推送Maven中央倉庫:將最新的穩定版本傳送到Maven中央倉庫,方便使用者訪問和使用;
17。任務註冊:執行器定期自動註冊任務,排程中心自動查詢註冊的任務並觸發執行。還支援手動輸入執行器地址;
18。Router策略:在executor叢集部署時提供了豐富的路由策略,包括:first、last、poll、random、consistent HASH、最不常用、最近最少使用、failover、busy over、分片廣播等。 ;
19。報表監控:支援實時檢視執行資料,如任務數、排程數、執行者數等;排程報告,如排程日期分佈、排程成功圖等;
20。指令碼任務:支援GLUE模式下指令碼任務的開發和執行,包括shell、Python等型別的指令碼;
21。阻塞處理策略:排程太密集,執行器來不及處理。策略包括:單機串列埠(預設),丟棄後面的排程,覆蓋前面的排程;
22。失敗處理策略:排程失敗時的處理策略,策略包括:失敗告警(預設)、失敗重試;
23。分片廣播任務:部署執行器叢集時,任務路由策略選擇“分片廣播”,一個任務排程會廣播叢集中的所有執行器執行一次,可以根據分片引數開發分片任務;
24。動態分片:分片廣播任務由執行器分片,支援執行器叢集動態擴容,動態增加分片數,配合業務控制代碼;在大資料量的操作中可以顯著提高任務處理能力和速度。
25、事件觸發:除了“Cron”和“Task Dependency”觸發任務外,支援基於事件的觸發任務。排程中心提供觸發單次執行任務的API服務,可根據業務事件靈活觸發。
2.3 使用步驟
拋開架構和原理,拿到一個新東西,首先讓我們能夠使用起來,搭建一個自己的任務
第一步: 下載原始碼下載地址:https://github。com/xuxueli/xx。。。
第二步: 執行sql檔案地址:xxl-job/doc/db/tables_xxl_job。sql
第三步: 修改xxl-job-admin專案配置配置檔案:application。properties配置項:
### xxl-job, datasourcespring。datasource。url=${datasource。url}spring。datasource。username=${datasource。username}spring。datasource。password=${datasource。password}
打包命令:
xxl-job-admin git:(master) mvn clean -U package -Dmaven。test。skip=true
啟動命令:
xxl-job-admin git:(master) cd target target git:(master) java -jar xxl-job-admin-2。1。0。jar
訪問http://127。0。0。1:8080/xxl-job-admin 賬號:admin密碼:123456看到如下頁面即搭建成功
編寫程式碼
第一步:
搭建一個springboot專案,application。properties加入如下配置:
# web portserver。port=8081# log configlogging。config=classpath:logback。xml### xxl-job admin address list, such as “http://address” or “http://address01,http://address02”xxl。job。admin。addresses=http://127。0。0。1:8080/xxl-job-admin### xxl-job executor addressxxl。job。executor。appname=xxl-job-executor-samplexxl。job。executor。ip=xxl。job。executor。port=9999### xxl-job, access tokenxxl。job。accessToken=### xxl-job log pathxxl。job。executor。logpath=/data/applogs/xxl-job/jobhandler### xxl-job log retention daysxxl。job。executor。logretentiondays=-1
第二步:
編寫配置類
@Configurationpublic class XxlJobConfig { private Logger logger = LoggerFactory。getLogger(XxlJobConfig。class); @Value(“${xxl。job。admin。addresses}”) private String adminAddresses; @Value(“${xxl。job。executor。appname}”) private String appName; @Value(“${xxl。job。executor。ip}”) private String ip; @Value(“${xxl。job。executor。port}”) private int port; @Value(“${xxl。job。accessToken}”) private String accessToken; @Value(“${xxl。job。executor。logpath}”) private String logPath; @Value(“${xxl。job。executor。logretentiondays}”) private int logRetentionDays; @Bean(initMethod = “start”, destroyMethod = “destroy”) public XxlJobSpringExecutor xxlJobExecutor() { logger。info(“>>>>>>>>>>> xxl-job config init。”); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor。setAdminAddresses(adminAddresses); xxlJobSpringExecutor。setAppName(appName); xxlJobSpringExecutor。setIp(ip); xxlJobSpringExecutor。setPort(port); xxlJobSpringExecutor。setAccessToken(accessToken); xxlJobSpringExecutor。setLogPath(logPath); xxlJobSpringExecutor。setLogRetentionDays(logRetentionDays); return xxlJobSpringExecutor; }
第三步:
編寫jobhandler
@JobHandler(value=“demoJobHandler”)@Componentpublic class DemoJobHandler extends IJobHandler { @Override public ReturnT
第四步:
啟動springboot專案後,配置執行器
點選儲存後
出現這個,即為配置成功
第五步:
配置jobhandler,新增任務
第六步:
點選執行一次看看效果
到此springboot整合xxl-job就完成了,在後續新增任務時,只需要編寫相應的handler去繼承IJobHandler即可。
2.4 排程器的組成結構
《
github精選系列
》
,會持續更新,想了解的朋友可以
關注
,文章有幫助的話可以
長按
點贊
有驚喜!!!文章比較長,大家可以先
收藏
、
轉發
後再看
,
有什麼補充可以在下面
評論
,謝謝大家
!