node.js 可以进行多少个并发数据库查询?

How many concurrent database queries can node.js make?

我听说 node.js 在执行查询数据库等 IO 任务时速度很快,而且因为 javascript 是单线程并使用事件循环,与每当进行并发数据库查询时使用单独的线程。但这是否意味着它可以进行的最大并发查询数仍然受到特定数据库可以处理的并发连接数的限制?如果是这样的话,node.js 相对于 vert.x 的优点是什么,它可以使用多个事件循环而不是一个。

自 node.js 12 起(自 node.js 10 起可用 "experimental feature")您可以使用 worker threads like you're maybe already using worker verticle with vert.x. You also have the child process with node or cluster mode.

无论哪种方式(vert.x 或节点),您都需要牢记黄金法则 "do not block the eventloop or worker pool" 并根据您的容量考虑线程池的大小。

我认为让你的进程保持单线程处理并将其扩展为新的和完全隔离的实例通常更好,这些实例可以托管在基础架构的多个位置甚至同一个地方(使用 docker/kubernetes/whatever 甚至例如 systemd)。并根据请求的增加、您的基础架构的扩展能力以及您的数据库可以处理的连接池的大小动态执行扩展。

当您将应用程序设计为反应式或事件驱动式应用程序(使用节点或 vert.x 的正确方法)和无状态应用程序时,以这种方式处理扩展会更容易。