我正准备构建一个聊天应用程序,我很想使用 node.js(这将是我第一次使用它)。
我将 Amazon ELB(无粘性)与多个 Linux EC2 实例 (apache) 和一个 mysql 数据库一起使用。
我有 3 个问题:
AWS ELB - 通过 AWS 负载均衡器运行 node.js 是否有任何问题 - 我读过一些关于其他人遇到问题的信息,但没有真正说明它是否可以成功完成。
Node.js 能否有效地监听数据库表的更新,然后响应这些更新?这现实吗?我读过它的可能性,但它听起来不像是一个很好用的功能。
我理解 node.js 会监听事件(就像 jquery)。我担心如果我有几个单独的网络服务器都在运行 node.js,它们都会响应相同的事件。例如:有些人在数据库中写了一些聊天内容,他们所有的网络服务器都试图将其发送给客户端。 (这将是长轮询的问题,因为一个 Web 服务器会收到请求和回复)。这是一个问题吗?
谢谢
最佳答案
回答 1 + 3(不能说出 2):
我们使用 aws elb 已经一年多了,从来没有遇到过任何问题。我们的应用程序需要接近 100% 的正常运行时间
node.js 事件处理用于 SAME 进程中的事件(除非您使用类似 axon 的消息传递解决方案)。因此,即使您运行多个网络服务器,这也不应该成为问题。启动您的服务器监听某个端口,负载均衡器会将请求分发到绑定(bind)到 elb 的任何服务器。
请求/响应周期本身是原子的,这意味着获取请求的同一台服务器在完成此请求的工作后必须发送响应(将聊天记录写入数据库)。你的代码基本上看起来像这样:
http.createServer(function (request, response) {
// do something with the request, save to db or whatever
db.save ...
// and now send the response
response.write(200);
response.end();
});
关于mysql - Node.js 与 AWS 负载平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17138114/