來自:CSDN氮采,作者:guyue35
1. 什么是分布式定時任務
2. 常見開源方案
elastic-job
xxl-job
quartz
Saturn
opencron
antares
3. 比較
1、什么是分布式定時任務
把分散的,可靠性差的計劃任務納入統(tǒng)一的平臺晦雨,并實現集群管理調度和分布式部署的一種定時任務的管理方式。叫做分布式定時任務扩劝。
2. 常見開源方案
- elastic-job
- xxl-job
- quartz
- saturn
- opencron
- antares
elastic-job
elastic-job 是由當當網基于quartz 二次開發(fā)之后的分布式調度解決方案 亏娜, 由兩個相對獨立的子項目Elastic-Job-Lite和Elastic-Job-Cloud組成 。
Elastic-Job-Lite定位為輕量級無中心化解決方案嫉戚,使用jar包的形式提供分布式任務的協(xié)調服務刨裆。
Elastic-Job-Cloud使用Mesos + Docker(TBD)的解決方案,額外提供資源治理彬檀、應用分發(fā)以及進程隔離等服務
亮點:
- 基于quartz 定時任務框架為基礎的帆啃,因此具備quartz的大部分功能
- 使用zookeeper做協(xié)調,調度中心窍帝,更加輕量級
- 支持任務的分片
- 支持彈性擴容 努潘, 可以水平擴展 , 當任務再次運行時坤学,會檢查當前的服務器數量疯坤,重新分片,分片結束之后才會繼續(xù)執(zhí)行任務
- 失效轉移深浮,容錯處理压怠,當一臺調度服務器宕機或者跟zookeeper斷開連接之后,會立即停止作業(yè)略号,然后再去尋找其他空閑的調度服務器刑峡,來運行剩余的任務
- 提供運維界面,可以管理作業(yè)和注冊中心玄柠。
elastic-job結合了quartz非常優(yōu)秀的時間調度功能突梦,并且利用ZooKeeper實現了靈活的分片策略。除此之外羽利,還加入了大量實用的監(jiān)控和管理功能宫患,
以及其開源社區(qū)活躍、文檔齊全这弧、代碼優(yōu)雅等優(yōu)點娃闲,是分布式任務調度框架的推薦選擇虚汛。
由于elastic-job-lite 不支持動態(tài)添加作業(yè),此處僅貼上elastic-job-Cloud架構圖
xxl-job
由個人開源的一個輕量級分布式任務調度框架 皇帮,主要分為 調度中心和執(zhí)行器兩部分 卷哩, 調度中心在啟動初始化的時候,會默認生成執(zhí)行器的RPC代理
對象(http協(xié)議調用)属拾, 執(zhí)行器項目啟動之后将谊, 調度中心在觸發(fā)定時器之后通過jobHandle 來調用執(zhí)行器項目里面的代碼,核心功能和elastic-job差不多
渐白,同時技術文檔比較完善
系統(tǒng)架構圖:
quartz
quartz 的常見集群方案如下尊浓,通過在數據庫中配置定時器信息, 以數據庫悲觀鎖的方式達到同一個任務始終只有一個節(jié)點在運行纯衍,
優(yōu)點:
- 保證節(jié)點高可用 (HA)栋齿, 如果某一個幾點掛了, 其他節(jié)點可以頂上
缺點:
- 同一個任務只能有一個節(jié)點運行襟诸,其他節(jié)點將不執(zhí)行任務瓦堵,性能低,資源浪費
- 當碰到大量短任務時歌亲,各個節(jié)點頻繁的競爭數據庫鎖谷丸,節(jié)點越多這種情況越嚴重。性能會很低下
- quartz 的分布式僅解決了集群高可用的問題应结,并沒有解決任務分片的問題,不能實現水平擴展
Saturn
Saturn是唯品會在github開源的一款分布式任務調度產品泉唁。它是基于當當elastic-job 1.0版本來開發(fā)的鹅龄,其上完善了一些功能和添加了一些新的feature。
亮點:
- 支持多語言開發(fā) python亭畜、Go扮休、Shell、Java拴鸵、Php玷坠。
- 管理控制臺和數據統(tǒng)計分析更加完善
缺點:
- 技術文檔較少 , 該框架是2016年由唯品會的研發(fā)團隊基于elastic-job開發(fā)而來的
opencron
一個功能完善真正通用的linux定時任務調度定系統(tǒng),滿足多種場景下各種復雜的定時任務調度,同時集成了linux實時監(jiān)控,webssh,提供一個方便管理定時任務的平臺
缺點:僅支持 kill任務劲藐, 現場執(zhí)行八堡,查詢任務運行狀態(tài) 等, 主要功能是著重于任務的修改和查詢上聘芜。不能動態(tài)的添加任務以及任務分片兄渺。
antares
優(yōu)點:
- 一個任務僅會被服務器集群中的某個節(jié)點調度,調度機制基于成熟的 quartz
- 并行執(zhí)行 汰现, 用戶可通過對任務預分片挂谍,有效提升任務執(zhí)行效率
- 失效轉移
- 彈性擴容叔壤,在任務運行時,可以動態(tài)的加機器
- 友好的管理控制臺
缺點:
- 不能動態(tài)的添加任務口叙,僅能在控制臺對任務進行觸發(fā)炼绘,暫停,刪除等操作
- 文檔不多妄田,開源社區(qū)不夠活躍
系統(tǒng)架構圖如下:
3俺亮。比較
此處列出了幾個代表性的開源產品