我正在处理并想知道微服务后端中的上下文问题(和可能性),并且我试图更好地理解NodeJS分叉集群实例之间的确切共享(例如使用PM2)。
情况 - 假设我有一个名为NPM的软件包导出其自身的一个实例,如:
class Content {
constructor(){
if(!Content.Registry) Content.Registry = {};
}
registerStatic(key,obj) {
Content.Registry[key] = obj;
}
getStatic(key){
return Content.Registry[key];
}
}
module.exports = new Content();
我的Node应用程序在几个点包含此模块,并使用静态上下文方法注册多个对象的实例。 现在,我知道Node需要注册表会在需要包时缓存实例(或者可能采用更适合节点文档的措辞 - 它可能会“带来相同的缓存实例”。
提出的问题:
我可以依靠缓存的包吗?我要求它作为NPM模块而不是文件(require('package-name'))
即使从require注册表返回的实例不一样 - 静态上下文在同一个PID中是否相同? (Content.Registry)
感谢您的帮助!
编辑:有没有办法测试这个?我可以以某种方式在NPM包中访问一些节点/ javascript功能,这些功能会给我一些包的实例的UUID吗?记忆地址?