这是更多的设计问题,而不是实现,但我有点想知道我是否可以设计这样的东西。我有一个交互式应用程序(类似于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. Complexe child_process不能与Promise蓝鸟
- 4. Node.js readline与交互式child_process产卵
- 5. STDOUT抑制方法与节点child_process
- 6. nodejs + shell(expect)+ child_process
- 7. 检索child_process
- 8. child_process流反压
- 9. 调用child_process从
- 10. Process.nextTick或child_process?
- 11. keystoneJS as child_process
- 12. 错误处理ExpressJS中的中间件以产生多个child_process
- 13. 'child_process'.exec vs .spawn ENOENT
- 14. node.js child_process does not working
- 15. 如何确保两个或多个节点进程(child_process)中的同步逻辑?
- 16. Nodejs child_process spawn自定义stdio
- 17. 进程替换 - Node.js child_process
- 18. 'fork_ed'的守护进程'child_process'
- 19. 的NodeJS child_process只得到空
- 20. NPM安装child_process不工作
- 21. 检索node.js的结果child_process
- 22. node.js child_process spawn忽略等号
- 23. 异步函数vs child_process
- 24. Nodejs child_process执行shell命令
- 25. 运行主进程为child_process
- 26. 节点child_process没有在Mac上执行更多的一个命令,但与Windows正常工作
- 27. ssh与nodejs child_process,服务器上找不到命令
- 28. NodeJS与Child_Process - 如何逃脱我的命令
- 29. 如何在webpack中使用child_process
- 30. 在node.js中的child_process模块中
非常感谢Maksims ..所以如果子进程需要大量内存,除非我们有另一台服务器进行负载平衡,否则将难以扩展。 – ssarangi
负载平衡将通过所有工作人员没有任何问题发生。而且每个工作人员都能够在相对较好的硬件上处理数千个连接。如果你仍然需要,你可以创建CPUCores * 4工作者,例如4核心,16名工人。然后它们将被分散在Cores上,并且不会有大的内存开销。但不是每个连接的工作人员。 节点与经典的阻塞平台有很大的不同,并且Node可以非常有效地在一个线程上处理很多连接。 – moka