一尘不染

在node.js中实现互斥

node.js

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

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


阅读 384

收藏
2020-07-07

共1个答案

一尘不染

有很多方法可以完成此任务。有两种简单的方法是通过Redis或Zookeeper服务器。Node.js两者都有很好的模块。

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

我最近在节点速率限制器模块中实现了Redis方法,这是我们生产应用程序中的关键部分,在该应用程序中,我们需要确保没有两个进程在Redis中增加相同的值。有关详细信息,请参阅“
手表”和“
多功能 ”。该代码实际上非常易于理解和阅读。

有关Zookeeper的示例,请参阅“
锁定配方”。可以使用Zookeeper临时节点为分布式锁实现更为复杂的逻辑。Redis解决方案只是一个特例,如果您仅需使用Redis解决方案,它就可以很好地工作。

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

2020-07-07