这篇文章给大家分享的是有关Nodejs-cluster模块怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Node.js默认单进程运行,对于32位系统最高可以使用512MB内存,对于64位最高可以使用1GB内存。对于多核CPU的计算机来说,这样做效率很低,因为只有一个核在运行,其他核都在闲置。cluster模块就是为了解决这个问题而提出的。cluster模块允许设立一个主进程和若干个worker进程,由主进程监控和协调worker进程的运行。worker之间采用进程间通信交换消息,cluster模块内置一个负载均衡器,采用Round-robin算法协调各个worker进程之间的负载。运行时,所有新建立的链接都由主进程完成,然后主进程再把TCP连接分配给指定的worker进程。上面代码先判断当前进程是否为主进程(cluster.isMaster),如果是的,就按照CPU的核数,新建若干个worker进程;如果不是,说明当前进程是worker进程,则在该进程启动一个服务器程序。上面这段代码有一个缺点,就是一旦work进程挂了,主进程无法知道。为了解决这个问题,可以在主进程部署online事件和exit事件的监听函数。上面代码中,主进程一旦监听到worker进程的exit事件,就会重启一个worker进程。worker进程一旦启动成功,可以正常运行了,就会发出online事件。worker对象worker对象是cluster.fork()的返回值,代表一个worker进程。它的属性和方法如下。(1)worker.idworker.id返回当前worker的独一无二的进程编号。这个编号也是cluster.workers中指向当前进程的索引值。(2)worker.process所有的worker进程都是用child_process.fork()生成的。child_process.fork()返回的对象,就被保存在worker.process之中。通过这个属性,可以获取worker所在的进程对象。(3)worker.send()该方法用于在主进程中,向子进程发送信息。上面代码的作用是,worker进程对主进程发出的每个消息,都做回声。在worker进程中,要向主进程发送消息,使用process.send(message);要监听主进程发出的消息,使用下面的代码。发出的消息可以字符串,也可以是JSON对象。下面是一个发送JSON对象的例子。cluster.workers对象该对象只有主进程才有,包含了所有worker进程。每个成员的键值就是一个worker进程对象,键名就是该worker进程的worker.id属性。上面代码用来遍历所有worker进程。当前socket的data事件,也可以用id属性识别worker进程。cluster模块的属性与方法isMaster,isWorkerisMaster属性返回一个布尔值,表示当前进程是否为主进程。这个属性由process.env.NODE_UNIQUE_ID决定,如果process.env.NODE_UNIQUE_ID为未定义,就表示该进程是主进程。isWorker属性返回一个布尔值,表示当前进程是否为work进程。它与isMaster属性的值正好相反。fork()fork方法用于新建一个worker进程,上下文都复制主进程。只有主进程才能调用这个方法。该方法返回一个worker对象。kill()kill方法用于终止worker进程。它可以接受一个参数,表示系统信号。如果当前是主进程,就会终止与worker.process的联络,然后将系统信号法发向worker进程。如果当前是worker进程,就会终止与主进程的通信,然后退出,返回0。在以前的版本中,该方法也叫做 worker.destroy() 。listening事件worker进程调用listening方法以后,“listening”事件就传向该进程的服务器,然后传向主进程。该事件的回调函数接受两个参数,一个是当前worker对象,另一个是地址对象,包含网址、端口、地免费云主机、域名址类型(IPv4、IPv6、Unix socket、UDP)等信息。这对于那些服务多个网址的Node应用程序非常有用。不中断地重启Node服务重启服务需要关闭后再启动,利用cluster模块,可以做到先启动一个worker进程,再把原有的所有work进程关闭。这样就能实现不中断地重启Node服务。首先,主进程向worker进程发出重启信号。worker进程监听message事件,一旦发现内容是shutdown,就退出。下面是一个关闭所有worker进程的函数。PM2模块PM2模块是cluster模块的一个包装层。它的作用是尽量将cluster模块抽象掉,让用户像使用单进程一样,部署多进程Node应用。用PM2从命令行启动这段代码上面代码的i参数告诉PM2,这段代码应该在cluster_mode启动,且新建worker进程的数量是4个。如果i参数的值是0,那么当前机器有几个CPU内核,PM2就会启动几个worker进程。如果一个worker进程由于某种原因挂掉了,会立刻重启该worker进程。每个worker进程都有一个id,可以用下面的命令查看单个worker进程的详情。关闭worker进程的时候,可以部署下面的代码,让worker进程监听shutdown消息。一旦收到这个消息,进行完毕收尾清理工作再关闭感谢各位的阅读!关于“Nodejs-cluster模块怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
本篇内容介绍了“如何使用CMS+PDF技术”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!这是一个常见的需求,那么就一定有一些现成的技术方案。一种是基于服务端的实…