nginx源码分析(19)-方法(3)

nginx的三个部分:核心、事件模型/并发模型、应用模块,之前已经详细了分析了核心和事件模型/并发模型两个部分,也详细解释了nginx的模块化设计。

之 前的分析采用了平铺直叙的方式,对源码中主要函数进行了流程化的分解和剖析,经过这种分析方式,对nginx的认识越来越全面和深入,相关的领域知识和背 景知识也越来越丰富。但是这种分析方法比较直白,分析不够深入和透彻,缺少总结和对比,只是阐述如何做,没有阐述为什么那样做,有没有更好的方式等等更深 入的话题。

接下来先不去分析http和mail应用模块。把核心和事件模型部分的分析结果整理一下,分解出一些关键和重要的专题进行论述,专题不会大而全,尽量透彻和深入,例如,可以针对nginx的内存相关的使用和管理组织成一个专题。

专题需要一些参照知识,选择了《unix环境高级编程》、《unix网络编程》和部分RFC文档作为主要资料,nginx的相关背景知识也可以从这些资料中获取。

最 近手头有一些后台项目需要升级和优化,nginx的一些基础设施可以抽取出来加入到这些项目实现中,这些基础设施包括内存池、缓冲区和基本的数据结构。 nginx的这些基础设施有良好的设计和清晰干净的接口,相比于其他的源码,这个部分是最容易抽取出来的。毋庸置疑的是,这些基础设施是nginx高效的 一个根本,不过这并不表示放到任何项目中都是高效的,不同的项目有不同的特点,关键是理解这些设计背后的权衡,在恰当的地方运用恰当的技术方案。

nginx 的基础设施实现手法成熟,不仅接口设计的清晰干净,而且有极好的扩展性,很容易运用到其他项目中,难能可贵的是,这种优良的接口风格可以避免很多犯错的可 能,例如内存池的接口设计,开发人员很少需要关注内存的释放,只在确定不使用的时候调用destroy接口一次性释放内存池的所有内存资源,其余场合可以 利用alloc分配任意大小的内存,可以reset内存池避免重新分配和初始化,如果想减少内存碎片,可以在内存池之上实现自己的slab预分配策略,扩 展性很好。

nginx是非常少见的在功能和质量之间取得很好平衡的高性能服务器实现,可谓全身皆宝,值得花更长的时间钻研和探讨。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值