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

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

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



使用Nodejs 的http-proxy 模块做代理服务器的尝试_第1张图片



使用Nodejs 的http-proxy 模块做代理服务器的尝试_第2张图片

第二种办法:更改nginx的配置文件,比如,我的nginx代理了 82、81 这两个内部的服务程序,现在我想升级,这两个服务都需要重启,做法可以是这样的,再重启两个进程,端口分别是 83,,84。 同时更改nginx的配置文件,分别代理 83,84,但是更改完成之后需要平滑重启。这种方式比较上面的简单很多,也不用自己写程序实现。

总结:我还是回到了程序员的思维,一想到什么事情,首先得第一反应就是自己能不能开发一个程序来解决问题,没思考现有的程序、工具是否能够完成这个事情。虽然在思考如何实现的过程中,我也能学习很多的东西,比如http-proxy的使用,但是这不应该是我的第一个反应,而是其次的反应。

你可能感兴趣的:(使用Nodejs 的http-proxy 模块做代理服务器的尝试)