gpt4 book ai didi

java - Apache Curator DistributedQueue 的 lockPath 是如何工作的?

转载 作者:行者123 更新时间:2023-12-02 02:04:33 26 4
gpt4 key购买 nike

我有很多独立的工作,需要流程来执行。这些工作可以按任何顺序执行,并且它们持续的时间足够长,以至于在执行工作时流程有时会失败。

我需要协调这些工作的分配,而 Curator 的 DistributedQueue 看起来几乎就是我想要的。不过,我不需要它提供的排序,所以我很好奇假设我拒绝拥有单个消费者(即每个进程仅从队列中消费),我要支付多少级别的开销。

我主要关心的是队列构建器上的 lockPath() 函数实际上是如何工作的。我需要它提供的功能,因为进程可能会失败,而且我不需要放弃它们应该做的工作。但我不想要的是一次只有一个进程能够完成任何工作。如果我使用lockPath(),当进程正在使用消息时,队列是否会阻塞其他进程?

另外,如果队列看起来是一种不合理的方法,是否有其他工具可以实现我想要的,或者我必须自己推出?我想留在 Curator/ZK 环境中,但对其中的替代方案持开放态度。

最佳答案

(注:我是 Apache Curator 的主要作者)

文档需要改进。该锁用于使队列条目可重试。即,在消费者完成之前,队列中的条目不会被删除。该锁确保只有 1 个进程正在对条目进行操作。如果您不关心失败时删除队列条目,则不需要使用锁。不管有没有锁,您运行的每个使用者都会处理队列条目。因此,如果您希望对队列进行并发处理,您可以运行多个使用者(在同一个 JVM 中或在单独的 JVM 中 - 这并不重要)。

这是我编写的一个工作流引擎,它使用 Curator 队列来执行分布式工作。请随意使用它,因为它是开源的:http://nirmataoss.github.io/workflow/

关于java - Apache Curator DistributedQueue 的 lockPath 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51008263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com