算是这系列文章的前言吧。
去年的几个月,经理看我闲得蛋疼就给我扔给我个无足轻重的任务---帮公司的播客系统写 一个nginx的负载均衡模块。由于模块和现存的业务逻辑结合比较紧密,无法直接使用它自 带的proxy模块。也早就想抽时间研究一下目前十分流行的nginx, 这次有机会有任务有动力 有时间,还是十分走运的。
我之所以说走运,是因为我一直觉得上班时候不干与上班相关的事儿,即使是在学习,也会 搞得心情很低落,没什么成就感。“名不正则言不顺,言不顺则事不行”。 本来是想找几遍 文章看看模块开发相关的部分就行了,可是由于nginx各部分结合过于紧密,再加网上资源 也不多,看完仅存的几篇文章还是感觉云里雾中。
同时,我在不完全了解一个程序运行机制的之前,就不太敢动手修改它的代码,总怕搞出来 问题会颜面扫地。
所以,最终在从我那宽容的老大那里申请到了充裕的时间后,便着手开始读这十几万行代 码。以前一直在玩lighttpd,看过代码,看完就给忘了。这次吸取教训,刚开始就拿书本 子,有什么疑问先写下来,然后逐个以解答自己的问题为目的,大致把nginx代码搞明白 了。然后,在proxy_module的基础上,写了几千行代码,算是完成了工作。借助于nginx这 个稳定高效的平台,这一年多来的运行效果还不错(反正没听到需求部门报怨过,XD)。
后来,发现nginx模块的开发需求还真不少,同事得知我搞过这个,也总来问我相关开发的 问题。这都一年多了,我有点遗忘殆尽,再加上有很多细节的地方,比如配置文件里变量是 如何被解析和替换的,本来就没搞清楚。回答不上来他们的问题,看他们苦恼样儿,就有点 与心不忍。我是很清楚体会过,想做一件事儿但绞尽脑汁仍不得法的痛苦劲儿的。现在回忆 一下,当初我刚开始那一个月,都有点疯癫了,上天入地不得其门,上下求而不得其索,都 快整抑郁了,脾气变得也爆差,不堪回首。 于是乎,就有了一个很狂妄的想法,把我那两 本笔记整理一下,理顺成章节,加上理解体会,放到网上,以期能些许的帮助一下有需要的 人。同时呢,我也有理由再把原先没搞清楚的细节再搞搞明白。算个一举多得的事儿。
但是,有两个难点。
一是,文笔太差,作文经常不及格。我虽然极度讨厌英译汉的文章书籍的晦涩难懂,但是也 没有信心能写得比他们更好。但是反正是写部落格又不是写书,我还是打算能通俗时候就尽 量白话。如果,有幸有读者的话,别嫌我贫就成。
二是,哥们有工作啊,同时笔记又太乱,同时还有许多没搞懂的地方,所以,估计更新是很 慢很慢的。我本来就是计划2011年一年能搞完就不错了。
反正,这不是个诺言。 还在构思如何结构化这一系列文章,暂时没有结论,所以还没有目 录可供参阅。
但是,大致可能也许要分为:配置解析,并发结构,HTTP处理流程,UPSTREAM流程,模块如 何发挥作用,等等大章节。
还有个值得装下13的地方是,刚学会LyX,打算用它来编辑文章,它转html,pdf很方便的 哦。 最后,我祝我能坚持下来吧。
最最后,把我参考学习过的网站文章列举一下,有的已经有了部分代码分析的文章,我也是 摸着它们过得河滴。
Reference:
nginx的官方网站(提供代码下载和各个模块的配置指令,再吐个槽,\<实战Nignx>中 关于配置的章节完全来至自此处。反正官方嘛,在nginx使用过程中,只要你有不懂的配置 项,这里都能找到相关解释。)
nginx基本数据结构分析 (ngx_queue, ngx_list, ngx_pool, etc.)
Emiller's Guide To Nginx Module Development(可能我的搜索方式不对,这个系列 文章是我仅能找到的模块开发的内容。这个站点的也有几篇介结nginx数据结构的文章)
nginx中文网(提供中文的相关应用场景的配置文章,还有一系列貌似不完整的代码分 析文章)
牛人博客 (这人老牛了,有个Nginx Internals的讲座和相关ppt,还有个思维图软件 画出来的nginx各部分关系图。还有,这人英语老厉害了,不知道是不是起了个中文名字的 外国人。)
Comments
不要轻轻地离开我,请留下点什么...