專注Java教育13年 全國咨詢/投訴熱線:400-8080-105

首頁 動力頭條 集群環境下的定時任務

集群環境下的定時任務

更新時間:2019-02-13 10:56 來源:動力節點 瀏覽11367次

定時任務的實現方式有多種,例如JDK自帶的Timer+TimerTask方式,Spring 3.0以后的調度任務(Scheduled Task),Quartz框架等。

Timer+TimerTask是最基本的解決方案,但是比較遠古了;

Spring自帶的Scheduled Task是一個輕量級的定時任務調度器,支持固定時間(支持cron表達式)和固定時間間隔調度任務,支持線程池管理;

Quartz是一個功能完善的任務調度框架;

利用如上方式都可以輕松實現定時任務功能,這些實現方式在單臺應用服務器上部署運行是完全沒有問題的,但是有時候我們的項目不是部署在一臺機器上的,而是在一個集群環境上,即當應用服務器從單機擴展至多臺集群模式時,原來的定時任務調度方案肯定就行不通了,因為我們的預期一定是在某一時刻觸發執行定時任務一次,而不是多次,當我們集群部署后就會造成定時任務被多次執行。

所以我們就需要思考如何解決在集群環境下定時任務被多次執行的問題?

1、將JOB信息維護在DB里,使用標志位來控制(如running=Y/N,“Y”表示運行中,“N”表示未運行),應用節點上觸發某個JOB執行時,先查詢DB中該JOB的狀態:沒有運行,更新狀態為運行中,再開始執行定時任務,否則,跳過。

2、聲明一把全局的“鎖”作為互斥量,哪個應用服務器拿到這把“鎖”,就有執行任務的權利,未拿到“鎖”的應用服務器不進行任何任務相關的操作,比如采用zookeeper的分布式鎖來實現;

3、分布式調度解決方案 Elastic-Job,Elastic-Job 是一個分布式調度解決方案,由兩個相互獨立的子項目 Elastic-Job-Lite 和 Elastic-Job-Cloud 組成。

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

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

Elastic-Job-Lite 和 Elastic-Job-Cloud 提供同一套 API 開發作業,開發者僅需一次開發,即可根據需要以 Lite 或 Cloud 的方式部署。

blob.png

elastic-job結合了quartz非常優秀的時間調度功能,并且利用ZooKeeper實現了靈活的分片策略,除此之外,還加入了大量實用的監控和管理功能,以及其開源社區活躍、文檔齊全、代碼優雅等優點,是分布式任務調度框架的推薦選擇。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>

返回頂部
天堂资源网,色综合天天综合给合国产,午夜无码伦费影视在线观看,亚洲网红自拍偷拍 欧美激情肉欲高潮电影| 乌克兰肥妇黑毛bbw| 伊人久久大香线蕉综合bd高清| 欧美人与兽| 性刺激特黄毛片免费视频| 欧美熟妇| 国模无码一区二区三区| 黄色网页| 特级欧美午夜aa片| 合欢诀| 午夜精品福利一区二区三区| 玩弄放荡人妇系列短篇| 快穿之玉梯横体全文阅读青亘| 国产精品久久这里都是精品| 国产网友愉拍精品视频手机| 翁公的粗大挺进晓静的密| 久久国语露脸国产精品电影| 中文字幕韩国三级理论| 一本大道一卡二卡三卡下载| 国产美女视频国产视视频| 美女胸禁止18以下看免费视频| 校长把校花按在桌上| 香港三级日本三级韩级| 久热香蕉在线视频免费| 婷婷久久综合九色综合97| 曰批免费视频播放免费| 扒开粉嫩小泬的图片| 天天澡天天添天天摸97影院| 调教家政妇| 波多野结衣无码| 日本熟妇色在线视频www| http://www.loulouart.com