Nginx服务器的整体架构详解
来源:小编 时间:2022-07-29 09:01:37阅读:0
引言:众所周知,Nginx服务器性能高Web反向代理服务器。Nginx在激烈的Web一度成为服务器竞争中的良好发展势头Web服务器市场的后期之秀,这一切跟Nginx结构设计离不开。
一、Nginx模块化设计
高度模块化的设计是Nginx架构基础。Nginx服务器分解为多个模块,每个模块都是一个功能模块,只负责自己的功能,严格遵循高内聚、低耦合的原则。
核心模块
核心模块是Nginx提供错误日志记录、配置文件分析、事件驱动机制、过程管理等核心功能。
标准HTTP模块
标准HTTP模块提供HTTP协议分析相关功能,如:端口配置、网页编码设置、HTTP设置响应头等。
可选HTTP模块
可选HTTP模块主要用于扩展标准HTTP功能,让Nginx如:Flash多媒体传输、分析GeoIP请求、SSL支持等。
邮件服务模块
邮件服务模块主要用于支持Nginx包括对的邮件服务POP3协议、IMAP协议和SMTP支持协议。
第三方模块
第三方模块是为了扩展Nginx如:Json支持、Lua支持等。
二、Nginx请求处理方法
Nginx高性能Web服务器可以同时处理大量的并发请求。结合多过程机制和异步机制,异步机制采用异步非阻塞模式。接下来,我将向您介绍它Nginx多线程机制和异步非阻塞机制。
多进程
每当服务器收到客户端时。有一个服务器主流程(masterprocess)产生子过程(workerprocess)与客户端建立连接进行交互,直到连接断开。使用过程的优点是每个过程都是独立的,不需要锁,减少了使用锁对性能的影响,降低了编程的复杂性,降低了开发成本。其次,采用独立的过程可以防止过程相互影响。如果一个过程异常退出,其他过程将正常工作,master新的过程很快就开始了worker进程,确保服务部中断,将风险降到最低。缺点是操作系统产生子过程需要进行内存复制等操作,在资源和时间上会产生一定的开销;当有大量请求时,会导致系统性能下降。
异步非阻塞
每个工作过程都采用异步非阻塞的方式,可以处理多个客户端的请求。接到客户端的请求后,调用某个工作过程IO处理,如果不能立即得到结果,处理其他请求(即非阻塞);客户端不需要等待响应,可以处理其他事情(即异步);当IO返回时,通知工作流程;通知流程,暂时挂起当前处理事务,响应客户端要求。
三、Nginx事件驱动模型
在Nginx工作过程正在调用异步非阻塞机制IO之后,去处理其他请求,当IO调用返回后,将通知工作流程。主要用于此类系统调用Nginx实现服务器事件驱动模型。
在Nginx在服务器运行过程中,主要过程和工作过程需要过程交互。互动取决于Socket实现的管道。
Master-Worker交互
与普通管道不同,该管道是由主工艺指向工作过程的单向管道,包括主工艺指令和工作过程ID等待;主过程通过信号与外界通信;每个子过程都有能力接收信号并处理相应的事件。
worker-worker交互
这种互动是和Master-Worker互动基本相同,但将通过主要过程进行。工作过程互隔离的,所以当工作过程W需要工作过程W发出指令时,首先找到W2的进程ID,然后将正确的指令写入指向W2的通道。W采取相应措施收到信号。
五、总结
通过这篇文章,我们是对的Nginx对服务器的整体结构有了全面的了解。包括其模块化设计,
请求处理方法、事件驱动模型等。通过这些理论知识,我们将来会学习Nginx源代码很有帮助;也建议你多看看Nginx的源码,才能更好地领悟Nginx设计理念。
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:shawn.lee@vecloud.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
本站原创内容未经允许不得转载,或转载时需注明出处:https://news.kd010.com/fwqjs/12092.html
TAG标签: