gpt4 book ai didi

node.js - 使用 http-proxy 与 node.js 进行负载平衡

转载 作者:IT老高 更新时间:2023-10-28 23:26:11 30 4
gpt4 key购买 nike

我正在尝试使用 node.js 和 http-proxy 编写负载平衡。我想要一个在 2 个服务器之间共享传入请求处理的 loadBalancer。

var http = require('http'),
httpProxy = require('http-proxy');

var servers = [{host :'127.0.0.1', port :3000}, {host : 'remote_adr',port :3000}];

httpProxy.createServer(function (req, res, proxy) {
var target = servers.shift();
proxy.proxyRequest(req, res, target);
servers.push(target);
}).listen(8000);

我认为这样做会使 loadBalancer 交替向 serv1 和 serv2 发送请求。

但是,当我尝试它时,它似乎以没有特定顺序请求 2 个服务器。另外,大部分请求都发送到我的localhost Node 服务器(127.0.0.1:3000)

有人能够解释这种行为吗?

最佳答案

这应该按照您的要求进行循环,但这是一个非常幼稚的循环。您可能会看到,您的 favicon.ico 请求在单个服务器上的请求份额高于正常份额。例如。

Server 1: Actual Requests
Server 2: favicon.ico
Server 1: Another Request
Server 2: favicon.ico
Server 1: Final Request
Server 2: favicon.ico

因此,根据您的日志记录方式,看起来服务器 1 正在获取所有请求,而从技术上讲,每台服务器都获取相同数量的请求。另请记住,如果您从 Node 提供 Assets ,您的 Assets 也将包含在循环赛中。因此每个图像或文件请求也将被移交给不同的 Node 实例。

关于node.js - 使用 http-proxy 与 node.js 进行负载平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13609196/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com