我是Node.js的新手并表达。我目前正在通过构建自己的服务来学习它。 我最近读到了关于集群我理解集群的作用。我无法理解的是如何在生产应用程序中使用集群。
我能想到的一种方法是使用Master进程只是坐在前面,并以循环方式将传入的请求路由到下一个可用的子进程。我不确定这是否如何设计使用。我想知道如何在典型的Web应用程序中使用集群。
感谢。
答案 0 :(得分:2)
只要您希望跨多个node.js进程分散请求处理,node.js群集模块就会与node.js一起使用。当您希望提高处理更多请求/秒的能力并且服务器中有多个CPU核心时,最常使用此方法。默认情况下,node.js的单个实例不会完全利用多个核心,因为您在服务器中运行的核心Javascript是单线程的(使用一个核心)。 Node.js本身在内部对某些事情使用线程,但是仍然不太可能完全利用多核系统。为每个CPU核心设置集群node.js进程将使您能够更好地最大化可用的计算资源。
群集还为您提供了一些额外的容错功能。如果一个群集进程发生故障,您可以在禁用的群集重新启动时让其他实时群集为请求提供服务。
node.js的集群模块有几种不同的调度算法 - 你提到的循环法就是一个。您可以在此处详细了解:Cluster Round-Robin Load Balancing。
由于每个群集都是一个单独的进程,因此不同群集进程之间不存在自动共享数据。因此,在没有共享数据或共享数据已经存在于多个进程(例如数据库中)可以访问的位置的情况下,集群最容易实现。
请记住,单个node.js进程(如果编写为正确使用异步I / O而不是大量计算绑定)可以同时为多个请求本身提供服务。群集是指您希望扩展可伸缩性超出一个实例可以提供的范围。