常見分布式任務排程工具分析

2021-10-06 15:42:14 字數 1869 閱讀 2572

人生苦短,不如養狗

在日常業務中或多或少都會碰到這樣的需求,需要在指定時間執行某個任務,或者週期性的執行某個任務。類似這種任務,一般可以歸結為定時任務。正所謂:**有需求,**就有創造。為了滿足定時任務這樣的需求,各種任務排程框架應運而生。timer、scheduledthreadpoolexecutor(什麼?你沒看錯,這個也可以做定時任務)、quartz等等。但隨著分布式、微服務的發展,以上的作業排程框架就有點不夠看了。主要有以下幾個問題:

下面,閒魚就根據自己了解到的市面上比較常用的三款分布式任務排程工具進行簡單的對比分析。

從幾個較大的部落格平台以及github上的調研結果來看,比較常用的開源分布式任務排程框架有如下三個:elastic-job(當當網)、saturn(唯品會)、xxl-job(大眾點評-個人)。

從功能上來看,上述的三個開源框架都滿足了日常業務所需。需要注意的是,elastic-job-lite的去中心和服務自治更符合分布式理念,而staurn和xxl-job則保留了排程中心的概念。還有乙個顯著的區別是,前兩者使用的是zookeeper作為服務的註冊中心,而xxl-job使用的是db方式來進行任務註冊和發現。

特性elastic-jobsaturnxxl-job

高可用通過zookeeper的註冊與發現,可以動態的新增伺服器

基於競爭資料庫鎖保證只有乙個節點執行任務,支援水平擴容。可以手動增加定時任務,啟動和暫停任務,有監控

同elastic-job

任務分片

可以可以

可以管理介面

有運維平台,提供了快捷修改作業設定,作業和伺服器維度狀態檢視,操作作業禁用\啟用、停止和刪除等生命週期,但停止的任務不可以重啟,無報警機制

進行任務建立、編輯,編輯glue**,操作作業禁用\啟用、停止和刪除等生命週期,可以檢視排程日誌,任務進度監控,任務依賴,資料加密,郵件報警(提供了釘釘報警api,可以進行二次開發),執行報表,國際化

同elastic-job,可以進行任務重啟,並提供了一鍵摘流量、一鍵dump等executor運維功能

開發難易程度

簡單簡單

簡單整體來看,三個框架的功能大致相同,一些高階特性方面各有千秋。但從運維平台來看,elastic-job和後兩者相比要稍差一籌,對於elastic-job-lite而言,運維平台是乙個可有可無的元件(目前在我們的專案中就沒有使用到)。同時如果想要通過運維平台完全控制作業的分發,就需要使用elastic-job-cloud,elastic-job-lite並無作業分發功能。

這裡我們直接看一下github上面的star、issue和contributor等引數情況。

從github的熱度和詳細度來看,xxl-job可以說是佔據首位。相比於elastic-job的長時間不更新,xxl-job的**維護和社群活躍度還是非常高的,從這一方面來看,xxl-job對於使用者來說還是非常友好的。

以上就是對目前較為常用的三款分布式任務排程工具進行的乙個簡單的分析對比。當然除了這三個比較熱門的工具,還有諸如tbschedule(**早期基於timer開源的一款作業排程框架)、light-task-schedule等作業排程框架,這裡就不一一介紹了,有興趣的同學可以到github上搜尋了解一下。

分布式 常見分布式框架

分布式協調系統 日誌複製系統 paxos演算法及其變體的實現,典型的有zookeeper etcd 分布式檔案系統 hdfs hadoop 分布式nosql redis hbase 訊息佇列 rabbitmq kafka,關注訊息的at least once,at most once,only on...

分布式任務排程

定時job,在什麼時間進行執行 任務。public static void main string args catch exception e thread thread new thread runnable thread.start public static void main string...

常見分布式快取問題

今天給大家整理一篇關於redis經常被問到的問題 快取雪崩 快取穿透 快取預熱 快取更新 快取降級等概念 一 快取雪崩 快取雪崩我們可以簡單的理解為 由於原有快取失效,新快取未到期間 例如 我們設定快取時採用了相同的過期時間,在同一時刻出現大面積的快取過期 所有原本應該訪問快取的請求都去查詢資料庫了...