在java中,在具有2个节点的集群中同步进程执行

u4dcyp6a  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(199)

我有一个2节点的集群和一个共享文件系统。每个节点都有一个周期性运行的java进程。这个进程访问文件系统并处理一些文件,然后在处理之后删除这些文件。
这里的问题是,只有一个调度进程应该访问这些文件。如果第一个进程运行,另一个进程应该跳过执行。
我第一次尝试解决这个问题是创建一个隐藏文件 .lock . 当第一个进程开始执行时,它应该将文件移到另一个文件夹并开始处理文件。当另一个调度进程开始执行时,它首先检查 .lock 文件存在,如果不是,进程将跳过执行。当第一个进程完成执行时,它移动 .lock 文件返回到其原始文件夹。我使用files.move()方法 ATOMIC_MOVE 但经过一段时间后,我得到了意想不到的行为。
我的第二次尝试是使用分布式锁,比如 Hazelcast . 我做了一些测试,看起来还可以,但是这个解决方案对于这么简单的任务来说似乎有点复杂。
我的问题是:有没有其他更聪明/更简单的解决方案,或者我唯一的选择是使用 Hazelcast ? 你将如何解决这个问题?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题