Node.js v18.8.0 文档


目录

cluster 集群#

中英对照

Node.js 进程集群可用于运行多个 Node.js 实例,这些实例可以在其应用程序线程之间分配工作负载。 当不需要进程隔离时,请改用 worker_threads 模块,它允许在单个 Node.js 实例中运行多个应用程序线程。



工作原理#

中英对照

工作进程使用 child_process.fork() 方法衍生,因此它们可以通过 IPC 与父进程通信并且来回传递服务器句柄。

    Worker#

    中英对照

      Worker 对象包含了工作进程的所有公共的信息和方法。 在主进程中,可以使用 cluster.workers 来获取它。 在工作进程中,可以使用 cluster.worker 来获取它。

      'disconnect' 事件#

      中英对照

      类似于 cluster.on('disconnect') 事件,但特定于此工作进程。

      
      

      'error' 事件#

      中英对照

      此事件与 child_process.fork() 提供的相同。

      'exit' 事件#

      中英对照

        类似于 cluster.on('exit') 事件,但特定于此工作进程。

        
        

        'listening' 事件#

        中英对照

          类似于 cluster.on('listening') 事件,但特定于此工作进程。

          
          

          'message' 事件#

          中英对照

            类似于 cluster'message' 事件,但特定于此工作线程。

            
            

            'online' 事件#

            中英对照

            类似于 cluster.on('online') 事件,但特定于此工作进程。

            
            

            worker.disconnect()#

            中英对照

              在工作进程中,此函数将关闭所有服务器,等待那些服务器上的 'close' 事件,然后断开 IPC 通道。

              
              

              worker.exitedAfterDisconnect#

              中英对照

                如果工作进程因 .disconnect() 而退出,则此属性为 true。 如果工作进程以任何其他方式退出,则为 false。 如果工作进程没有退出,则为 undefined

                
                

                worker.id#

                中英对照

                  每个新的工作进程都被赋予了自己唯一的 id,此 id 存储在 id.

                  worker.isConnected()#

                  中英对照

                  如果工作进程通过其 IPC 通道连接到其主进程,则此函数返回 true,否则返回 false。 工作进程在创建后连接到其主进程。 触发 'disconnect' 事件后断开连接。

                  worker.isDead()#

                  中英对照

                  如果工作进程已终止(由于退出或收到信号),则此函数返回 true。 否则,它返回 false

                  
                  

                  worker.kill([signal])#

                  中英对照

                    此函数会杀死工作进程。 在主工作进程中,它通过断开 worker.process 来完成此操作,一旦断开连接,就使用 signal 终止。 在工作进程中,它通过使用 signal 终止进程来实现。

                    worker.process#

                    中英对照

                      所有工作进程都是使用 child_process.fork() 创建,此函数返回的对象存储为 .process。 在工作进程中,存储了全局的 process

                      worker.send(message[, sendHandle[, options]][, callback])#

                      中英对照

                        向工作进程或主进程发送消息,可选择使用句柄。

                        
                        

                        'disconnect' 事件#

                        中英对照

                          在工作进程 IPC 通道断开连接后触发。 当工作进程正常退出、被杀死、或手动断开连接(例如使用 worker.disconnect())时,可能会发生这种情况。

                          
                          

                          'exit' 事件#

                          中英对照

                            当任何工作进程死亡时,则集群模块将触发 'exit' 事件。

                            
                            

                            'fork' 事件#

                            中英对照

                              当新的工作进程被衍生时,则集群模块将触发 'fork' 事件。 这可用于记录工作进程的活动,并创建自定义的超时。

                              
                              

                              'listening' 事件#

                              中英对照

                                从工作进程调用 listen() 后,当服务器上触发 'listening' 事件时,则主进程中的 cluster 也将触发 'listening' 事件。

                                
                                

                                  'message' 事件#

                                  中英对照

                                    当集群主进程接收到来自任何工作进程的消息时触发。

                                    'online' 事件#

                                    中英对照

                                      衍生新的工作进程之后,工作进程应该使用在线消息进行响应。 当主进程接收到在线消息时,它将触发此事件。 'fork''online' 的区别在于主进程衍生工作进程时触发衍生,而 'online' 在工作进程运行时触发。

                                      
                                      

                                      'setup' 事件#

                                      中英对照

                                        每次调用 .setupPrimary() 时触发。

                                        cluster.disconnect([callback])#

                                        中英对照

                                          cluster.workers 中的每个工作进程调用 .disconnect()

                                          cluster.fork([env])#

                                          中英对照

                                            衍生新的工作进程。

                                            cluster.isMaster#

                                            中英对照

                                            弃用的 cluster.isPrimary 别名。

                                            cluster.isPrimary#

                                            中英对照

                                              如果进程是主进程,则为真。 这是由 process.env.NODE_UNIQUE_ID 决定的。 如果 process.env.NODE_UNIQUE_ID 未定义,则 isPrimarytrue

                                              cluster.isWorker#

                                              中英对照

                                                如果进程不是主进程,则为真(与 cluster.isPrimary 相反)。

                                                cluster.schedulingPolicy#

                                                中英对照

                                                调度策略,cluster.SCHED_RR 用于循环或 cluster.SCHED_NONE 将其留给操作系统。 这是全局的设置,一旦衍生第一个工作进程或调用 .setupPrimary()(以先到者为准),就会有效地冻结。

                                                cluster.settings#

                                                中英对照

                                                  调用 .setupPrimary()(或 .fork())之后,此设置对象将包含设置,包括默认值。

                                                  cluster.setupMaster([settings])#

                                                  中英对照

                                                  弃用的 .setupPrimary() 别名。

                                                  cluster.setupPrimary([settings])#

                                                  中英对照

                                                    setupPrimary 用于更改默认的 'fork' 行为。 调用后,设置将出现在 cluster.settings 中。

                                                    
                                                    

                                                    cluster.worker#

                                                    中英对照

                                                      对当前工作进程对象的引用。 在主进程中不可用。

                                                      
                                                      

                                                      cluster.workers#

                                                      中英对照

                                                        存储活动工作进程对象的哈希,以 id 字段为键。 这样可以很容易地遍历所有工作进程。 它仅在主进程中可用。

                                                        返回顶部