这更像是一个设计问题而不是实现,但我有点想知道我是否可以设计这样的东西。我有一个交互式应用程序(类似于 python shell)。我想托管一个服务器(可以说使用 node.js http 服务器或 socket.io,因为我不确定哪个更好),它将为每个连接到它的客户端生成一个新的 child_process 并维护不同的上下文那个特定的客户。就 node.js 或 socket.io 而言,我是一个完整的菜鸟。我管理的最大值是在 socket.io 服务器上有一个子进程并将客户端连接到它。所以问题是,这行得通吗?如果没有,节点中是否有任何其他方法可以让它工作,或者我最好使用本地服务器。谢谢
问问题
1453 次
1 回答
2
Node.js - 是单进程 Web 平台。使用集群(child_process),您将使用单独的线程创建同一应用程序的独立执行。
每个线程都消耗内存,这通常是大多数传统系统的可扩展性不高的原因,因为每个客户端都需要线程。对于节点,从硬件资源的角度来看,它的效率将非常低。
Node 是基于事件的,只要您的应用程序逻辑不利用它,您就不必担心范围。
建议工作人员的数量与硬件上的 CPU 核心数相等。
总有一个主应用程序,它将创建工作人员。每个工作人员将创建 http + socket.io 侦听器,从技术上讲,这些侦听器将绑定到主套接字并从那里路由。http请求将被路由到不同的工作人员,而套接字将在连接时刻被路由,但随后该工作人员将处理此套接字,直到它断开连接。
于 2013-06-27T10:15:27.797 回答