摘要:定时任务的执行在分布式系统中很常见的一个问题,如果多台机器同时执行相同的定时任务,业务复杂则可能出现灾难性的后果。开源客户端,使用的选举功能可以实现提供了两种选举方案和。而则一直持有,除非调用方法,否则它不会释放领导权。
定时任务的执行在分布式系统中很常见的一个问题,如果多台机器同时执行相同的定时任务,业务复杂则可能出现灾难性的后果。
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依赖
org.apache.curator curator-recipes 2.10.0 org.apache.curator curator-framework 2.10.0
2.代码
测试执行方法
Curator提供了两种方法来实现Leader选举,不仅仅用在定时任务上,其他场景也可以使用。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71275.html
摘要:架构消息代理,作为临时储存任务的中间媒介,为提供了队列服务。生产者将任务发送到,消费者再从获取任务。如果使用,则有可能发生突然断电之类的问题造成突然终止后的数据丢失等后果。任务调度器,负责调度并触发定时周期任务。 架构 showImg(https://segmentfault.com/img/bVbmDXa?w=831&h=413); Broker 消息代理,作为临时储存任务的中间媒...
摘要:也是自带的一个基于线程池设计的定时任务类。其每个调度任务都会分配到线程池中的一个线程执行,所以其任务是并发执行的,互不影响。 原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10659045.html,否则将追究法律责任!!! 一、在JAVA开发领域,目前可以通过以下几种方式进行定时任务 1、单机部署模式 Timer:jdk中...
摘要:当触发定时任务时,一台服务的任务进入切面,通过方法为唯一的加锁,如果当前不存在,将放入缓存,并返回通过设置锁超时时间,结束后跳出执行定时任务方法。 问题描述 将带有定时任务的项目部署在单台测试环境上,完全没问题。生产上是两台集群服务器,项目部署上去发现定时任务的模块同时在两台机器上各执行了一遍,这将会导致其他意外的发生。 解决方案----redis分布式锁 使用redis分布式锁,为定...
阅读 3197·2021-09-06 15:02
阅读 2243·2019-08-30 15:48
阅读 3439·2019-08-29 11:08
阅读 3281·2019-08-26 13:55
阅读 2440·2019-08-26 13:35
阅读 3162·2019-08-26 12:11
阅读 2598·2019-08-26 11:48
阅读 881·2019-08-26 11:42