日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

elastic-job 和 xxl-job 的对比

發布時間:2024/9/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 elastic-job 和 xxl-job 的对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

綜合對比


許雪里 軟件作者?

05/23 18:47

#xxl-job# 即將發布的新版本,將會自研觸發組件,移除quartz依賴,并精簡掉11張表,大大降低線程和內存開銷。在第三方依賴上不斷做減法,在功能上不斷做加法。 感謝quartz在歷史版本中對xxl-job提供的支持,但是它逐漸跟不上xxl-job的發展,xxl-job即將踏上新的道路 ……

XXL-JOB v2.1.0,分布式任務調度平臺
? 1 ? ? xuxueli · 22 天前 · 1260 次點擊
v2.0.2 Release Notes
1、自研調度組件,移除 quartz 依賴:一方面是為了精簡系統降低冗余依賴,另一方面是為了提供系統的可控度與穩定性;
觸發:單節點周期性觸發,運行事件如 delayqueue ;
調度:集群競爭,負載方式協同處理,鎖競爭-更新觸發信息-推送時間輪-鎖釋放-鎖競爭;
2、底層表結構重構:移除 11 張 quartz 相關表,并對現有表結構優化梳理;
3、任務日志主鍵調整為 long 數據類型,防止海量日志情況下數據溢出;
4、底層線程模型重構:移除 Quartz 線程池,降低系統線程與內存開銷;
5、用戶管理:支持在線管理系統用戶,存在管理員、普通用戶兩種角色;
6、權限管理:執行器維度進行權限控制,管理員擁有全量權限,普通用戶需要分配執行器權限后才允許相關操作;
7、調度線程池參數調優;
8、注冊表索引優化,緩解鎖表問題;
9、新增 Jboot 執行器 Sample 示例項目;
10、任務列表優化,支持根據 "任務狀態"、"負責人" 屬性篩選任務;
11、任務日志列表交互優化,操作按鈕合并為分割按鈕;
12、項目依賴升級至較新穩定版本,如 spring、springboot、groovy、xxl-rpc 等等;并清理冗余 POM ;
13、升級 xxl-rpc 至較新版本,修復代理服務初始化時遠程服務不可用導致長連冗余創建的問題;
14、首頁調度報表的日期排序在 TIDB 下亂序問題修復;
15、調度中心與執行器雙向通訊超時時間調整為 3s ;
16、調度組件銷毀流程優化,先停止調度線程,然后等待時間輪內存量任務處理完成,最終銷毀時間輪線程;
17、執行器回調線程優化,回調地址為空時銷毀問題修復;
18、HttpJobHandler 優化,響應數據指定 UTF-8 格式,避免中文亂碼;
19、代碼優化,ConcurrentHashMap 變量類型改為 ConcurrentMap,避免因不同版本實現不同導致的兼容性問題;
簡介
XXL-JOB 是一個輕量級分布式任務調度平臺,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼并接入多家公司線上產品線,開箱即用。
?
輸入圖片說明
?
特性
1、簡單:支持通過 Web 頁面對任務進行 CRUD 操作,操作簡單,一分鐘上手;
2、動態:支持動態修改任務狀態、啟動 /停止任務,以及終止運行中任務,即時生效;
3、調度中心 HA (中心式):調度采用中心式設計,“調度中心”自研調度組件并支持集群部署,可保證調度中心 HA ;
4、執行器 HA (分布式):任務分布式執行,任務"執行器"支持集群部署,可保證任務執行 HA ;
5、注冊中心: 執行器會周期性自動注冊任務, 調度中心將會自動發現注冊的任務并觸發執行。同時,也支持手動錄入執行器地址;
6、彈性擴容縮容:一旦有新執行器機器上線或者下線,下次調度時將會重新分配任務;
7、路由策略:執行器集群部署時提供豐富的路由策略,包括:第一個、最后一個、輪詢、隨機、一致性 HASH、最不經常使用、最近最久未使用、故障轉移、忙碌轉移等;
8、故障轉移:任務路由策略選擇"故障轉移"情況下,如果執行器集群中某一臺機器故障,將會自動 Failover 切換到一臺正常的執行器發送調度請求。
9、阻塞處理策略:調度過于密集執行器來不及處理時的處理策略,策略包括:單機串行(默認)、丟棄后續調度、覆蓋之前調度;
10、任務超時控制:支持自定義任務超時時間,任務運行超時將會主動中斷任務;
11、任務失敗重試:支持自定義任務失敗重試次數,當任務失敗時將會按照預設的失敗重試次數主動進行重試;其中分片任務支持分片粒度的失敗重試;
12、任務失敗告警;默認提供郵件方式失敗告警,同時預留擴展接口,可方便的擴展短信、釘釘等告警方式;
13、分片廣播任務:執行器集群部署時,任務路由策略選擇"分片廣播"情況下,一次任務調度將會廣播觸發集群中所有執行器執行一次任務,可根據分片參數開發分片任務;
14、動態分片:分片廣播任務以執行器為維度進行分片,支持動態擴容執行器集群從而動態增加分片數量,協同進行業務處理;在進行大數據量業務操作時可顯著提升任務處理能力和速度。
15、事件觸發:除了"Cron 方式"和"任務依賴方式"觸發任務執行之外,支持基于事件的觸發任務方式。調度中心提供觸發任務單次執行的 API 服務,可根據業務事件靈活觸發。
16、任務進度監控:支持實時監控任務進度;
17、Rolling 實時日志:支持在線查看調度結果,并且支持以 Rolling 方式實時查看執行器輸出的完整的執行日志;
18、GLUE:提供 Web IDE,支持在線開發任務邏輯代碼,動態發布,實時編譯生效,省略部署上線的過程。支持 30 個版本的歷史版本回溯。
19、腳本任務:支持以 GLUE 模式開發和運行腳本任務,包括 Shell、Python、NodeJS、PHP、PowerShell 等類型腳本;
20、命令行任務:原生提供通用命令行任務 Handler ( Bean 任務,"CommandJobHandler");業務方只需要提供命令行即可;
21、任務依賴:支持配置子任務依賴,當父任務執行結束且執行成功后將會主動觸發一次子任務的執行, 多個子任務用逗號分隔;
22、一致性:“調度中心”通過 DB 鎖保證集群分布式調度的一致性, 一次任務調度只會觸發一次執行;
23、自定義任務參數:支持在線配置調度任務入參,即時生效;
24、調度線程池:調度系統多線程觸發調度運行,確保調度精確執行,不被堵塞;
25、數據加密:調度中心和執行器之間的通訊進行數據加密,提升調度信息安全性;
26、郵件報警:任務失敗時支持郵件報警,支持配置多郵件地址群發報警郵件;
27、推送 maven 中央倉庫: 將會把最新穩定版推送到 maven 中央倉庫, 方便用戶接入和使用;
28、運行報表:支持實時查看運行數據,如任務數量、調度次數、執行器數量等;以及調度報表,如調度日期分布圖,調度成功分布圖等;
29、全異步:任務調度流程全異步化設計實現,如異步調度、異步運行、異步回調等,有效對密集調度進行流量削峰,理論上支持任意時長任務的運行;
30、跨平臺:原生提供通用 HTTP 任務 Handler ( Bean 任務,"HttpJobHandler");業務方只需要提供 HTTP 鏈接即可,不限制語言、平臺;
31、國際化:調度中心支持國際化設置,提供中文、英文兩種可選語言,默認為中文;
32、容器化:提供官方 docker 鏡像,并實時更新推送 dockerhub,進一步實現產品開箱即用;
33、線程池隔離:調度線程池進行隔離拆分,慢任務自動降級進入"Slow"線程池,避免耗盡調度線程,提高系統穩定性;;
34、用戶管理:支持在線管理系統用戶,存在管理員、普通用戶兩種角色;
35、權限控制:執行器維度進行權限控制,管理員擁有全量權限,普通用戶需要分配執行器權限后才允許相關操作;
?


