XXL-JOB Github源碼地址: https://github.com/xuxueli/xxl-job
XXL-JOB 中文文檔: https://www.xuxueli.com/xxl-job/
一 XXL-JOB工作原理?

XXL-JOB 是一款分布式任務調度平臺,其工作原理如下:
- 調度中心:XXL-JOB 的調度中心負責管理任務、調度任務執(zhí)行,并提供任務的可視化管理界面。調度中心會定時掃描任務表,獲取需要執(zhí)行的任務列表。
- 執(zhí)行器:執(zhí)行器是部署在執(zhí)行任務的服務器上的代理程序,它接收調度中心的任務調度請求,并在本地執(zhí)行任務。執(zhí)行器會向調度中心注冊,并定時向調度中心匯報任務執(zhí)行狀態(tài)。
- 任務觸發(fā)方式:任務可以通過多種觸發(fā)方式進行調度,包括手動觸發(fā)、CRON 表達式觸發(fā)、固定頻率觸發(fā)等。
- 分片廣播:當一個任務需要分片執(zhí)行時,調度中心會將任務劃分為多個子任務,并通過分片廣播的方式將子任務發(fā)送給不同的執(zhí)行器同時執(zhí)行。
- 任務執(zhí)行日志記錄:執(zhí)行器在執(zhí)行任務時,會將任務的執(zhí)行日志寫入日志文件或數據庫,并定期上傳給調度中心,以便于查看任務的執(zhí)行情況。
- 失敗重試與報警機制:當任務執(zhí)行失敗時,調度中心會根據配置的重試策略對任務進行重試,并在任務連續(xù)失敗超過閾值后發(fā)送報警通知。
- 總體來說,XXL-JOB 的工作原理是通過調度中心與執(zhí)行器之間的通信協作,實現任務的調度、分片執(zhí)行和狀態(tài)管理。通過集中式的調度中心,可以方便地管理和監(jiān)控分布式環(huán)境下的任務執(zhí)行情況,提高任務調度的可靠性和效率。
二 XXL-JOB是如何進行分片的?
在XXL-JOB中,任務的分片是指將一個任務拆分成多個子任務并分配給不同執(zhí)行器并行執(zhí)行,以提高任務執(zhí)行效率。下面是XXL-JOB進行分片的基本原理:
任務參數配置:在創(chuàng)建任務時,可以配置分片參數。主要包括分片總數和分片參數。
分片廣播:當任務觸發(fā)時,調度中心會根據分片總數和參數將任務進行分片,并將每個子任務通過分片廣播的方式發(fā)送給不同的執(zhí)行器。
執(zhí)行器接收任務:執(zhí)行器接收到分片任務后,會根據任務參數中的分片索引來判斷當前執(zhí)行器是否負責執(zhí)行該分片。
分片執(zhí)行:如果執(zhí)行器負責執(zhí)行該分片,它會根據任務邏輯執(zhí)行相應的分片任務。每個執(zhí)行器都獨立執(zhí)行自己負責的分片任務。
執(zhí)行結果上報:每個執(zhí)行器在執(zhí)行分片任務完成后,會將任務的執(zhí)行結果(成功或失?。┥蠄蠼o調度中心。
狀態(tài)匯報與合并:調度中心接收到各個執(zhí)行器上報的分片任務執(zhí)行結果后,會進行匯報與合并。如果所有分片任務都執(zhí)行成功,則表示整個任務執(zhí)行成功;否則,如果有任何一個分片任務執(zhí)行失敗,則整個任務被標記為執(zhí)行失敗。
總結來說,XXL-JOB通過分片廣播的方式將任務拆分成多個子任務,并通過執(zhí)行器并行執(zhí)行。每個執(zhí)行器負責自己負責的分片任務,執(zhí)行完成后將結果上報給調度中心。調度中心統計所有分片任務的執(zhí)行結果,根據情況判斷整個任務的執(zhí)行狀態(tài)。通過這種分片的方式,可以提高任務的并行性和執(zhí)行效率,適應大規(guī)模任務的處理需求。