从远程服务器中的某个位置创建一个 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
. 进行锁定
我正在尝试创建跨 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
. 进行锁定