總結和結論
共同點: E-Job和X-job都有廣泛的用戶基礎和完整的技術文檔,都能滿足定時任務的基本功能需求。
不同點
X-Job 側重的業務實現的簡單和管理的方便,學習成本簡單,失敗策略和路由策略豐富。推薦使用在“用戶基數相對少,服務器數量在一定范圍內”的情景下使用
E-Job 關注的是數據,增加了彈性擴容和數據分片的思路,以便于更大限度的利用分布式服務器的資源。但是學習成本相對高些,推薦在“數據量龐大,且部署服務器數量較多”時使用

支持集群部署
X-Job : 集群部署唯一要求為:保證每個集群節點配置(db和登陸賬號等)保持一致。調度中心通過db配置區分不同集群。

執行器支持集群部署,提升調度系統可用性,同時提升任務處理能力。集群部署唯一要求為:保證集群中每個執行器的配置項 “xxl.job.admin.addresses/調度中心地址” 保持一致,執行器根據該配置進行執行器自動注冊等操作。

E-Job : 重寫Quartz基于數據庫的分布式功能,改用Zookeeper實現注冊中心

作業注冊中心: 基于Zookeeper和其客戶端Curator實現的全局作業注冊控制中心。用于注冊,控制和協調分布式作業執行。

?
最新版本X-job 基于時間輪,使用數據庫實現注冊中心,E-Job ?基于 quartz,改用Zookeeper實現注冊中心

