node.js - 在node.js中实现互斥

标签 node.js mutex

我想在我的node.js应用程序中实现一个互斥锁,这是wiki http://en.wikipedia.org/wiki/Mutual_exclusion中的互斥锁.

这个主题有现成的模块吗?如果没有,有什么想法可以帮助我实现它吗?

最佳答案

有很多方法可以实现这一点。两种简单的方法是通过 Redis 或 Zookeeper 服务器。 Node.js 对于这两者都有非常好的模块。

在Redis中你可以使用WATCH + MULTI命令来实现锁定。在 Zookeeper 中,您可以创建临时 Node 。在这两种方式中,没有两个进程会同时执行关键操作。

我最近在 node-ratelimiter 中实现了 Redis 方法模块是我们生产应用程序的关键部分,我们需要保证没有两个进程在 Redis 中增加相同的值。引用WATCHMULTI了解详情。事实上,代码非常容易理解和阅读。

Zookeeper 示例请引用Locks Recipe 。使用 Zookeeper 临时 Node 可以为分布式锁实现更复杂的逻辑。 Redis 解决方案只是一个特例,如果您不需要更多功能,它就可以很好地工作。

使用这两种方法,您可以为任何应用程序和任何逻辑实现互斥体。

关于node.js - 在node.js中实现互斥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25762055/

相关文章:

node.js - Sequelize 和 Apollo 服务器 : map findAll "sequelize.literal" field to an Apollo schema field

c++ - 单线程可以双重锁定互斥量吗?

c - 如何修复我的 pthread 代码遇到的此错误?

javascript - 合并具有相同 id 的数组

javascript - 如何正确调用嵌套在 waterfall 函数中的异步 forEachOf 函数

javascript - node.js mysql LIKE语句用法

c - p_threads : Condition Variable Locking

c++:如何初始化已使用 malloc 分配的 std::mutex?

c++ - 如果我为多个编写器使用额外的互斥锁,我可以在 SQLite3 中使用 WAL 模式吗?

Node.js 对 http 请求进行计时