nginx源码

框架

模块化框架,共几个类型,图显示3个类型

模块间关系:

可以简单理解为分层,如图,数字代表从上到下层级

每个模块,包含ctx(逻辑)和command(配置项),每种类型模块的ctx类型固定

我们只要关注模块的ctx实现,以及配置项解析即可

因此,添加模块,可以在已有类型添加,也可以创建新的模块类型

1层,配置项关键字触发回调,里面对下属模块进行配置调用(比如遇到http配置项,1层调用command回调,里面会调用所有http模块的配置相关调用)

2层,主要负责对该类型其他模块的配置管理、使用等(比如事件模块类型,该层选择某个模块作为网络核心)

每个模块关心的配置项还和type有关(type标识配置项可出现的域)

看下event和http的配置,如何由conf_ctx管理

176 #define ngx_get_conf(conf_ctx, module)  conf_ctx[module.index]

494 #define ngx_event_get_conf(conf_ctx, module)                                  \
495              (*(ngx_get_conf(conf_ctx, ngx_events_module))) [module.ctx_index]
ngx_epoll_conf_t  *epcf = ngx_event_get_conf(cycle->conf_ctx, ngx_epoll_module);


 61 #define ngx_http_conf_get_module_main_conf(cf, module)                        \
 62     ((ngx_http_conf_ctx_t *) cf->ctx)->main_conf[module.ctx_index]

流程

启动流程:

网络+http流程:

 

项目看的比较详细,各个文件基本都做了整理,大约整理了七十多页

 总结:

1.数据结构封装的好

2.系统相关封装的好

3.框架设计的好,高可用、可扩展、高性能

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MyObject-C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值