Nginx
基本数据结构
- pool:All (void**)data。
- array : 只存储比较小的数据
- buf : 大数据(TCP报文 UDP数据…)
- queue:数据与业务分离
- list:不同大小的 array 连接起来
- hash: 主要解析配置数据
- ngx_string:cstring simply
BASE
- Nginx的启动流程、平滑重启和信号控制
- todo
- 全局变量cycle初始化
- todo
- 模块的初始化
- idx 索引化
- 模块操作方法集 赋具体的值
- socket文件描述符 绑定端口初始化(后有 lock 操作)
- 解析配置文件
- cfg: core ->http/event
- 多进程实现
- fork() 都的逻辑判断 分别进行处理
- todo
- 多进程的惊群和进程负载均衡处理
- 每来一个连接后,子进程都会争抢着 try-lock 给这个listen-socket-FD 文件描述符上锁,出现的惊群现象。
- 负载达到 7/8 后,不取争取锁。
RunTime
- Nginx的 Event事件模块概览
- Event模块和配置的初始化
- Event模块的进程初始化 ngx_event_process_init
- Epoll 事件模块
Http
- ngx_http_block 函数和 HTTP 模块的初始化
- ngx_http_optimize_servers 函数和 TCP 连接建立过程
- ngx_http_wait_request_handler 函数和 HTTP Request 解析过程
- ngx_http_core_run_phases 函数和 HTTP 模块的阶段处理PHASE handler
By hand
- 自定义的模块的编写
- 挂载到阶段处理的模块
错误望提醒。Thanks for 【老码农zhuli】的源码阅读框架。