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

定时任务的执行在分布式系统中很常见的一个问题,若是多台机器同时执行相同的定时任务,业务复杂则可能出现灾难性的后果。
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依赖apache

<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.代码
clipboard.png
clipboard.png
clipboard.png
clipboard.png
测试执行方法
clipboard.png分布式

Curator提供了两种方法来实现Leader选举,不单单用在定时任务上,其余场景也能够使用。测试

相关文章
相关标签/搜索