这是更多的设计问题,而不是实现,但我有点想知道我是否可以设计这样的东西。我有一个交互式应用程序(类似于python shell)。我想托管一个服务器(可以说使用node.js http服务器或socket.io,因为我不确定哪一个会更好),它会为每个连接到它的客户端产生一个新的child_process并为其维护一个不同的上下文那个特定的客户。对于node.js或socket.io,我是一个完整的noob。我管理的最大值是在socket.io服务器上有一个子进程,并将客户端连接到它。 所以问题是,这会工作吗?如果没有,节点上是否有其他方式让它起作用,还是使用本地服务器更好? 谢谢多个child_process与node.js/socket.io
0
A
回答
2
Node.js - 是单进程的web平台。使用集群(child_process),您将使用单独的线程创建相同应用程序的独立执行。
每个线程花费内存,这通常是为什么大多数传统系统没有太大的可扩展性,因为每个客户端都需要线程。对于节点来说,从硬件资源的角度来看,它将非常低效。
节点是基于事件的,你不需要担心太多的范围,只要你的应用程序逻辑没有利用它。
建议工人数量与硬件上的CPU内核数量相等。
总是有一个主应用程序,它会创建工人。每个工作人员将创建http + socket.io监听器,这些侦听器技术上将绑定到主套接字并从那里发送。 http请求将被路由到不同的工作人员,而套接字将在连接时被路由,但是那个工作人员将处理这个套接字直到它断开连接。
相关问题
- 1. 节点j上的多个child_process exec
- 2. 打开的文件太多使用child_process
- 3. Node.js readline与交互式child_process产卵
- 4. STDOUT抑制方法与节点child_process
- 5. nodejs + shell(expect)+ child_process
- 6. Process.nextTick或child_process?
- 7. keystoneJS as child_process
- 8. 检索child_process
- 9. 调用child_process从
- 10. 错误处理ExpressJS中的中间件以产生多个child_process
- 11. 'child_process'.exec vs .spawn ENOENT
- 12. node.js child_process does not working
- 13. Nodejs child_process执行shell命令
- 14. 检索node.js的结果child_process
- 15. NPM安装child_process不工作
- 16. Nodejs child_process spawn自定义stdio
- 17. 异步函数vs child_process
- 18. 的NodeJS child_process只得到空
- 19. node.js child_process spawn忽略等号
- 20. 进程替换 - Node.js child_process
- 21. 节点child_process没有在Mac上执行更多的一个命令,但与Windows正常工作
- 22. ssh与nodejs child_process,服务器上找不到命令
- 23. NodeJS与Child_Process - 如何逃脱我的命令
- 24. 如何从node.js中分离child_process?
- 25. 替代等待child_process到node.js的退出
- 26. child_process EXEC返回神秘错误
- 27. 使用jasmine监听节点child_process
- 28. 检查child_process是否在node.js中结束?
- 29. 如何在Node.js中逐行读取child_process?
- 30. 未知模块 “child_process” 的反应本地
非常感谢Maksims ..所以如果子进程需要大量内存,除非我们有另一台服务器进行负载平衡,否则将难以扩展。 – ssarangi
负载平衡将通过所有工作人员没有任何问题发生。而且每个工作人员都能够在相对较好的硬件上处理数千个连接。如果你仍然需要,你可以创建CPUCores * 4工作者,例如4核心,16名工人。然后它们将被分散在Cores上,并且不会有大的内存开销。但不是每个连接的工作人员。 节点与经典的阻塞平台有很大的不同,并且Node可以非常有效地在一个线程上处理很多连接。 – moka