我想在我的node.js应用程序中实现一个互斥锁,这是wiki http://en.wikipedia.org/wiki/Mutual_exclusion中的互斥锁.
这个主题有现成的模块吗?如果没有,有什么想法可以帮助我实现它吗?
最佳答案
有很多方法可以实现这一点。两种简单的方法是通过 Redis 或 Zookeeper 服务器。 Node.js 对于这两者都有非常好的模块。
在Redis中你可以使用WATCH + MULTI命令来实现锁定。在 Zookeeper 中,您可以创建临时 Node 。在这两种方式中,没有两个进程会同时执行关键操作。
我最近在 node-ratelimiter 中实现了 Redis 方法模块是我们生产应用程序的关键部分,我们需要保证没有两个进程在 Redis 中增加相同的值。引用WATCH和 MULTI了解详情。事实上,代码非常容易理解和阅读。
Zookeeper 示例请引用Locks Recipe 。使用 Zookeeper 临时 Node 可以为分布式锁实现更复杂的逻辑。 Redis 解决方案只是一个特例,如果您不需要更多功能,它就可以很好地工作。
使用这两种方法,您可以为任何应用程序和任何逻辑实现互斥体。
关于node.js - 在node.js中实现互斥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25762055/