分布式锁定服务 [已关闭]

2022-08-31 16:28:28

您将使用哪种分布式锁服务?

要求是:

  1. 可以从不同进程/机器中看到的互斥(锁定)
  2. 锁。。。发布语义
  3. 一定超时后自动释放锁 - 如果锁架死亡,X秒后将自动释放
  4. Java 实现
  5. 很高兴有:.Net实现
  6. 如果是免费的:死锁检测/缓解
  7. 易于部署,请参阅下面的注释。

我对“它可以在数据库上完成”或“它可以在JavaSpaces上完成”这样的答案不感兴趣 - 我知道。我对一个现成的、开箱即用的、经过验证的实现感兴趣。


答案 1

街区上一个较新的孩子是hazelcast。我一直在玩它,它使用和配置非常简单。

据我所知,Gigaspaces和hazelcast之间不应该有任何冲突,因为hazelcast没有任何依赖关系,即没有jgroups.jar等。

黑兹尔卡斯特

  1. 一个互斥(锁),是的,实现java.util.concurrency.locks.Lock
  2. 在一定超时后自动释放锁,是的,如果成员离开集群,所有锁都会被释放
  3. Java实现,是的
  4. 很高兴有:.Net实现,nope是一个纯java解决方案,也许可以移植到j#
  5. 如果它是免费的:死锁检测/缓解,没有努力没有努力我的Hazelcast来处理这个问题
  6. 易于部署,它是一个带有单个配置文件的jar,作为应用程序的一部分进行部署,无需其他进程

答案 2

看看Apache的Zookeeper(一个Hadoop子项目) - 它提供分布式同步。文档不是很好,但有什么使它看起来像一个有趣的产品 - 查看食谱,了解如何使用Zookeeper的想法。

它比您可能想要的级别要低,并且确实需要额外的部署,因为它推荐了专用服务器。

您可以对不同的锁定策略进行建模,它确实为锁定支架死亡(临时节点)提供了解决方案。


推荐