Node.js集中了多个cpu的竞争条件

时间:2013-04-29 11:11:59

标签: node.js redis race-condition

我已经构建了一个node.js应用程序,它接收传入的请求并将这些请求转发到多个节点(虚拟机)。

确定将每个请求发送到何处的逻辑非常简单,但是当它与多个CPU(节点进程)一起使用时,我有时会遇到竞争状态。

基本上,node.js应用程序接收具有特定要求的“START”命令(例如:发送到Linux节点)。我在一个数组中保留一个节点列表,遍历数组并选择一个符合要求的节点。然后我将该节点标记为不可用,以便其他START请求在第一个节点使用时不会选择相同的节点。

列表保存在Redis中,但是当2个START请求进入相同的要求时,可能存在竞争条件,我的应用程序为两个请求分配了相同的节点,这不是我想要的。

我尝试使用https://github.com/errorception/redis-lock,但效果不佳,仍会偶尔出现问题。

如果有人就如何解决这个问题提出建议,我们将不胜感激!

0 个答案:

没有答案