栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

Nginx(2):架构设计与工作流程

Java 更新时间:发布时间: 百科书网 趣学号

这些天呐,实在是给我看晕了。起因自然还是对 nginx 不是很了解哈。那我是来看什么的?一开始就从细节出发,有点管中窥豹,不得全貌了。

图来自网络


架构设计 进程模型

预定:后边专门出一篇关于 nginx进程模型源码分析。这些概念都好记,也好理解,但是里面有的地方我想不到该怎么写,好吧,就是异步,异步不会写,所以要去看一下大神是怎么写的。

1、nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。
2、nginx采用了异步非阻塞的方式来处理请求。

3、线程只有一个,所以同时能处理的请求只有一个,只是在请求间进行不断地切换而已,切换也是因为异步事件未准备好,而主动让出的。这里的切换是没有任何代价。
与多线程相比,这种事件处理方式是有很大的优势的,不需要创建线程,每个请求占用的内存也很少,没有上下文切换,事件处理非常的轻量级。并发数再多也不会导致无谓的资源浪费(上下文切换)。更多的并发数,只是会占用更多的内存而已。


模块化结构体系

预定:这个要出好几篇了,核心模块、事件模块、Stream模块,以及它们下属的技术点可能也要铺开,估计五六篇吧

其他模块视情况而定吧。

(被遮住的是 ngx_conf_module)

① 核心模块(core)

该模块提供了 Nginx 服务运行的基本功能,如 Nginx 的进程管理、CPU 亲缘性、内存管理、配置文件解析、日志等功能。

② 事件模块(event)

该模块负责进行连接处理,提供对不同操作系统的 I/O 网络模型支持和自动根据系统平台选择最有效 I/O 网络模型的方法。

③ HTTP模块(http)

该模块提供 HTTP 处理的核心功能和部分功能模块,HTTP 核心功能维护了 HTTP 多个阶段的工作流,并实现了对各种 HTTP 功能模块的管理和调用。

④ Mail模块(mail)

该模块实现邮件代理功能,代理 IMAP、POP3、SMTP 协议。

⑤ Stream模块(stream)

该模块提供 TCP/UDP 会话的代理和负载相关功能。

⑥ 第三方模块


nginx的框架设计就这么简单,一目了然。
nginx的框架设计就这么难,这一点点东西居然要撑起数万乃至数十万的并发。


工作流程

晓得个框架设计明显是不够的,框架设计可以说是骨架,皮肉就是里面那些模块了,那这些骨架和皮肉又是怎么盘活的呢?

Master 初始化

worker初始化

upstream工作流程

大概也就门清儿了,先学习进程模型、再进入几个核心模块看框架,最后再收了设计比较好的数据结构、内存池、缓冲区以及一些问题解决方案。

话说我该去处理一下我的source insight了,又过期了。

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/282004.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号