nginx 源码分析 nginx 源码分析(1) - 缘起 nginx 是一个开源的高性能web 服务器系统,事件驱动的请求处理方式和极其苛刻的资源使用方式,使得nginx 成为名副其实的高性能服务器
nginx 的源码质量也相当高,作者“家酿”了许多代码,自造了不少轮子,诸如内存池、缓冲区、字符串、链表、红黑树等经典数据结构,事件驱动模型,http 解析,各种子处理模块,甚至是自动编译脚本都是作者根据自己的理解写出来的,也正因为这样,才使得nginx 比其他的web 服务器更加高效
nginx 的代码相当精巧和紧凑,虽然全部代码仅有10 万行,但功能毫不逊色于几十万行的apache
不过各个部分之间耦合的比较厉害,很难把其中某个部分的实现拆出来使用
对于这样一个中大型的复杂系统源码进行分析,是有一定的难度的,刚开始也很难找到下手的入口,所以做这样的事情就必须首先明确目标和计划
最初决定做这件事情是为了给自己一些挑战,让生活更有意思
但看了几天之后,觉得这件事情不该这么简单看待,这里面有太多吸引人的东西了,值得有计划的系统学习和分析
首先这个系统中几乎涵盖了实现高性能服务器的各种必杀技,epoll、 kqueue、 master- workers、 pool、 buffer… …,也涵盖了很多web 服务开发方面的技术,ssi、 ssl、 proxy、 gzip、 regex、 load balancing、reconfiguration、 hot code swapping… …,还有一些常用的精巧的数据结构实现,所有的东西很主流;其次是一流的代码组织结构和干净简洁的代码风格,尤其是整个系统的命名恰到好处,可读性相当高,很kiss,这种风格值得学习和模仿;第三是通过阅读源码可以感受到作者严谨的作风和卓越的能力,可以给自己增加动力,树立榜样的力量
另一方面,要达到这