Nginx支持热部署

Ngnix中的进程分为两类,一类是master进程,一类是worker进程。   

其中master进程使用来管理监控控制其下边的worker进程的主进程,这个进程由root发起。其中原因是http这个服务需要启用80端口,而只有root才有权限启用80端口。

而顾名思义,worker进程才是真正working的进程,才是真正处理请求的进程。这些进程全部都是master进程的子进程。这些进程是以普通用户的身份进行运行的,这样就可以极大增加程序的安全性。就算是万一有一个进程被劫持,那也不会有管理员权限。   

Worker进程中,原生的功能只有最基本的web服务。但是由于nginx是高度模块化的应用程序,所以,在每一个worker进程中,有着一个或者多个模块。但是需要注意的是,装载的模块可不是全部一次加载进去的,只有当这个进程真的需要这个模块的时候,才会被这个工作进程加载。在我看来,模块化的思想和面向对象的思想,是推动现代整个开发的重要思想。在以后的博客中,我应该会搜集一下资料和大家一起学习了解一下这两种模式。由于nginx这个高度模块化的机制,也成就了其高效轻量的特点。   

好了,我们现在进入正题,为什么nginx支持热部署,这和其并发模型有着密不可分的关系。说白了,就是因为master进程的关系。当通知ngnix重读配置文件的时候,master进程会进行语法错误的判断。如果存在语法错误的话,返回错误,不进行装载。   

如果配置文件没有语法错误,那么ngnix也不会将新的配置调整到所有worker中。而是,先不改变已经建立连接的worker,等待worker将所有请求结束之后,将原先在旧的配置下启动的worker杀死,然后使用新的配置创建新的worker。   

回顾,其实很简单的道理,大家如果平时注意的话,肯定会发现一个在软件开发或者在大一点范围上,都有一个常用的方法,就是加一层隔离区。在nginx中,使用这么一层,我们解决了安全问题,也解决了热部署的问题。还有很多的例子,现在暂时想不起来,等想起来的时候,我会在进行补充。大家也可以和我一起想一想。   

另外,还是想和大家说一下,其实热部署在nginx中还是一个强大的功能,就是在线升级。其原理就是首先我们先会替换master进程,同时我们替换的master是与老版本的worker兼容的。下一步,就是想大家已经想到的一样。保持还有连接的worker进程,待其老去退休,进行替换。

高度的模块化加上精巧的两层模型,让ngnix成为大家非常热爱的web service实现的方案!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值