使用Nodejs 的http-proxy 模块做代理服务器的尝试

我今天突然想到一个问题,如果使用nginx 作为nodejs 的代理服务器,那么如果nodejs的应用需要进行升级的话,如何实现热更新。

  第一种办法:使用nodejs搭建一个代理服务器,通过对请求的监听来判断当前的nodejs服务实例的工作情况(有多少未处理完的请求)来过滤请求,比如我有三个服务实例,1,2,3,我现在想进行升级,需要对服务进行重启,但是三个实例不能同时重启,这个时候,就需要这个代理服务器进行一个判定,通过这个代理服务器,可以看到每个实例当前的在处理的请求数量,同时也可以指定哪个进程进行断后,哪些 进程进行挂断,当然挂断的步骤是:先由代理服务器切断请求,不在给该进程发送新的请求,同时,代理服务器随时监听这些被“判死刑”的进程的请求数量的数量,如果没有请求的挂起,那就重启。当这些进程重启完成以后,这个断后的进程按照以上的步骤进行重启。 代理服务器的核心代码如下。

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

//
// Create a proxy server with latency
//
var proxy = httpProxy.createProxyServer();

var reqNum  = 0; // 缓存目前请求的数量



proxy.on("proxyRes",()=>{
    reqNum --;
    console.log("完成一个请求,当前的剩余的请求数量是 "+reqNum);
})
proxy.on("proxy
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值