nginx源码阅读(一).综述

前言

nginx作为一款开源的轻量级高性能web服务器,是非常值得立志从事服务端开发方向的人学习的。现今nginx的最新版本是nginx-1.13.6,代码量也日渐庞大,但是由于其核心思想并没改变,为了降低阅读难度,我选择的是nginx-1.0.15版本,并且由于时间和水平有限,重点关注的是nginx的启动以及进程模型、事件模块中的epoll模块、负载均衡以及整体的框架等方面。
这里先推荐两本有关nginx的书籍:《深入理解Nginx》、《深入剖析Nginx》,后者已经绝版了,可以去网上找pdf阅读。

不过建议主要还是以代码为主,书籍为辅。

下面简单的介绍一下后面会进行分析的各块。

nginx的启动

nginx整个启动流程围绕着ngx_cycle_t结构体进行操作。要知道nginx是高度模块化以及非常依赖配置文件,大部分功能都需要配置文件的配置才能进行。在启动工作中,需要做的主要工作就是读取配置文件,然后将各模块感兴趣的配置项保存到各结构体中,根据配置文件对所有的模块进行初始化,接着启动各进程,准备进行工作。

nginx的多进程模型

另一款比较常用的web服务器就是apache,它最大的特点就是稳定,所以相比于nginx复杂很多也臃肿很多。nginx最大的特点就是强调性能,在后面展示其源码时也可以看到它为了追求性能所做的一些工作。
nginx之所以高效的主要原因是它采用的异步非阻塞多进程模型,并且一般进程的个数与cpu核心数相同,一个master进程,多个worker进程,可能还会有cache loader以及cache manager进程,多个连接对应一个worker进程,master进程主要负责管理worker进程以及启动/停止服务、重新读取配置文件、平滑升级等功能,而cache进程则当开启了缓存功能才会出现。

apache则通常采用同步多进程模型,每个连接对应一个进程,apache采用的这种模型,当请求较多时,进程也随之变

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值