type
status
date
slug
summary
tags
category
icon
password
Edited
May 28, 2023 08:57 AM
Created
May 28, 2023 08:41 AM
Demo
- 使用 net 创建 socket 服务器作为 master
- 使用 cluster 创建 work 作为 worker
- 通过 队列 记录 work,方便 master 进行 任务分配
- 通过 socket 服务器 进行流量 管控,并进行流量分发
- 如果不手动创建 master 服务进行管控,则会由 cluster 自行进行 任务分发(默认使用cluster自带的 Round Robin算法调度)
- 实现了 Round Robin 调度方式
- 实现了 randomKillSignal 模拟生成 自杀信号
- work 接受到 信号后,在完成socket通讯后,会自调用 disconnect 进行自杀
- 主服务 监听 work 的 disconnect 行为,并重新创建 work
使用
Server —— 管理&调度
对象声明
- worker池用于记录所有可用worker
- workersStatus表示当前worker是否可用或正在执行
- delayTasks为无worker可用时的缓冲队列
cluster 创建
Round-Robin Schedule
- socket为server接受到的套接字
- signal用于后面模拟进程自杀
Deal delay tasks
模拟进程自杀
服务器
master与子进程的通信
Worker —— 集群
Client —— 模拟通信
测试
代码
main.mjs
worker.mjs
client.js
- 作者:JinSo
- 链接:https://jinso365.top/article/node-cluster
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。