nodejs-socket.io的cluster模块的集群利用

Node.js由于单线程和1GB内存限制,可通过cluster模块创建多进程利用多核。本文介绍如何利用cluster模块使socket.io利用多核,master进程负责分配请求给worker进程,相同IP请求由同一worker处理。当worker间需要频繁通信时,推荐使用Redis等共享存储。另外,pm2结合nginx也是实现socket集群的一种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

node是单线程,每个应用的最大内存为1GB,为了利用系统的多核,node提供了cluster模块来创建多个node应用,本文是让socket.io利用多核

实现思路:创建一个master进程(管理工作进程)和多个worker进程(工作进程),连接来了后,由master进程计算并分发请求到指定的worker进程,并且每次相同ip的请求到达后,都由相同的worker进程处理

 

下面剖析代码:

 

/**
 * create by dalgurak 2018/8/24
 */
/* global process:true global:true*/
import cluster from 'cluster';
import http from 'http';
import net from 'net';
import socketIo from 'socket.io';

if (cluster.isMaster) {
  let workers = []; // worker进程容器
  let numCPUs = 3; // 这里表示开启三个worker进程

  let spawn = function (i) {
    workers[i] = cluster.fork(); // 创建一个worker工作进程并放进容器
    workers[i].on('exit', (code, signal) => { // 监听worker进程断开事件
      console.log(`worker ${i} died, code:${code}, signal:${signal}`);
        spawn(i); // worker挂掉之后重启进程
    });
  }

  // fork workers 创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值