当前位置: 首页 > 知识库问答 >
问题:

zookeeper策展人框架——进程间互斥每次需要50毫秒才能获得锁

巫马昆杰
2023-03-14

我使用Curator framework进程间互斥来创建分布式锁,以保留一些资源。然而,我可以看到zookeeper每次需要50-100毫秒才能获得锁,释放锁需要20-40毫秒。我的应用程序写得很重,必须在500毫秒内响应10-50个请求/秒,而且我不能只在获取和释放锁时给出70-140毫秒。1) 有什么办法可以改进吗?我的zookeeper服务器和客户端在同一台主机上。我已经试着按照管理指南中提到的设置zookeeper服务器。2) 我应该使用其他框架/技术吗。我想知道Redis SETNX是更好的解决方案还是使用Chubby。

共有1个答案

尚嘉庆
2023-03-14

Zookeeper的设计初衷是始终如一,其次是快速。一致性伴随着协调的代价。这总是会增加延迟。你能做的就是根据你的工作进行切分,并且只进行工人级别的锁定。这将避免Zookeeper锁的额外成本,同时在添加或删除工作人员时增加复杂性。

 类似资料:
  • 问题内容: 我需要在Java中实现某种进程间互斥。我正在考虑按照此[线程的](http://codingdict.com/questions/1808建议使用FileLock API 。我基本上将使用一个虚拟文件并将其锁定在每个进程中。 这是最好的方法吗?还是这样的东西内置在标准API中(我找不到)。 有关更多详细信息,请参见以下内容: 我编写了一个应用程序,该应用程序可以读取一些输入文件,并根据

  • 问题内容: 我想使用互斥锁,该互斥锁将用于同步访问内存共享黑白中两个不同进程中的某些变量。我该如何实现。执行该代码示例将不胜感激。 问题答案: 而是 使用初始化为的POSIX信号量 。 (请参见下文)用于未命名的信号灯或已命名的信号灯。 最初发布此答案很多年后,必须对其进行更新。 实际上应该使用互斥对象而不是信号量 。R和kuga的评论(如下逐字复制)解释了原因。特别是,我发现kuga提到互斥锁只

  • 我刚刚在独立模式下使用Apache Curator和ZooKeeper实现了一个分布式锁。我草签了策展人框架如下: 一切都很好,所以我尝试在集群模式下使用ZooKeeper。我启动了三个实例,并初始化了CuratorFramework,如下所示: 如您所见,我刚刚添加了两个新节点的地址。到目前为止还不错。 但是,当我不知道每个节点的地址和集群的大小时,我如何初始化客户端,因为我想动态扩展它? 我可

  • 问题内容: 我的程序有问题。我想在1秒内获得等于1000的实时毫秒数。这是我的代码: 还有什么其他方法可以获取毫秒而不是声明整数并递增呢? 问题答案: 您将希望摆脱它,而使用Swing计时器代替它,因为那是Timer的用途-在Swing GUI中重复进行调用, 而 不必求助于破坏线程的构造。 您将需要给您的计时器一个合理的延迟时间。0?常识告诉您不要使用此功能。12、15-更好。 为了使Swing

  • 问题内容: 我正在开发节拍器应用程序。用户可以在运行时选择bpm,我的应用程序将相应地播放“滴答”声。“滴答”是一个节拍器“拍”(mp3)。我尝试使用Handler和MediaPlayer来实现它,但是节拍器一点也不精确。因此,我考虑了更改整个方法:当用户选择新的bpm值时,我通过每N毫秒重复X次滴答声,然后循环遍历此运行时创建的声音来合成新声音。这是有效的替代方法吗?如何在Android中实现?

  • 我用基本的图形用户界面创建了一个小画板程序。我使用了画图组件方法。我想每毫秒更新正在绘制的图形。这样,用户可以在释放鼠标点击之前看到他们将要绘制的内容。例如,如果我正在绘制一个矩形,我想在绘制矩形时看到它。如果你不明白我到底在说什么,打开微软油漆,点击矩形工具。画一个矩形。注意它是如何持续更新的,而不是在释放鼠标后。我想一定有办法让它每毫秒更新我的图形。做这件事最好的方法是什么?抱歉,如果这是一个