我已经是一名Ruby/PHP Web应用程序开发者有一段时间了,我习惯于使用水平扩展服务器实例的思路来处理更多的请求。水平扩展是指将应用程序的单独实例放置在负载均衡器后面,这些实例之间没有共享和相互感知。
我的主要问题是,由于Node.js注重事件驱动的I/O,一个运行Node.js服务器的单个计算机可以处理“数千”个同时请求 - 是否使用负载均衡/水平扩展来扩展Node.js应用程序? Node应用程序的扩展是否仅限于垂直扩展(将更多的RAM /处理能力投入问题中)?
我的第二个问题与Node.js水平扩展和WebSockets有关。 我看到了很多Node.js“聊天”教程,都使用了WebSockets。 (推荐:http://martinsikora.com/nodejs-and-websocket-simple-chat-tutorial)
由于WebSockets在浏览器和服务器之间保持打开的通信线路,所以像上述链接中解释的聊天应用程序一样,典型的PHP / Ruby世界中的水平扩展架构是否会导致断开连接 - 因为新的WebSocket连接请求将分配给不同的进程/服务器,而没有一个中央资源来跟踪所有已连接的客户端?