多節點部署時任務不能重復執行
X-Job : 使用Quartz基于數據庫的分布式功能
E-Job ?: 將任務拆分為n個任務項后,各個服務器分別執行各自分配到的任務項。一旦有新的服務器加入集群,或現有服務器下線,elastic-job將在保留本次任務執行不變的情況下,下次任務開始前觸發任務重分片。

日志可追溯
X-Job : 支持,有日志查詢界面
E-Job : 可通過事件訂閱的方式處理調度過程的重要事件,用于查詢、統計和監控。Elastic-Job目前提供了基于關系型數據庫兩種事件訂閱方式記錄事件。

監控告警
X-Job : 調度失敗時,將會觸發失敗報警,如發送報警郵件。

任務調度失敗時郵件通知的郵箱地址,支持配置多郵箱地址,配置多個郵箱地址時用逗號分隔

E-Job : 通過事件訂閱方式可自行實現

作業運行狀態監控、監聽作業服務器存活、監聽近期數據處理成功、數據流類型作業(可通過監聽近期數據處理成功數判斷作業流量是否正常,如果小于作業正常處理的閥值,可選擇報警。)、監聽近期數據處理失敗(可通過監聽近期數據處理失敗數判斷作業處理結果,如果大于0,可選擇報警。)

彈性擴容縮容
X-Job : 使用Quartz基于數據庫的分布式功能,服務器超出一定數量會給數據庫造成一定的壓力
E-Job : 通過zk實現各服務的注冊、控制及協調

支持并行調度
X-Job : 調度系統多線程(默認10個線程)觸發調度運行,確保調度精確執行,不被堵塞。
E-Job : 采用任務分片方式實現。將一個任務拆分為n個獨立的任務項,由分布式的服務器并行執行各自分配到的分片項。

高可用策略
X-Job : “調度中心”通過DB鎖保證集群分布式調度的一致性, 一次任務調度只會觸發一次執行;
E-Job : 調度器的高可用是通過運行幾個指向同一個ZooKeeper集群的Elastic-Job-Cloud-Scheduler實例來實現的。ZooKeeper用于在當前主Elastic-Job-Cloud-Scheduler實例失敗的情況下執行領導者選舉。通過至少兩個調度器實例來構成集群,集群中只有一個調度器實例提供服務,其他實例處于”待命”狀態。當該實例失敗時,集群會選舉剩余實例中的一個來繼續提供服務。

失敗處理策略
X-Job : 調度失敗時的處理策略,策略包括:失敗告警(默認)、失敗重試;
E-Job : 彈性擴容縮容在下次作業運行前重分片,但本次作業執行的過程中,下線的服務器所分配的作業將不會重新被分配。失效轉移功能可以在本次作業運行中用空閑服務器抓取孤兒作業分片執行。同樣失效轉移功能也會犧牲部分性能。

動態分片策略
X-Job : 分片廣播任務以執行器為維度進行分片,支持動態擴容執行器集群從而動態增加分片數量,協同進行業務處理;在進行大數據量業務操作時可顯著提升任務處理能力和速度。

執行器集群部署時,任務路由策略選擇”分片廣播”情況下,一次任務調度將會廣播觸發對應集群中所有執行器執行一次任務,同時傳遞分片參數;可根據分片參數開發分片任務;

