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



我听说node.js在执行IO任务(如查询数据库(时速度很快,并且由于javascript是单线程的并且使用事件循环,因此与在进行并发数据库查询时使用单独的线程相比,它使用的资源要少得多。但这是否意味着它可以进行的最大并发查询数仍然受到特定数据库可以处理的并发连接数的限制?如果是这样的话,node.js 与 vert.x 之类的东西相比有什么优势,后者可以使用多个事件循环,而不仅仅是一个。

由于节点.js 12(自节点.js 10 起作为"实验功能"可用(,您可以使用工作线程,就像您可能已经在 vert.x 中使用工作线程一样。您还具有具有节点或群集模式的子进程。

无论哪种方式(vert.x 或 node(,您都需要牢记黄金法则,即"不要阻塞事件循环或工作线程池",并根据您的容量考虑线程池的大小。

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

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

最新更新