弹簧应用中"lock file"模式的最佳方法是什么?



我正在寻找一种在 spring 应用程序中实现"锁定文件"模式的方法。我想防止的是同一 spring 应用程序的多个副本同时使用相同的资源(例如数据库)。我知道在 unix 系统中,应用程序通常会在启动时创建一个名为".lock"的文件,如果该文件已经存在,则拒绝启动。这可以防止多个实例在同一台服务器上运行。我有一些关于将此模式应用于针对同一数据库运行的多个 spring 应用程序的问题的想法,但我想知道是否有专门为此问题开发的任何内容更通用或内置于框架中。

我也在寻找这样的解决方案,但找不到。实施应该很容易,

  • 启动时检查/创建锁定文件
  • 使用 JVM 关闭钩子将其删除(因此即使应用程序崩溃也会将其删除)

如果 JVM 崩溃(例如内存不足),则不会删除该文件,我认为没有办法避免这种情况。

相关内容

最新更新