【问题标题】:Node: Scale socket.io / nowjs - scale across different instances节点:扩展 socket.io / nowjs - 跨不同实例扩展
【发布时间】:2011-12-19 19:13:21
【问题描述】:

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

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

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

【问题讨论】:

    标签: node.js socket.io nowjs-sockets


    【解决方案1】:

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

    Node.js + Nginx - What now?

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

    How to reuse redis connection in socket.io?

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

    编码愉快!

    【讨论】:

    • 谢谢,不知道redis可以用nowjs吗?
    • 当然可以 - 它们是两种完全不同的技术,具有不同的用途。 Nowjs 将为您提供类似于 socket.io 的恒定服务器-客户端连接功能。这对于服务器到客户端的消息传递、客户端广播等非常有用。典型的例子是建立一个聊天室。 Redis 更多地用作后端数据存储 - 它可以执行存储键值对、发布订阅等操作。它作为单独的进程(甚至在单独的机器上)存在于节点之外,这使得它非常适合桥接多台服务器。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      正如关于使用 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-proxy,nodejitsu 的人说这应该支持它。

      【讨论】:

        猜你喜欢
        • 2017-02-03
        • 2015-08-29
        • 1970-01-01
        • 2011-08-15
        • 2014-04-16
        • 1970-01-01
        • 2019-01-02
        • 1970-01-01
        • 2012-04-20
        相关资源
        最近更新 更多