有个单独的定时任务项目(cron.jar),可以在服务器上部署多个cron程序,然后用zookeeper的选举,来实现只有一个cron程序生效吗,一个cron挂了之后自动使用另一个cron。
3条回答 默认 最新
- CSDN专家-微编程 2022-01-21 09:14关注
可以的,你的需求和实现分布式锁类似,可以参考一下
于ZooKeeper实现分布式锁的步骤如下:
(1)创建一个目录mylock;
(2)线程A想获取锁就在mylock目录下创建临时顺序节点;
(3)获取mylock目录下所有的子节点,然后获取比自己小的兄弟节点,如果不存在,则说明当前线程顺序号最小,获得锁;
(4)线程B获取所有节点,判断自己不是最小节点,设置监听比自己次小的节点;
(5)线程A处理完,删除自己的节点,线程B监听到变更事件,判断自己是不是最小的节点,如果是则获得锁。
这里推荐一个Apache的开源库Curator,它是一个ZooKeeper客户端,Curator提供的InterProcessMutex是分布式锁的实现,acquire方法用于获取锁,release方法用于释放锁。
优点:具备高可用、可重入、阻塞锁特性,可解决失效死锁问题本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报