当前位置:  开发笔记 > 编程语言 > 正文

分布式锁服务

如何解决《分布式锁服务》经验,为你挑选了4个好方法。

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

要求是:

    可以从不同的进程/机器中看到的互斥(锁定)

    锁...释放语义

    在某个超时后自动锁定释放 - 如果锁定持有者死亡,它将在X秒后自动释放

    Java实现

    很高兴:.Net实施

    如果它是免费的:死锁检测/缓解

    易于部署,请参阅下面的说明.

我对"它可以在数据库上完成"或"它可以在JavaSpaces上完成"等答案不感兴趣 - 我知道.我对一个现成的,开箱即用的,经过验证的实现感兴趣.



1> Gareth Davis..:

街区的一个新孩子是淡褐色的.我一直在玩它,使用和配置非常简单.

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

Hazelcast:

    互斥(锁定),是的执行 java.util.concurrency.locks.Lock

    在某个超时后自动锁定释放,如果成员离开集群,则释放所有锁定

    Java实现,是的

    很高兴:.Net实现,nope是一个纯java解决方案,可能可以移植到j#

    如果它是免费的:死锁检测/缓解,nope没有努力使我的Hazelcast处理这个

    易于部署,它是一个带有单个配置文件的jar,作为应用程序的一部分进行部署,无需额外的过程


是的,hazelcast使用mutlicast来自动发现它的成员,如果mutlicast不适合,也可以使用hardwiring群集.如果你想使用MySql锁定东西,那真的很容易吗?只是做'从ID锁定LOCK_TABLE ID =`sharedname` FOR UPDATE'

2> Robert Munte..:

陶土,包括开源版本,已经分发通过使用锁定语义synchronizedjava.util.concurrent.ReentrantReadWriteLock-后者显然是适合您的需求.


更新

由于这个问题现在增加了与GigaSpaces"混合"的要求,我将说不要混合它们.这只会增加您的技术堆栈的复杂性,以及:

在代码和基础设施方面进行整合;

管理他们之间的同步;

学习/调整/调试Teracotta.

最好花在创建或实现基于GigaSpaces的锁定解决方案上.



3> 小智..:

查看Apache的Zookeeper(一个Hadoop子项目) - 它提供分布式同步.文档不是很好,但是有什么使它看起来很有趣 - 查看有关如何使用Zookeeper的想法的方法.

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

您可以为不同的锁定策略建模,它确实为锁定持有者死亡(短暂节点)提供了解决方案.


AFAIU,ZooKeeper为每个锁获取写入磁盘.太贵.
预写日志的内容是可恢复性的.并且由于锁定服务是分布式的,因此如果未缓存锁定,则锁定获取将导致网络旅行.与网络旅行相比,附加到磁盘并不是非常昂贵.Zookeepr用于许多分布式系统,如HBase.它的表现很好.

4> Nikita Koksh..:

我建议使用Redisson,它是基于内存数据网格的Redis.它实现了熟悉的Java数据结构,包括分布式java.util.Lockjava.util.concurrent.ReentrantReadWriteLock对象.包括设置leaseTime的能力.Lock用法示例:

Redisson redisson = Redisson.create(config);

Lock lock = redisson.getLock("anyLock");
try {
   // unlock automatically after 10 seconds of hold
   lock.lock(10, TimeUnit.SECONDS);

} finally {
   lock.unlock();
}

...

redisson.shutdown();

支持Azure和AWS等云供应商.


@Scott我修复了我的答案,在Redisson 1.1.4版本中增加了设置锁定释放超时的新功能
推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有