Javascript Node.js全局变量有时=1,有时=0,为什么?

Javascript Node.js全局变量有时=1,有时=0,为什么?,javascript,node.js,google-app-engine,google-cloud-platform,global,Javascript,Node.js,Google App Engine,Google Cloud Platform,Global,问题: 我的web应用程序正在Google云应用程序引擎上运行。该应用引擎网站当前有2个VM实例正在运行 奇怪的是,当一个特定事件在一分钟内被调用大约10次时,似乎有两个特定全局变量的不同实例 我这样说是因为有时我的全局数组的长度是0,有时它是1,但实际上它并没有改变 这可能是什么原因造成的 代码: app.js global.accountsArray = []; file1.js global.accountsArray.push(account); file2.js eventEmit

问题:

我的web应用程序正在Google云应用程序引擎上运行。该应用引擎网站当前有2个VM实例正在运行

奇怪的是,当一个特定事件在一分钟内被调用大约10次时,似乎有两个特定全局变量的不同实例

我这样说是因为有时我的全局数组的长度是0,有时它是1,但实际上它并没有改变

这可能是什么原因造成的

代码:

app.js

global.accountsArray = [];
file1.js

global.accountsArray.push(account);
file2.js

eventEmitter.on('event', function (body) {
    console.log("EMITTER");
    //sometimes prints out 1, sometimes prints out 0
    console.log("Array length: "+global.accountsArray.length);
    //
    console.log("DESTINATION: "+body.block.destination);
    //sometimes empty, sometimes not
    console.log("ARRAY :"+global.accountsArray);
    //
});
这可能是什么原因造成的

变量accountsArray正在内存中。对进程或vm的任何重新启动都将重置变量。考虑使用一个存储库来进行弹性持久化,比如ReISIS或MyCase. 编辑:


应该提到的是,另一个原因可能是因为变量存在于每个VM的内存中,没有公共存储,因此会产生奇怪的结果。同样,通过使用两个虚拟机都可以使用的公共会话存储解决了这个问题。

据我所知,我从未使用过memcache或redis。这些是数据库还是中间解决方案?键值数据库高斯,我只需要将var存储在我的数据库中即可:/一定有更好的解决方案。