【Nginx】架构说明

概念

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。
 
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

特点

  1. 相应更快:单次和并发都比其它Web服务器响应快
  2. 高扩展性:低耦合模块设计,可针对性修复、升级、扩展
  3. 高可靠性:worker进程独立,master可在worker进程出错启动新worker提供服务
  4. 低内存消耗:1000个HTTP Keep-Alive连接消耗2.5MB内存
  5. 单机支持10万并发连接:应付海量并发请求
  6. 热部署:支持运行时升级Nginx,更新配置项,更换日志文件
  7. 自由的BSD许可协议:免费使用,且可以修改Nginx源码

架构说明

这里写图片描述

1.工作模型

  • 1个master,n个worker进程
  • 事件驱动:kqueue, epoll, /dev/poll
  • 消息通知:select, poll, rt signals
  • 支持sendfile, sendfile64
  • 文件AIO
  • 支持mmap

2.进程管理

nginx启动后,以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。

master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。

worker进程则是处理基本的网络事件。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。另外,每个worker进程都可以同时处理数以千计的网络请求。

worker进程可以设置与机器cpu核数一致。更多的worker数,只会导致进程来竞争cpu资源了,从而带来不必要的上下文切换。


3.事件驱动 & 异步非阻塞工作机制

Nginx采用多路复用和事件通知,并将特定任务分配到独立的进程。通过一个高效率的、数量有限的单线程进程的运行环(worker)来处理连接。

通过异步非阻塞的方式来处理请求,在事件没有准备好的时候返回EAGAIN,Nginx稍后检查,直到事件准备好了为止,在此期间因为是异步,调用方可以做其他事情。

Nginx在请求间进行不断地切换,该切换是没有代价,不需要创建线程,每个请求占用的内存也很少,没有上下文切换,事件处理非常的轻量级。


4.模块化设计
Nginx的worker,包括核心和功能性模块,核心模块负责维持一个运行循环(run-loop),执行网络请求处理的不同阶段的模块功能,如网络读写、存储读写、内容传输、外出过滤,以及将请求发往上游服务器等。而其代码的模块化设计,也使得我们可以根据需要对功能模块进行适当的选择和修改,编译成具有特定功能的服务器。


5.代理(proxy)设计
无论是对于HTTP,还是对于FastCGI、memcache、Redis等的网络请求或响应,本质上都采用了代理机制。所以,nginx天生就是高性能的代理服务器。

参考:
https://www.sohu.com/a/164238474_99937662
http://blog.51cto.com/6638225/1865175

猜你喜欢

转载自blog.csdn.net/Francis123580/article/details/81559638
今日推荐