Sha*_*han 6 concurrency synchronization locking node.js
是否可以锁定Node JS应用程序中的任何对象.
应用程序是否有多个实例可用,某些功能不应该并发运行.如果实例A函数完成,它应解锁该对象/密钥或某个标识符和应用程序的B实例应检查其解锁是否应该运行某些功能.
任何对象或密钥都可用于识别锁定和解锁功能.
如何在具有多个实例的NodeJS应用程序中执行此操作.
小智 6
如上所述,Redis可能是您的答案,但这实际上取决于您可用的资源。还有其他一些不太复杂但肯定不那么强大的可能性也可以解决问题。
因此,存在用于内存锁定的Redis和节点缓存。我应该提到有很多NPM软件包可以进行缓存。取决于您的需求以及缓存的复杂程度。
但是,可以用更少的优雅方式来做自己想要的事情,尽管不够优雅不一定意味着更糟。
内存系统显然更快。文件系统需要与存储系统一样多的代码计划。
Node.js有其自己的process.env。最众所周知的是,只需编写process.env.foofoo将被声明为全局系统变量的位置,即可使系统全局变量可供所有人使用。诸如.dotenv之类的程序包使您可以通过.env文本文件将其添加到系统变量中。因此,如果将文件sam = mongoDB放入,则在编写代码的地方process.env.sam将其解释为mongoDB。可以在此处设置大量系统范围的变量。
您可能会问,这样做有什么好处?这些是系统范围的变量,可以在运行中进行更改。因此,如果您需要锁定变量然后进行更改,这是一种简单的方法。当心这里的陷阱。一旦系统崩溃或所有进程停止并再次启动,您的环境变量将恢复为.env文件中的默认值。
此外,除非您运行的系统在AWS或Azure等上相对安全,否则我对向所有人开放.env文件不会感到安全。也有一种解决方法。您可以使用哈希来加密所有变量,并将哈希放入文件中。调用它时,请在实际请求使用full变量之前进行解密。
希望其中的一些帮助。
| 归档时间: | 
 | 
| 查看次数: | 1561 次 | 
| 最近记录: |