首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分布式锁服务

分布式锁服务
EN

Stack Overflow用户
提问于 2009-06-29 17:53:38
回答 6查看 37.3K关注 0票数 60

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

所需经费如下:

  1. 从不同的进程/机器中可以看到的互斥(锁)
  2. lock...release语义
  3. 在某个超时之后自动释放锁--如果锁持器死了,它将在X秒后自动释放。
  4. Java实现
  5. 很高兴有:.Net实现
  6. 如果是免费的:死锁检测/缓解
  7. 易于部署,请参见下面的说明。

我对“可以在数据库上完成”或“可以在JavaSpaces上完成”这样的回答不感兴趣--我知道。我感兴趣的是一个现成的,开箱即用的,行之有效的实现方案。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-06-29 18:02:41

兵马俑,包括开源版本,通过使用synchronizedjava.util.concurrent.ReentrantReadWriteLock实现了分布式锁定语义--后者显然适合您的需求。

更新

由于这个问题现在增加了与GigaSpaces混合的要求,所以我要说不要混合它们。它只会给您的技术堆栈增加更多的复杂性,以及以下工作:

  • 在代码和基础设施方面进行整合;
  • 管理它们之间的同步;
  • 学习/调整/调试兵马俑。

将更好地用于创建或实现基于GigaSpaces的锁定解决方案。

票数 12
EN

Stack Overflow用户

发布于 2009-06-30 08:29:34

这个街区上一个新的孩子是哈泽尔卡斯特。我一直在玩它,它的使用和配置非常简单。

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

Hazelcast

  1. 互斥(锁),java.util.concurrency.locks.Lock的正确实现
  2. 在某个超时之后自动释放锁,如果某个成员离开集群,所有锁都会被释放。
  3. Java实现,没错
  4. 很好:.Net实现,nope是一个纯java解决方案,可以移植到j#。
  5. 如果它是免费的:死锁检测/缓解,则不做任何努力来处理这个问题。
  6. 轻松部署,它是一个带有单个配置文件的jar,部署为应用程序的一部分,不需要额外的进程
票数 24
EN

Stack Overflow用户

发布于 2009-06-30 10:19:25

看看Apache的动物园管理员 (一个Hadoop子项目)-它提供分布式同步。文档不是很好,但是它看起来是一个有趣的产品--查看有关如何使用Zookeeper的想法的菜谱。

它比您可能想要的级别更低,它确实需要额外的部署,因为它建议使用专用服务器。

您可以对不同的锁定策略进行建模,并且它确实为即将死亡的锁持有人(短暂的节点)提供了解决方案。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1059580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档