我们可以使用nodejs集群来运行多个进程...
虽然Java中的等效项是多线程...
我有一个运行在nodejs上的http侦听器(无集群),并且我正在使用Java将该Nodejs称为http(使用java.lang.Thread类)
如果我同时有300个请求,它将创建多个nodejs实例吗? nodejs会成为瓶颈吗?
答案 0 :(得分:2)
NodeJS是单线程的。这意味着无论您进行多少次http调用,都会将它们排队并进行处理。如果您在几秒钟内使Node JS过载并有数百个呼叫,那么您的响应时间就会更长。
有关事件循环的信息,请参见this guide
编辑:我没有看到群集部分。它允许您使用多个实例,因此可以在处理器中使用更多的内核,并同时处理更多的操作。我会说,最好的办法是对许多操作进行基准测试,看看是否足以在几秒钟内处理数百个呼叫
答案 1 :(得分:1)
即使NodeJS是单线程的,但由于其Event Loop体系结构,异步操作还是在单独的线程中运行。
如果我同时有300个请求,它将创建多个nodejs实例吗?
否,除非您正在运行节点集群,否则只有一个Node进程(和线程)将处理请求。
nodejs会成为瓶颈吗?
如果您的大部分工作是异步的,那么它将能够并行执行这些任务,并且不应该成为瓶颈。另外,您可以通过为CPU中的每个可用核心创建节点进程和/或通过在多个计算机实例中部署进程来扩展应用程序。
但是,重要的是要注意Java多线程应用程序和Node集群应用程序(或多进程)之间的区别。
因此,如果您的上下文中内存不足,并且您的实例具有多核处理器,那么NodeJS确实可能成为瓶颈。