问题标签 [distributed-lock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
231 浏览

c# - 如何在分布式 .Net 应用程序中一次只能让一个用户访问资源(屏幕)?

我有一个基于客户端服务器的 Windows 窗体应用程序,它只需要管理员屏幕。管理员功能需要以这样一种方式实现,即在任何给定时间只有一个管理员可以访问该屏幕。Windows 窗体客户端应用程序使用 .NET Remoting 与服务器对话。并且服务器端分布在多台机器上。

0 投票
6 回答
36176 浏览

java - 分布式锁服务

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

要求是:

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

我对“可以通过数据库完成”或“可以通过 JavaSpaces 完成”之类的答案不感兴趣——我知道。我对现成的、开箱即用的、经过验证的实施很感兴趣。

0 投票
3 回答
11331 浏览

.net - .NET 中的分布式锁定

我正在寻找适用于多台机器的锁定机制的建议。在我的情况下,我基本上只是希望能够在 2 台机器上启动一项服务并拥有一个块,直到另一台完成,这是一种确保冗余的简单方法,以防服务机器出现故障。

分布式锁服务类似,但专门寻找人们已成功与 .NET 集成的项目。

0 投票
1 回答
991 浏览

distributed-computing - 用于处理竞争条件的一致散列与分布式锁

在工作负载分布到多个节点的分布式系统中,处理多个请求同时操作相同数据的竞争条件的两种方法是使用一致散列和分布式锁。一致的散列将确保对一组数据进行操作的所有请求都发送到同一个工作人员,而分布式锁将确保一次只有一个工作人员可以对任何一组数据进行操作。

我的问题是这两种方法的优缺点是什么,哪些可能是有利的?

0 投票
1 回答
1246 浏览

hazelcast - Hazelcast:分布式锁密钥可以使用什么对象?

为了

方法,预期/可接受的关键对象是什么?例如,是否可以使用 String 来引用来自集群中不同节点的此锁?或者它必须是某种分布式对象?

完全准确地说,当从两个不同的集群成员调用时,调用 Hazelcast.getLock("myLock") 是否指的是同一个分布式锁?

0 投票
1 回答
1747 浏览

distributed - Zookeeper 生产者 消费者

我对生产者消费者食谱将如何与 Zookeeper 一起使用几乎没有疑问。

到目前为止,我看到的所有示例都将生产者和消费者作为单独的线程在同一个 java 进程中。但是分布式的全部意义在于拥有不同的生产者和消费者实例(多个)。

拥有不同的生产者和消费者实例意味着没有本地锁( syntonization )将有任何用处。

此外,由于多个进程正在监视同一个根队列节点,它们都将开始处理特定的传入条目。

我在这里做错了什么???

0 投票
1 回答
2078 浏览

locking - 在 Hazelcast 中,是否可以使用不关心执行锁定/解锁操作的本地线程的集群锁?

据我了解, Hazelcast 锁(例如http://www.hazelcast.com/docs/1.9.4/manual/multi_html/ch02s07.html)的行为方式与 Java 并发原语相同,但跨集群。这使得可以使用在本地进程中的线程之间以及在集群上进行同步。

但是,有什么方法可以让我选择退出这种行为?在我当前的项目中,我需要一种方法来协调整个集群中资源的唯一所有权,但想从我的应用程序中的多个点获取和释放这种所有权 - 我可以以某种方式做到这一点,而不涉及专用线程来管理这个锁在我的进程中?

0 投票
0 回答
661 浏览

distributed - 使用 ZooKeeper 进行分布式锁?

我需要一个分布式锁服务,它每秒可以支持约 1000 个锁(主要用于不同的锁名称)。不知道以前是否有人在生产中使用 ZooKeeper 实现分布式锁。如果是这样,您能否分享一些最佳实践和限制?例如,每秒可以支持多少个分布式锁,有什么经验教训或最佳实践?谢谢!

0 投票
4 回答
5371 浏览

java - 可以设置为过期Java的全局分布式锁

我有一个用例,我想拥有一个全局分布式锁。我们开始使用SELECT .. FOR UPDATE,但随着服务器数量的增加,很快就出现了问题。它也没有考虑检查锁然后死亡并且未能返回锁的进程。

我们需要能够对锁设置过期时间(即如果签出锁的进程在 2 小时内没有归还,则自动将锁归还池中)。我意识到这引入了我们忽略锁的问题,但我们相当肯定如果没有在 2 小时内完成,该过程已经死亡。此外,这项工作是幂等的,所以如果它不止一次完成,这没什么大不了的。

我浏览了许多分布式锁定系统,并遇到了非常有帮助的这些问题。所有解决方案都从 Java 扩展java.util.concurrency.locks.Lock而来,这实际上可能是我遇到的问题,因为该接口没有我需要的过期功能。我们有一个与mongo-java-distributed-lock类似的策略,我们使用 MongoDB 的findAndModify。我们正在考虑:

作为我们的分布式锁定机制(都恰好实现java.util.concurrency.locks.Lock)。

最大的问题是,因为java.util.concurrency.locks.Lock没有使锁过期的选项,所以这些并不适合所有目标。这个答案可能与 hazelcast 最接近,但它依赖于整个服务器的故障,而不仅仅是一个花费太长时间的线程。另一种选择可能是使用带有 hazelcast 的 Samaphore,如此处所述。我可以有一个收割线程,如果他们花费的时间太长,它可以取消其他人的锁。使用 Mongo 和 Redis,我可以利用它们使对象过期的能力,但这似乎不是这两个库的一部分,因为它们java.util.concurrency.locks.Lock最终只是实现了。

所以这只是一个冗长的询问方式,是否有分布式锁定机制可以在 N 秒后自动过期?java.util.concurrency.locks.Lock我是否应该考虑与这种情况完全不同的机制?

0 投票
4 回答
11071 浏览

python - Python 的分布式锁管理器

我有一堆具有多个实例的服务器访问对每秒请求有硬性限制的资源。

我需要一种机制来锁定所有正在运行的服务器和实例对该资源的访问。

我在github上找到了一个restful分布式锁管理器:https ://github.com/thefab/restful-distributed-lock-manager

不幸的是,似乎有一分钟。锁定时间为 1 秒,相对不可靠。在几次测试中,解锁一个 1 秒的锁需要 1 到 3 秒。

我可以为此目的使用 python 接口进行良好测试吗?

编辑:我需要在 1 秒内自动解锁的东西。我的代码中永远不会释放锁。