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