⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Cluster 进阶:HTTP 请求亲缘性与共享端口策略

利用 cluster 模块实现粘性会话 (sticky sessions) 与自定义负载均衡,超越默认的 round-robin。 · 难度:入门 · +10XP

请求亲缘性与端口共享

Node.js cluster 默认使用 round-robin 分发连接,但某些场景(如 WebSocket)需要同一客户端始终连接到同一 Worker。你可以通过监听 'request' 事件,解析 cookie 或 IP 哈希,然后手动调用 worker.send 并避免 socket 迁移。另外可以使用 SO_REUSEPORT 让多个 Worker 监听同一端口由内核分发。本教程实现一个简单的 IP 哈希粘性负载均衡器。

const cluster = require('cluster');
const http = require('http');
const workers = [];
if (cluster.isMaster) {
  for (let i = 0; i < 4; i++) workers.push(cluster.fork());
  // 主进程只转发请求
} else {
  http.createServer((req, res) => {
    const ip = req.connection.remoteAddress;
    const idx = ip.split('.').reduce((a, b) => a + parseInt(b), 0) % workers.length;
    // 实际上需要代理请求,这里仅输出
    res.end(ip);
  }).listen(8000);
}
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 135 篇
0 完成
🔥 0