我们来看看cluster内部的机制:
EventEmitter { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, Worker://有一个worker对象 { [Function: Worker] super_: { [Function: EventEmitter] EventEmitter: [Circular], usingDomains: false, defaultMaxListeners: 10, init: [Function], listenerCount: [Function] } }, isWorker: false,//isWorker函数 isMaster: true,//isMaster函数 workers: {},//workers属性 settings: {},//settings对象 schedulingPolicy: 1,//schedulingPolicy属性 SCHED_NONE: 1, SCHED_RR: 2, setupMaster: [Function],//setupMaster方法 fork: [Function],//fork函数 disconnect: [Function] //disconnect函数 }我们再来看看cluster产生的worker内部是什么机制:
Worker { domain: null, _events: { message: [Function] }, _eventsCount: 1, _maxListeners: undefined, suicide: undefined,//worker.suicide用于判断进程是自己退出还是意外退出的,然后master据此判断是否需要重新产生一个worker,调用kill/disconnect就是undefined state: 'none', id: 1,//进程唯一一个ID process://产生的worker有一个process属性,其值为一个ChildProcess实例 ChildProcess { domain: null, _events: { internalMessage: [Object], error: [Function], message: [Function], exit: [Object], disconnect: [Object] }, _eventsCount: 5, _maxListeners: undefined, _closesNeeded: 2, _closesGot: 0, connected: true, signalCode: null, exitCode: null, killed: false, spawnfile: 'C:\\Program Files\\nodejs\\node.exe', _handle: Process { owner: [Circular], onexit: [Function], pid: 3520 }, spawnargs: [ 'C:\\Program Files\\nodejs\\node.exe', 'C:\\Users\\Administrator\\Desktop\\N-blog\\fiboo\\cal' ], pid: 3520, stdin: null, stdout: null, stderr: null, stdio: [ null, null, null, null ], _channel: Pipe { _externalStream: {}, fd: -1, writeQueueSize: 0, buffering: false, onread: [Function], sockets: [Object] }, _handleQueue: null, send: [Function], _send: [Function], disconnect: [Function], _disconnect: [Function] } }