定时任务的执行在分布式系统中很常见的一个问题,若是多台机器同时执行相同的定时任务,业务复杂则可能出现灾难性的后果。
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.代码
测试执行方法分布式
Curator提供了两种方法来实现Leader选举,不单单用在定时任务上,其余场景也能够使用。测试