定时任务分布式任务实现方案

BitDreamCraft
• 阅读 3604

定时任务的执行在分布式系统中很常见的一个问题,如果多台机器同时执行相同的定时任务,业务复杂则可能出现灾难性的后果。
Zookeeper开源客户端Curator,使用Curator的leader选举功能可以实现
Curator提供了两种选举方案:Leader Latch和Leader Election。
(1)Leader Latch:随机从候选着中选出一台作为leader,选中之后除非调用close()释放leadship,否则其他的后选择无法成为leader。
(2)Leader Election:通过LeaderSelectorListener可以对领导权进行控制,在适当的时候释放领导权,这样每个节点都有可能获得领导权。而LeaderLatch则一直持有leadership,除非调用close方法,否则它不会释放领导权。
我们这里用的是Leader Election。
1.Maven依赖

 <dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>2.10.0</version>
  </dependency>
  <dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>2.10.0</version>
  </dependency>

2.代码
定时任务分布式任务实现方案
定时任务分布式任务实现方案
定时任务分布式任务实现方案
定时任务分布式任务实现方案
测试执行方法
定时任务分布式任务实现方案

Curator提供了两种方法来实现Leader选举,不仅仅用在定时任务上,其他场景也可以使用。

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
java目前可以通过以下几种方式进行定时任务
1、单机部署模式Timer:jdk中自带的一个定时调度类,可以简单的实现按某一频度进行任务执行。提供的功能比较单一,无法实现复杂的调度任务。ScheduledExecutorService:也是jdk自带的一个基于线程池设计的定时任务类。其每个调度任务都会分配到线程池中的一个线程执行,所以其任务是并发执行的,互不影响。
Wesley13 Wesley13
3年前
PHP之定时任务的概念和实现
目录1.前言2.实现定时任务的几种方案2.1简单直接不顾后果型2.2简单可控型2.3简单改进型2.4服务器定时任务2.4.1在Crontab中执行本地脚本2.4.2在Crontab中使用URL执行脚本3.函数ini\_set用法详解3.1函数格式
Easter79 Easter79
3年前
Synctoy2.1使用定时任务0X1
环境描述:公司需要在windows上面使用双向文件同步,目前发现SyncToy可以实现这个功能,但是在Windows2012上面,添加定时任务的时候,执行状态总是0x1,定时任务配置确认多次,肯定没有问题;同样在windows10上面设置定时任务,就能运行,在google上面查了好多帖子,都是这样,都没有解决,大多数说是windows的bug,可以使用
Stella981 Stella981
3年前
Linux的定时任务
任务计划的条件:1.在未来的某个时间点执行一次某个任务(atbatch)2.周期性的执行某个任务(cron)at在指定时间执行任务_用法_at\选项参数\\时间\_选项参数_\l      查看作业\c      显示即将执行任务的细节\d      使用任务id号
可莉 可莉
3年前
2020年最新ZooKeeper面试题(附答案)
2020年最新ZooKeeper面试题1\.ZooKeeper是什么?ZooKeeper是一个开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布
Stella981 Stella981
3年前
2020年最新ZooKeeper面试题(附答案)
2020年最新ZooKeeper面试题1\.ZooKeeper是什么?ZooKeeper是一个开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布
定时任务原理方案综述 | 京东云技术团队
本文主要介绍目前存在的定时任务处理解决方案。业务系统中存在众多的任务需要定时或定期执行,并且针对不同的系统架构也需要提供不同的解决方案。京东内部也提供了众多定时任务中间件来支持,总结当前各种定时任务原理,从定时任务基础原理、单机定时任务(单线程、多线程)、分布式定时任务介绍目前主流的定时任务的基本原理组成、优缺点等。希望能帮助读者深入理解定时任务具体的算法和实现方案。
一种轻量级定时任务实现 | 京东云技术团队
现在市面上有各式各样的分布式定时任务,每个都有其独特的特点,我们这边的项目因为一开始使用的是分布式开源调度框架TBSchedule,但是这个框架依赖ZK,由于ZK的不稳定性和项目老旧无人维护,导致我们的定时任务会偶发出现异常,比如:任务停止、任务项丢失、任
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
你的停机真的优雅么?第二弹来袭 | 京东云技术团队
最近在一些核心应用上线重启的时候又出现了业务订单数据不一致的情况,通过排查定位发现还是因为停机不够优雅,罪魁祸首是定时任务执行时间过长,在上线重启的过程中定时任务没有执行完成而被强行kill,详细分析及处理方案如下。