當前位置:
首頁 > 最新 > 分散式定時任務對比

分散式定時任務對比

分散式定時任務

1. 什麼是分散式定時任務

把分散的,可靠性差的計劃任務納入統一的平台,並實現集群管理調度和分散式部署的一種定時任務的管理方式。叫做分散式定時任務.

2. 常見開源方案

elastic-job,xxl-job ,quartz , saturn, opencron ,antares

elastic-job

elastic-job 是由噹噹網基於quartz 二次開發之後的分散式調度解決方案 , 由兩個相對獨立的子項目Elastic-Job-Lite和Elastic-Job-Cloud組成 。

Elastic-Job-Lite定位為輕量級無中心化解決方案,使用jar包的形式提供分散式任務的協調服務。

Elastic-Job-Cloud使用Mesos + Docker(TBD)的解決方案,額外提供資源治理、應用分發以及進程隔離等服務

亮點:

基於quartz 定時任務框架為基礎的,因此具備quartz的大部分功能

使用zookeeper做協調,調度中心,更加輕量級

支持任務的分片

支持彈性擴容 , 可以水平擴展 , 當任務再次運行時,會檢查當前的伺服器數量,重新分片,分片結束之後才會繼續執行任務

失效轉移,容錯處理,當一台調度伺服器宕機或者跟zookeeper斷開連接之後,會立即停止作業,然後再去尋找其他空閑的調度伺服器,來運行剩餘的任務

提供運維界面,可以管理作業和註冊中心。

elastic-job結合了quartz非常優秀的時間調度功能,並且利用ZooKeeper實現了靈活的分片策略。除此之外,還加入了大量實用的監控和管理功能,

以及其開源社區活躍、文檔齊全、代碼優雅等優點,是分散式任務調度框架的推薦選擇。

由於elastic-job-lite 不支持動態添加作業,此處僅貼上elastic-job-Cloud架構圖

xxl-job

由個人開源的一個輕量級分散式任務調度框架 ,主要分為 調度中心和執行器兩部分 , 調度中心在啟動初始化的時候,會默認生成執行器的RPC代理

對象(http協議調用), 執行器項目啟動之後, 調度中心在觸發定時器之後通過jobHandle 來調用執行器項目裡面的代碼,核心功能和elastic-job差不多

,同時技術文檔比較完善

系統架構圖:

quartz

quartz 的常見集群方案如下,通過在資料庫中配置定時器信息, 以資料庫悲觀鎖的方式達到同一個任務始終只有一個節點在運行,

優點:

保證節點高可用 (HA), 如果某一個幾點掛了, 其他節點可以頂上

缺點:

同一個任務只能有一個節點運行,其他節點將不執行任務,性能低,資源浪費

當碰到大量短任務時,各個節點頻繁的競爭資料庫鎖,節點越多這種情況越嚴重。性能會很低下

quartz 的分散式僅解決了集群高可用的問題,並沒有解決任務分片的問題,不能實現水平擴展

Saturn

Saturn是唯品會在github開源的一款分散式任務調度產品。它是基於噹噹elastic-job 1.0版本來開發的,其上完善了一些功能和添加了一些新的feature。

亮點:

支持多語言開發 python、Go、Shell、Java、Php。

管理控制台和數據統計分析更加完善

缺點:

技術文檔較少 , 該框架是2016年由唯品會的研發團隊基於elastic-job開發而來的

opencron

一個功能完善真正通用的linux定時任務調度定系統,滿足多種場景下各種複雜的定時任務調度,同時集成了linux實時監控,webssh,提供一個方便管理定時任務的平台

缺點:僅支持kill任務, 現場執行,查詢任務運行狀態 等, 主要功能是著重於任務的修改和查詢上。 不能動態的添加任務以及任務分片。

antares

優點:

一個任務僅會被伺服器集群中的某個節點調度,調度機制基於成熟的 quartz

並行執行 , 用戶可通過對任務預分片,有效提升任務執行效率

失效轉移

彈性擴容,在任務運行時,可以動態的加機器

友好的管理控制台

缺點:

不能動態的添加任務,僅能在控制台對任務進行觸發,暫停,刪除等操作

文檔不多,開源社區不夠活躍

系統架構圖如下:

4. 比較

此處列出了幾個代表性的開源產品

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

越努力,越幸運——比特幣挖礦奧義
我們行走江湖,不過一把野心

TAG:全球大搜羅 |