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