我正在研究这两个概念之间的区别,我找不到以下场景的明确答案:
您在计算机上的不同端口上启动4个节点服务器。这些服务器都处理一个请求。
我认为这在理论上是多线程的。一个请求被委托给4个不同的节点服务器进行处理。
但是,因为节点是异步操作的,我还没有定义这4个服务器如何相互交互(节点1的作业然后转到节点2的作业?),我不认为这种情况没有某种主节点就可能。
这引出了我的下一个问题:
多线程也可以异步吗?对我而言,应该有一个原因,为什么这不是一个常见的编程范式,但我无法用语言表达一个确认它的例子
非常感谢!我通常会问编程问题,但我开始更多地研究系统设计
答案 0 :(得分:0)
即使NodeJS是单线程的,但由于其Event Loop体系结构,异步操作还是在单独的线程中运行。
我认为这在理论上将是多线程的。一个请求委托给4个不同的节点服务器进行处理
您可以通过为CPU中的每个可用核心创建节点进程和/或通过在多个计算机实例中部署进程来扩展Node应用程序。但是,请务必注意多线程应用程序和节点群集应用程序(或多进程)之间的区别。
多线程也可以异步吗?
是的,异步编程使您能够在完成之前停止和继续执行任务,另一方面,多线程系统允许任务并行运行。因此,您可以拥有一个在不同线程之间运行,停止和恢复任务的系统。