分布式定時任務


   由於項目原因,需要使用分布式定時任務。目前可以使用的定時任務框架包括:

   A)Quartz:Java事實上的定時任務標准。但Quartz關注點在於定時任務而非數據,並無一套根據數據處理而定制化的流程。雖然Quartz可以基於數據庫實現作業的高可用,但缺少分布式並行調度的功能。

   B)TBSchedule:阿里早期開源的分布式任務調度系統。代碼略陳舊,使用timer而非線程池執行任務調度。眾所周知,timer在處理異常狀況時是有缺陷的。而且TBSchedule作業類型較為單一,只能是獲取/處理數據一種模式。還有就是文檔缺失比較嚴重。

  C)Crontab:Linux系統級的定時任務執行器。缺乏分布式和集中管理功能。

綜上所述,當前存在的作業系統缺少分布式、並行調度、彈性擴容縮容、集中管理、定制化流程型任務等功能,所以需要一個新的作業系統完善這些功能。

當當近期開源了分布式作業調度框架elastic-job項目項目開源地址:https://github.com/dangdangdotcom/elastic-job

elastic-job可以從下面的幾個類開始入手:

 JobScheduler:作業調度器,簡單說就是進行作業調度的管理容器。里面會管理作業的基本配置,注冊,選舉,分片,失效轉移等核心邏輯實現;

 ListenerManager:監聽管理,對作業的各種狀態進行監聽,包括選舉,分片,失效,操作,配置變更等事件監聽,觸發相應的執行邏輯;

 AbstractElasticJob:作業的基類,目前作業分為3種,簡單類型,流式作業,流式順序作業。

 關於elastic-job的詳情說明請參見:http://www.chinacloud.cn/show.aspx?id=22237&cid=16

 http://www.infoq.com/cn/articles/dangdang-distributed-work-framework-elastic-job


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM