24

好吧,大家(看到这些文字的地球人)都知道Nginx是什么用的了。
这里只是希望可以稍微详细的记录下收集到的信息。
毕竟在一头扎进源码的深潭之前,先在水面观察一阵并不是什么坏事:)

Nginx不是一个普通HTTP Server,它还是一个免费、开源和高效的HTTP Server。
免费和开源是显然的事实,因为源码可以从官网上下载;
高效不能一眼看出,但也有测试数据和市场份额做间接的支持。

Nginx不仅仅是一个HTTP Server,它还可以用作Reverse Proxy和Mail Proxy。
作为Reverse Proxy,主要用于负载均衡、SSL支持、Cache等方面;
Mail Proxy了解不多,暂不妄言:)

根据官网的数据,目前Nginx的市场份额为7.5%。这个数据也和netcraft.com上的调查结果一致。
详细数据可以参考http://news.netcraft.com/archives/2011/01/12/january-2011-web-server-survey-4.html

顺便截下最新的分布。Nginx排名第三,而且势头良好。
不过如果想对领先的Apache和IIS构成威胁,则还是非常遥远的梦想。
nginx market share

项目从2002年开始,2004年开源。
初始作者和主要维护人名叫Igor Sysoev,俄罗斯人,70年生,目前在莫斯科。
可以在http://sysoev.ru/en/找到更多的资料。
不过如果想对个人有更更多的了解,最好懂点俄文。
这对东北的同学来说可能不是难事:)

对这位牛人的相貌比较好奇,Google到的结果让人无从选择。
好在这个星球上,除了Google,还有一个叫Facebook的网站:)
igor
据他在Facebook上的资料显示,他和Intel有某种联系,莫非跳槽了?

发音方面,和Linux一样,最好还是采用发明人的说法,“Engine X”。
挺酷的样子。

作为一个服务器,Nginx的优点非常突出。
http://wiki.nginx.org的说法,高性能、稳定、功能丰富、配置简单,并且节省资源。
难道世界上真有只好不坏的东西?

它使用事件驱动的异步模型,而不是多进程/线程竞争接入请求的架构,解决了C10K的问题。
从官网的描述可以看出,Igor对此架构非常自豪。
不过从现在看来,这样的架构被没什么超凡入圣之处,公司内可以看到很多类似的实现。
甚至可以说,这已经是常规的做法了,
可能回到2002年的时候会是一个非常创新的设计。
事件驱动模型在《Unix Network Programming》里也有详细的阐述,
只是没有提到epoll、kqueue等新的方法,原理都是相通的。

现在,Nginx的最新稳定版本是0.8.54,可以在http://nginx.org/en/download.html下载。
http://nginx.org/的更新历史看,作者非常活跃,每个月起码更新一次。
开发版本已经到了0.9.5。

最后,对于想分析Nginx源码的中国人,http://code.google.com/p/nginxsrp/wiki/NginxCodeReview似乎是个不错的开始。
英文方面,可以看http://nginx.org/en/docs/introduction.html,是Igor写的三篇文章。
美中不足的是,这三篇文章主要都是介绍配置方面信息的,对架构、代码甚少涉及。

Tagged with:
22

分析Nginx源码这个念头曾经出现过,也用GDB配合Source Insight跟踪过两天时间。
之后由于其他事情占据了时间,就搁置了下来,一晃就几个月。

做事过于随性是老毛病了,不过就像许多其他事情,虽明知不妥,却总也戒不掉,改不了。
借着写Nginx模块的惯性和余温,但愿这次可以一口气完成吧。
//Mac OS自带的输入法真不好用,公司们(Google, Tencent, Sogou, Baidu …)大发慈悲,做一个输入法吧

Nginx的代码写得好是出了名的:命名规范、模块化划分、函数简短、适当注释⋯⋯
虽然有如此多的好处,但要对其代码做详细分析,既可俯瞰架构、又能深入细节,却实属艰难。
单单是内存池、回调机制、多重指针等之前几天让我费劲脑汁的技巧,已经让我超出预算。
况且了解细节易,纵观全局难,注定了是一个上下求索的过程。
//这个说法也适用于程序员生涯。

为免自己半途而废,写下以上文字,算是立字为据,也权当之后笔记的前言吧。

Tagged with:
preload preload preload

无觅相关文章插件,快速提升流量