从远程服务器中的某个位置创建一个 FileOutputStream

Create a `FileOutputStream` out of a location in a remote server

我正在尝试创建跨 JVM 锁。为了做到这一点,我想在远程 linux 服务器中的某个位置创建一个 java.io.FileOutputStream,例如这个服务器:

some_remote_server.mybiz.com:/tmp/.lock

像这样:

String locStr = "???"
FileOutputStream fos = new FileOutputStream(locStr)
FileLock fl = fos.getChannel().tryLock()

我应该怎么填写???

无法直接在远程位置创建 FileOutputStream。不过你有几个选择。

  • 使用诸如 NFS 之类的东西将远程服务器上的文件系统挂载到运行 JVM 的本地文件系统上
  • 在远程服务器上使用 HTTP API 而不是文件系统
  • 使用 ZooKeeper 之类的东西,这是一个 "real" 管理分布式锁的解决方案
  • 在您的数据库中使用锁,这类似于 ZooKeeper。例如,PostgreSQL 允许您使用 SELECT FOR UPDATE.
  • 进行锁定