11

在开始编写我的应用程序之前,我需要知道当单个 node.js 实例(express 和(socket.io 或 nowjs))已经不够用时该怎么办。

你现在可能会告诉我,我不应该关心规模,直到时机成熟,但我不想开发应用程序并遇到麻烦,因为你不能轻松地跨多个实例扩展 socket.io 或 nowjs。

我最近读到 socket.io 现在支持使用 Redis 进行扩展(我也没有经验)。Nowjs 建立在 socket.io 之上——它的工作方式是否相同?在nowjs.org 上,您可以读到“NowJS 的分布式版本”正在开发中,并且需要花钱。

4

3 回答 3

14

如果你需要扩展节点,人们通常首先会在多个节点实例前面放置一个负载均衡器。今天的标准是 nginx,虽然我想看看最近出现的节点平衡器“有弹性”。这是某人使用 nginx 反向代理管理多个节点实例的示例:

Node.js + Nginx - 现在怎么办?

你提到的第二件事是socket.io/nowjs。根据您使用这些框架的方式,您可能会遇到一种情况,即您希望在访问多个 node.js 实例的客户端之间共享上下文。如果是这种情况,我建议使用持久存储,如 redis,来弥合节点实例之间的差距。这是一个例子:

如何在socket.io中重用redis连接?

希望这是足够的信息和阅读资料,可以帮助您入门,如果您有任何问题,请告诉我。

快乐编码!

于 2011-11-01T20:03:20.250 回答
3

“Scaling Socket.IO”上的另一个有用链接https://github.com/dshaw/talks/tree/master/2011-10-jsclub(幻灯片和示例应用程序)

于 2011-11-04T09:06:50.527 回答
1

正如讨论使用 nginx 与 socket.io 进行反向代理的旁注一样,我至少理解它的方式,稳定版本的 nginx 1.0.x 不支持 http/1.1 连接的代理(为了使 socket.io 与 websockets 一起工作)。这里描述了一种解决方法:http: //www.letseehere.com/reverse-proxy-web-sockets使其工作,或使用类似的东西:https ://github.com/nodejitsu/node-http-相反, nodejitsu的人说这应该支持它。

于 2012-02-06T11:01:24.887 回答