🪡Node Cluster 集群
00 分钟
2023-5-28
2023-5-28
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
 
上一篇
TurboMac 项目
下一篇
Go-Framework by geektutu

评论
Loading...