egg-cluster应用文件热更新方案

一、Node.js热更新背景介绍

egg-cluster应用启动后,是以daemon的方式运行,加载了相关模块到内存,这种方式提高了应用的性能,但是对于每次特性的变更,不重启服务是不能加载的,故调研文件热更新的方案。

二、方案

1、egg-cluster master通过reload worker进程更新,每次推送完新代码后,可以通过http的方式通知egg-cluster master进程平滑更新worker逻辑,这里需要运行一个node服务,用于接收每次变更的http请求,接收到请求后做master进程的重启。

2、egg-development插件、supervisor插件,这些都是检查文件更新通知worker进程重启,如果应用工程较大,包含文件多,每次变更后检查文件更新耗时大,适合开发环境使用,不适合在线上环境使用。

3、pm2 reload master进程方式更新,目前egg-cluster的方式启动了多个进程,master进程管理worker进程,worker进程处理逻辑,master保证高可用,pm2目前通过reload egg-cluster的master进程的方式做更新,和egg-cluster的官方建议有些违背,但pm2的reload本身也是柔性重启,影响可控。

4、前端增加nginx做代理,反向代理到2台以上egg-cluster应用,更新应用时,可以选用pm2,egg-scripts,egg-cluster等方式自动重启(每次重启时,中间有个时间间隔,保证至少有一台机器上的应用可用)各个机器的应用,也可以提供管理界面让研发同事手动重启来灰度服务,这时不影响整体的服务,有较高的可用性,整体架构图如下。

综上,

开发环境和测试环境建议选用2方案,开发方便。

线上环境,1,3,4都能达到效果。从整体健壮性、可维护稳定性考虑,4方案最优,1和3在目前阶段也是ok的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值