NodeJS水平缩放

我一直是ruby / php web应用程序开发人员,我已经习惯了服务器实例水平扩展的想法来处理更多的请求。 水平缩放 – 表示位于负载均衡器后面的应用程序的单独实例,它们不共享任何内容,也不知道对方。

我的主要问题是,因为Node.js和它的重点evented-io允许运行一个node.js服务器来处理“数以千计的”同时请求的单个框 – 负载平衡/水平缩放用于扩展nodejs应用程序? 缩放一个节点应用限于垂直缩放(抛出更多的RAM /处理能力的问题)?

我的第二个问题与node.js水平缩放和websocket有关。 我已经看到了很多使用websocket的Node.js“聊天”教程。 (最喜欢的: http : //martinsikora.com/nodejs-and-websocket-simple-chat-tutorial )

由于websockets在浏览器和服务器之间有效地保持了开放的通信线路,所以PHP / Ruby世界中典型的水平缩放体系结构会导致类似链接中解释的聊天应用程序断开 – 因为新的websocket连接请求将会分配给不同的进程/服务器,并且没有一个中央资源跟踪所有连接的客户端?

       

网上收集的解决方案 "NodeJS水平缩放"

Node.js支持水平缩放,这与您通过内置cluster模块描述的方式非常相似。

关于在这个环境中使用websockets / socket.io的第二个问题,你必须使用像Redis这样的东西来存储你的应用程序的多个实例的共享状态,如下所述。

Node.js的群集function仅限于具有多个处理器的单个服务器。 主要是利用服务器中的处理器数量。 我想这个问题是否更多的关于这个场景,当我们想用一个Load Balancer Facade来多个服务器进行水平伸缩的时候。

如果node.js实例分布在多个服务器上(水平缩放),它将用于相同的目的,您需要正确编程以支持这种types的设置。