在具有2个Java节点的集群中同步进程执行
我有一个有2个节点的集群和一个共享文件系统。每个节点都有一个定期运行的java进程。该进程访问文件系统并处理一些文件,处理后删除这些文件。在具有2个Java节点的集群中同步进程执行,java,multithreading,synchronization,hazelcast,Java,Multithreading,Synchronization,Hazelcast,我有一个有2个节点的集群和一个共享文件系统。每个节点都有一个定期运行的java进程。该进程访问文件系统并处理一些文件,处理后删除这些文件。 这里的问题是,只有一个调度进程应该访问这些文件。如果第一个进程运行,另一个进程应该跳过执行 我解决此问题的第一次尝试是创建一个隐藏文件.lock . 当第一个进程开始执行时,它应该移动文件 进入另一个文件夹并开始处理文件。当另一个 计划进程首先检查.lock 文件存在,如果不存在,进程将跳过执行。 当第一个进程完成执行时,它移动.lock 文件返回到其原始
这里的问题是,只有一个调度进程应该访问这些文件。如果第一个进程运行,另一个进程应该跳过执行
- 我解决此问题的第一次尝试是创建一个隐藏文件
. 当第一个进程开始执行时,它应该移动文件 进入另一个文件夹并开始处理文件。当另一个 计划进程首先检查.lock
文件存在,如果不存在,进程将跳过执行。 当第一个进程完成执行时,它移动.lock
文件返回到其原始文件夹。我用的是 方法使用.lock
选项,但经过一定时间后 我的行为出人意料原子移动
- 我的第二次尝试是使用分布式锁,如
。我做了一些测试,看起来还可以,但是对于这么简单的任务来说,这个解决方案似乎有点复杂李>Hazelcast
Hazelcast
?你将如何解决这个问题