我的系统中有几个节点构成一个逻辑集群。有一个非常敏感的流程需要节点在关键部分进行同步。
由于各种原因,我不能使用像hazelcast这样的分布式框架。
我有一个缓解措施。所有节点都连接到共享文件系统。
我认为我可以利用它来实现一个简单且有希望可靠的群集范围锁。
我用Java编程(1.8):
// 'file' is a path shared between the nodes.
FileChannel fc = FileChannel.open(Paths.get(file), StandardOpenOption.APPEND);
FileLock lock = fc.lock();
System.out.println("Critical section"); // may take up to two minutes
lock.release();
我的问题:这种方法有任何限制吗?我猜这对底层操作系统,文件系统及其配置非常敏感。
我很想知道什么时候不工作。