E-Job : 支持多種分片策略,可自定義分片策略

默認包含三種分片策略: 基于平均分配算法的分片策略、 作業名的哈希值奇偶數決定IP升降序算法的分片策略、根據作業名的哈希值對Job實例列表進行輪轉的分片策略,支持自定義分片策略

elastic-job的分片是通過zookeeper來實現的。分片的分片由主節點分配,如下三種情況都會觸發主節點上的分片算法執行:
a、新的Job實例加入集群
b、現有的Job實例下線(如果下線的是leader節點,那么先選舉然后觸發分片算法的執行)
c、主節點選舉”

?
? 而 xxl-job的是通過一個中心式集群"調度中心”來調度多個執行器執行任務的,調度中心集群可以通過增加機器來實現高可用(HA)實際會造成一定程度上的資源浪費,調度中心通過DB鎖保證集群分布式調度的一致性,這樣擴展執行器會增大DB的壓力,但是如果實際上這里數據庫只是負責任務的調度執行。在沒有那么多數量的執行器和任務的情況下是完全沒問題的。執行器可以支持分布式部署,這實際上就足以滿足大多數場景了。關鍵是原理簡單實現也非常簡潔,用起來也很輕便,與springboot也非常好集成。而且他的監控界面直接集成到調度中心里面,可以在監控界面直接新增任務,使用GLUE模式甚至可以直接在監控界面上做任務開發寫業務代碼,這點未必用得到,但是確實很方便;而elastic-job是一個單獨的工程連到zk上去監控的,因此不能直接增新增任務,也不能停止執行中的任務。單獨記錄執行日志到數據庫,然后很方便的統一管理和重發,還有失敗的郵件提醒都是簡單又好用的功能,對于一些常規的定時任務來說感覺應該用起來很舒服。

? ?綜合來說,xxl-job在我看來在業務量沒那么大的時候是一個更好的選擇。
?

