还有node.js怎么实现不重启服务更新配置文件?
望大神们指教!!!
用 node 自带的 fs.watch() 监视配置文件修改不就好了。 当然也可以传统方案: process.on(‘SIGHUP’, function () { console.log(‘re-read config.’); }); 需要的时候 kill -HUP pid 就好。嫌 signal 不方便,也可以用进度间通信、网络通信甚至pub/sub中间件来发信号触发。 如果配置文件是 js 直接 require 进来的,记得 delete require.cache[name]; 后重新 require() 一下就好,不过要是 module 里搞了定时器什么的就要特别小心。
@pinxue 貌似有内存泄露哦~~~~~~~
@ipengyo 前两天有人就这样引发了内存泄漏
一般做法是用 load balance 嘛,如果不打算用通用解决方法,那就用 node 实现一个 lb 呗
@thonatos 这种方法略微麻烦哦。。
nginx , two node instance , 启动的时候,通过脚本去控制,先更新一个服务器,更新完了,nginx把另外一台服务停了,切换到更新好了的服务器,用户只能请求到该服务器。 然后再更新另外一台服务器。
delete require.cache 也可以。 不过使用的时候要谨慎些。
前几天不就是在讨论这个么 https://cnodejs.org/topic/5aaba2dc19b2e3db18959e63
@ipengyo 实验性质的不谈,生产环境基本是这个套路吧
@ipengyo 成熟的通用方案不用,自己折腾这种 hack 方法,还存在极大的内存泄露风险,这样就不觉得麻烦? 而且你搞集群的话,本来就需要 LB 的了。
还有node.js怎么实现不重启服务更新配置文件?
如果只是更新配置文件,那就做个订阅更新变量即可,也不需要用到重启。
node,js 没有热部署。从理论上做不到。
@atian25 注意点就不会出现这种情况 不是说不能用 不能一砖头拍死这个方案
来自 CNodeMD
这里小小的咨询一下你们的负载是指Nginx那种,还是Docker集群那种?
可以用 envconsul
经常会动态更新的配置,一般都用第三方存储啊