足彩总进球数怎么中奖 竞彩足球总进球在哪看 总进球计算器 竞彩总进球数怎么算 世界杯荷兰总进球数 c罗职业生涯总进球数 裁判员总进球 竞彩足球总进球大小球 竞彩总进球数复选 c罗职业生涯总进球650 总进球数难于上青天 c罗总进球650 欧冠总进球c罗 竞猜总进球计算器 计算器足球总进球数玩法

集群環境下的定時任務


    定時任務的實現方式有多種,例如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實現了靈活的分片策略,除此之外,還加入了大量實用的監控和管理功能,以及其開源社區活躍、文檔齊全、代碼優雅等優點,是分布式任務調度框架的推薦選擇。

2012年梅西总进球数
足彩总进球数怎么中奖 竞彩足球总进球在哪看 总进球计算器 竞彩总进球数怎么算 世界杯荷兰总进球数 c罗职业生涯总进球数 裁判员总进球 竞彩足球总进球大小球 竞彩总进球数复选 c罗职业生涯总进球650 总进球数难于上青天 c罗总进球650 欧冠总进球c罗 竞猜总进球计算器 计算器足球总进球数玩法
哪个彩票平台流水返点高 玩龙虎有什么诀窍 斗鱼f1赛车视频直播 本彩新疆11选5 浙江风采双色球竞猜实时统计 易发棋牌手机版 百人牛牛闲家稳赚攻略 黑龙江11选5组选遗漏正规 个人建网站赚钱的案例有哪些 重庆时时彩v1.2.0版本 时时彩一直平投赚钱吗 北京赛车现场直播 下载波克棋牌 万人炸金花手机下载 赛车pk10官网开奖记录 ag电子游戏怎么赢钱