特性?
?1、簡單:支持通過Web頁面對任務進行CRUD操作,操作簡單,一分鐘上手;?
?2、動態:支持動態修改任務狀態、啟動/停止任務,以及終止運行中任務,即時生效;?
?3、調度中心HA(中心式):調度采用中心式設計,“調度中心”自研調度組件并支持集群部署,可保證調度中心HA;?
?4、執行器HA(分布式):任務分布式執行,任務"執行器"支持集群部署,可保證任務執行HA;?
?5、注冊中心: 執行器會周期性自動注冊任務, 調度中心將會自動發現注冊的任務并觸發執行。同時,也支持手動錄入執行器地址;?
?6、彈性擴容縮容:一旦有新執行器機器上線或者下線,下次調度時將會重新分配任務;?
?7、路由策略:執行器集群部署時提供豐富的路由策略,包括:第一個、最后一個、輪詢、隨機、一致性HASH、最不經常使用、最近最久未使用、故障轉移、忙碌轉移等;?
?8、故障轉移:任務路由策略選擇"故障轉移"情況下,如果執行器集群中某一臺機器故障,將會自動Failover切換到一臺正常的執行器發送調度請求。?
?9、阻塞處理策略:調度過于密集執行器來不及處理時的處理策略,策略包括:單機串行(默認)、丟棄后續調度、覆蓋之前調度;?
?10、任務超時控制:支持自定義任務超時時間,任務運行超時將會主動中斷任務;?
?11、任務失敗重試:支持自定義任務失敗重試次數,當任務失敗時將會按照預設的失敗重試次數主動進行重試;其中分片任務支持分片粒度的失敗重試;?
?12、任務失敗告警;默認提供郵件方式失敗告警,同時預留擴展接口,可方便的擴展短信、釘釘等告警方式;?
?13、分片廣播任務:執行器集群部署時,任務路由策略選擇"分片廣播"情況下,一次任務調度將會廣播觸發集群中所有執行器執行一次任務,可根據分片參數開發分片任務;?
?14、動態分片:分片廣播任務以執行器為維度進行分片,支持動態擴容執行器集群從而動態增加分片數量,協同進行業務處理;在進行大數據量業務操作時可顯著提升任務處理能力和速度。?
?15、事件觸發:除了"Cron方式"和"任務依賴方式"觸發任務執行之外,支持基于事件的觸發任務方式。調度中心提供觸發任務單次執行的API服務,可根據業務事件靈活觸發。?
?16、任務進度監控:支持實時監控任務進度;?
?17、Rolling實時日志:支持在線查看調度結果,并且支持以Rolling方式實時查看執行器輸出的完整的執行日志;?
?18、GLUE:提供Web IDE,支持在線開發任務邏輯代碼,動態發布,實時編譯生效,省略部署上線的過程。支持30個版本的歷史版本回溯。?
?19、腳本任務:支持以GLUE模式開發和運行腳本任務,包括Shell、Python、NodeJS、PHP、PowerShell等類型腳本;?
?20、命令行任務:原生提供通用命令行任務Handler(Bean任務,"CommandJobHandler");業務方只需要提供命令行即可;?
?21、任務依賴:支持配置子任務依賴,當父任務執行結束且執行成功后將會主動觸發一次子任務的執行, 多個子任務用逗號分隔;?
?22、一致性:“調度中心”通過DB鎖保證集群分布式調度的一致性, 一次任務調度只會觸發一次執行;?
?23、自定義任務參數:支持在線配置調度任務入參,即時生效;?
?24、調度線程池:調度系統多線程觸發調度運行,確保調度精確執行,不被堵塞;?
?25、數據加密:調度中心和執行器之間的通訊進行數據加密,提升調度信息安全性;?
?26、郵件報警:任務失敗時支持郵件報警,支持配置多郵件地址群發報警郵件;?
?27、推送maven中央倉庫: 將會把最新穩定版推送到maven中央倉庫, 方便用戶接入和使用;?
?28、運行報表:支持實時查看運行數據,如任務數量、調度次數、執行器數量等;以及調度報表,如調度日期分布圖,調度成功分布圖等;?
?29、全異步:任務調度流程全異步化設計實現,如異步調度、異步運行、異步回調等,有效對密集調度進行流量削峰,理論上支持任意時長任務的運行;?
?30、跨平臺:原生提供通用HTTP任務Handler(Bean任務,"HttpJobHandler");業務方只需要提供HTTP鏈接即可,不限制語言、平臺;?
?31、國際化:調度中心支持國際化設置,提供中文、英文兩種可選語言,默認為中文;?
?32、容器化:提供官方docker鏡像,并實時更新推送dockerhub,進一步實現產品開箱即用;?
?33、線程池隔離:調度線程池進行隔離拆分,慢任務自動降級進入"Slow"線程池,避免耗盡調度線程,提高系統穩定性;?
?34、用戶管理:支持在線管理系統用戶,存在管理員、普通用戶兩種角色;?
?35、權限控制:執行器維度進行權限控制,管理員擁有全量權限,普通用戶需要分配執行器權限后才允許相關操作
?

