node.js - 多个 AWS 实例和 Node 事件

标签 node.js amazon-web-services amazon-elastic-beanstalk

我在 Node 中有一个实现,其中调用 API 时会进行一些处理,并在返回响应之前等待来自另一个函数的事件。当在本地运行以及在 AWS 中的单个实例中运行时,效果很好,但是当涉及多个实例时,会出现一些问题,我假设是因为 API 是从一个实例调用的,而发射器是在另一个实例中发出的。有没有办法让所有实例中的监听器和发射器保持相同?

更新:

经过一些研究,我发现使用带有一些路由逻辑的应用程序负载均衡器可以帮助解决这个问题。我将下面的答案标记为正确的,因为虽然它没有帮助我进行 AWS 自动扩展,但它确实帮助我找到了问题的替代解决方案。

最佳答案

AFAIU,您认为从一个进程发出的事件正在另一个进程中处理,但据我所知,情况绝不会如此,因为每个进程都有自己的内存,而且事件仅与该进程关联。

我添加了一个示例代码来演示我的意思。也许如果您发布您所指的代码,我们可以检查出了什么问题。

const cluster = require("cluster");
const EventEmitter = require("events");

if (cluster.isMaster) {
  cluster.fork();
  const myEE = new EventEmitter();
  myEE.on("foo", arg =>
    console.log("emitted from ", arg, "received in master")
  );
  setTimeout(() => {
    myEE.emit("foo", "master");
  }, 1000);
} else {
  const myEE = new EventEmitter();
  myEE.on("foo", arg => console.log("emitted from", arg, "received in worker"));
  setTimeout(() => {
    myEE.emit("foo", "client");
  }, 2000);
}

关于node.js - 多个 AWS 实例和 Node 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55293114/

相关文章:

javascript - 全栈应用的 server.js 中符号🌎 的含义

node.js - 无法加载资源 : the server responded with a status of 405 (Not Allowed) needs help on nginx. conf

javascript - 如何使用 pid 杀死 Node.js 子进程?

javascript - Discord.js 如何切片链接

php - 部署到 Elastic Beanstalk 时无法识别环境变量

git - 无法为本地存储库头运行 aws.push

ruby-on-rails - AWS DocumentDB 与 Ruby on Rails 和 Angular JS 的兼容性

amazon-web-services - 如何绘制AWS服务具体图?

python - 删除 aws beanstalk 上的 uuid python 包

database - Elastic Beanstalk : how to roll back the RDS schema to a known good state?