xxl-job ?sql語句
- xxl_job_lock:任務調度鎖表;
- xxl_job_group:執行器信息表,維護任務執行器信息;
- xxl_job_info:調度擴展信息表: 用于保存XXL-JOB調度任務的擴展信息,如任務分組、任務名、機器地址、執行器、執行入參和報警郵件等等;
- xxl_job_log:調度日志表: 用于保存XXL-JOB任務調度的歷史信息,如調度結果、執行結果、調度入參、調度機器和執行器等等;
- xxl_job_logglue:任務GLUE日志:用于保存GLUE更新歷史,用于支持GLUE的版本回溯功能;
- xxl_job_registry:執行器注冊表,維護在線的執行器和調度中心機器地址信息;
- xxl_job_user:系統用戶表;
?
CREATE TABLE `xxl_job_info` (
? `id` int(11) NOT NULL AUTO_INCREMENT,
? `job_group` int(11) NOT NULL COMMENT '執行器主鍵ID',
? `job_cron` varchar(128) NOT NULL COMMENT '任務執行CRON',
? `job_desc` varchar(255) NOT NULL,
? `add_time` datetime DEFAULT NULL,
? `update_time` datetime DEFAULT NULL,
? `author` varchar(64) DEFAULT NULL COMMENT '作者',
? `alarm_email` varchar(255) DEFAULT NULL COMMENT '報警郵件',
? `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '執行器路由策略',
? `executor_handler` varchar(255) DEFAULT NULL COMMENT '執行器任務handler',
? `executor_param` varchar(512) DEFAULT NULL COMMENT '執行器任務參數',
? `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞處理策略',
? `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任務執行超時時間,單位秒',
? `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失敗重試次數',
? `glue_type` varchar(50) NOT NULL COMMENT 'GLUE類型',
? `glue_source` mediumtext COMMENT 'GLUE源代碼',
? `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE備注',
? `glue_updatetime` datetime DEFAULT NULL COMMENT 'GLUE更新時間',
? `child_jobid` varchar(255) DEFAULT NULL COMMENT '子任務ID,多個逗號分隔',
? `trigger_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '調度狀態:0-停止,1-運行',
? `trigger_last_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '上次調度時間',
? `trigger_next_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '下次調度時間',
? PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
?
CREATE TABLE `xxl_job_log` (
? `id` bigint(20) NOT NULL AUTO_INCREMENT,
? `job_group` int(11) NOT NULL COMMENT '執行器主鍵ID',
? `job_id` int(11) NOT NULL COMMENT '任務,主鍵ID',
? `executor_address` varchar(255) DEFAULT NULL COMMENT '執行器地址,本次執行的地址',
? `executor_handler` varchar(255) DEFAULT NULL COMMENT '執行器任務handler',
? `executor_param` varchar(512) DEFAULT NULL COMMENT '執行器任務參數',
? `executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '執行器任務分片參數,格式如 1/2',
? `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失敗重試次數',
? `trigger_time` datetime DEFAULT NULL COMMENT '調度-時間',
? `trigger_code` int(11) NOT NULL COMMENT '調度-結果',
? `trigger_msg` text COMMENT '調度-日志',
? `handle_time` datetime DEFAULT NULL COMMENT '執行-時間',
? `handle_code` int(11) NOT NULL COMMENT '執行-狀態',
? `handle_msg` text COMMENT '執行-日志',
? `alarm_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '告警狀態:0-默認、1-無需告警、2-告警成功、3-告警失敗',
? PRIMARY KEY (`id`),
? KEY `I_trigger_time` (`trigger_time`),
? KEY `I_handle_code` (`handle_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
?
CREATE TABLE `xxl_job_logglue` (
? `id` int(11) NOT NULL AUTO_INCREMENT,
? `job_id` int(11) NOT NULL COMMENT '任務,主鍵ID',
? `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE類型',
? `glue_source` mediumtext COMMENT 'GLUE源代碼',
? `glue_remark` varchar(128) NOT NULL COMMENT 'GLUE備注',
? `add_time` timestamp NULL DEFAULT NULL,
? `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
? PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
?
CREATE TABLE `xxl_job_registry` (
? `id` int(11) NOT NULL AUTO_INCREMENT,
? `registry_group` varchar(255) NOT NULL,
? `registry_key` varchar(255) NOT NULL,
? `registry_value` varchar(255) NOT NULL,
? `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
? PRIMARY KEY (`id`),
? KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
?
CREATE TABLE `xxl_job_group` (
? `id` int(11) NOT NULL AUTO_INCREMENT,
? `app_name` varchar(64) NOT NULL COMMENT '執行器AppName',
? `title` varchar(12) NOT NULL COMMENT '執行器名稱',
? `order` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
? `address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '執行器地址類型:0=自動注冊、1=手動錄入',
? `address_list` varchar(512) DEFAULT NULL COMMENT '執行器地址列表,多地址逗號分隔',
? PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
?
CREATE TABLE `xxl_job_user` (
? `id` int(11) NOT NULL AUTO_INCREMENT,
? `username` varchar(50) NOT NULL COMMENT '賬號',
? `password` varchar(50) NOT NULL COMMENT '密碼',
? `role` tinyint(4) NOT NULL COMMENT '角色:0-普通用戶、1-管理員',
? `permission` varchar(255) DEFAULT NULL COMMENT '權限:執行器ID列表,多個逗號分割',
? PRIMARY KEY (`id`),
? UNIQUE KEY `i_username` (`username`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
?
CREATE TABLE `xxl_job_lock` (
? `lock_name` varchar(50) NOT NULL COMMENT '鎖名稱',
? PRIMARY KEY (`lock_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 執行器:任務的綁定的執行器,任務觸發調度時將會自動發現注冊成功的執行器, 實現任務自動發現功能; 另一方面也可以方便的進行任務分組。每個任務必須綁定一個執行器, 可在 "執行器管理" 進行設置;
- 任務描述:任務的描述信息,便于任務管理;
- 路由策略:當執行器集群部署時,提供豐富的路由策略,包括;
? ? FIRST(第一個):固定選擇第一個機器;
? ? LAST(最后一個):固定選擇最后一個機器;
? ? ROUND(輪詢):;
? ? RANDOM(隨機):隨機選擇在線的機器;
? ? CONSISTENT_HASH(一致性HASH):每個任務按照Hash算法固定選擇某一臺機器,且所有任務均勻散列在不同機器上。
? ? LEAST_FREQUENTLY_USED(最不經常使用):使用頻率最低的機器優先被選舉;
? ? LEAST_RECENTLY_USED(最近最久未使用):最久為使用的機器優先被選舉;
? ? FAILOVER(故障轉移):按照順序依次進行心跳檢測,第一個心跳檢測成功的機器選定為目標執行器并發起調度;
? ? BUSYOVER(忙碌轉移):按照順序依次進行空閑檢測,第一個空閑檢測成功的機器選定為目標執行器并發起調度;
? ? SHARDING_BROADCAST(分片廣播):廣播觸發對應集群中所有機器執行一次任務,同時系統自動傳遞分片參數;可根據分片參數開發分片任務;
? ??
- Cron:觸發任務執行的Cron表達式;
- 運行模式:
? ? BEAN模式:任務以JobHandler方式維護在執行器端;需要結合 "JobHandler" 屬性匹配執行器中任務;
? ? GLUE模式(Java):任務以源碼方式維護在調度中心;該模式的任務實際上是一段繼承自IJobHandler的Java類代碼并 "groovy" 源碼方式維護,它在執行器項目中運行,可使用@Resource/@Autowire注入執行器里中的其他服務;
? ? GLUE模式(Shell):任務以源碼方式維護在調度中心;該模式的任務實際上是一段 "shell" 腳本;
? ? GLUE模式(Python):任務以源碼方式維護在調度中心;該模式的任務實際上是一段 "python" 腳本;
? ? GLUE模式(PHP):任務以源碼方式維護在調度中心;該模式的任務實際上是一段 "php" 腳本;
? ? GLUE模式(NodeJS):任務以源碼方式維護在調度中心;該模式的任務實際上是一段 "nodejs" 腳本;
? ? GLUE模式(PowerShell):任務以源碼方式維護在調度中心;該模式的任務實際上是一段 "PowerShell" 腳本;
- JobHandler:運行模式為 "BEAN模式" 時生效,對應執行器中新開發的JobHandler類“@JobHandler”注解自定義的value值;
- 阻塞處理策略:調度過于密集執行器來不及處理時的處理策略;
? ? 單機串行(默認):調度請求進入單機執行器后,調度請求進入FIFO隊列并以串行方式運行;
? ? 丟棄后續調度:調度請求進入單機執行器后,發現執行器存在運行的調度任務,本次請求將會被丟棄并標記為失敗;
? ? 覆蓋之前調度:調度請求進入單機執行器后,發現執行器存在運行的調度任務,將會終止運行中的調度任務并清空隊列,然后運行本地調度任務;
- 子任務:每個任務都擁有一個唯一的任務ID(任務ID可以從任務列表獲取),當本任務執行結束并且執行成功時,將會觸發子任務ID所對應的任務的一次主動調度。
- 任務超時時間:支持自定義任務超時時間,任務運行超時將會主動中斷任務;
- 失敗重試次數;支持自定義任務失敗重試次數,當任務失敗時將會按照預設的失敗重試次數主動進行重試;
- 報警郵件:任務調度失敗時郵件通知的郵箱地址,支持配置多郵箱地址,配置多個郵箱地址時用逗號分隔;
- 負責人:任務的負責人;
- 執行參數:任務執行所需的參數;
?
————————————————
版權聲明:本文為CSDN博主「程序員XW」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/m0_37337849/article/details/97755987

總結

以上是生活随笔為你收集整理的elastic-job 和 xxl-job 的对比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。