LAMP系列文章之二:源码级别研究Apache?
2011-03-21 22:23
253 查看
时间有限,待完善。
要展开这个话题,我想首先需要解决好为什么需要这样做的问题。源码级别看待Apache,首先需要解决态度问题哈。
追溯Apache的历史,从Tin Berners-Lee
1991年编写的CERN HTTP服务器算起,已经有20多年历史了。当下,Apache可以说是最流行Web服务器。facebook,google,百度等大型互联网公司所使用的web server属于定制过的Apache,广义上也算是Apache吧,这样看的话,互联网流量的绝大部分都是由Apache服务器提供。PHP方面,虽然现有后起之秀nginx,网上也到处都是Apache和nginx评测文章,论调基本一致:nginx比Apache更优。这里不做比较,只要你承认,Apache的的确确是一款优秀的web server就足以了,至于这一点,我想就算是nginx的拥趸,也不会质疑这一点。Apache良好的模块化架构设计已经成为经典的服务器架构。
然而,看看计算机书架上的Apache的书,几乎都是讲如何使用Apache的,很少有对Apache进行源码级别研究的,可是,功利一点的角度来看,很多大公司在进行招聘的时候,又希望招到那些熟悉Apache模块的,最好还有Apache模块开发经验的人。从实践到理论来看,我想,源码级别研究Apache,对于相关从业人员来说,是很有必要的。单单从软件开发的角度来看,Apache由于自身优秀的架构,任何深入研究它的人,都可以吸取丰富的营养。
源码级别研究Apache,我想到的一个很重要的原因,那就是业务的变迁所致。随着业务的变化,我们在开发应用的时候,经常要在现有Apache模块的基础上开发新的模块,或是修改已有模块。举个简单的例子,现在很热门的SNS游戏,很多时候客户端需要向服务端发送请求,我的经验表明,很多请求仅仅需要服务器端返回几个字节的结果。但是,我们都明白,Apache采用HTTP协议,不管请求还是返回结果,基本都有三部分组成:请求行(返回状态),头部,数据体。就算你仅仅返回一个字节的处理结果,其也要返回一个庞大的数据流。对于以前的网页型的应用来说,那点头部信息对于网页中的CSS样式,图片等信息来说可以忽略不计。但是,在SNS这一类型的应用中就需要仔细斟酌了。很受欢迎的SNS游戏一般都面临着极大的服务器压力,我们在架设SNS服务器的时候,根据我们的应用是修改定制Apache模块,将极大的减小应用对于服务器的压力。
要展开这个话题,我想首先需要解决好为什么需要这样做的问题。源码级别看待Apache,首先需要解决态度问题哈。
追溯Apache的历史,从Tin Berners-Lee
1991年编写的CERN HTTP服务器算起,已经有20多年历史了。当下,Apache可以说是最流行Web服务器。facebook,google,百度等大型互联网公司所使用的web server属于定制过的Apache,广义上也算是Apache吧,这样看的话,互联网流量的绝大部分都是由Apache服务器提供。PHP方面,虽然现有后起之秀nginx,网上也到处都是Apache和nginx评测文章,论调基本一致:nginx比Apache更优。这里不做比较,只要你承认,Apache的的确确是一款优秀的web server就足以了,至于这一点,我想就算是nginx的拥趸,也不会质疑这一点。Apache良好的模块化架构设计已经成为经典的服务器架构。
然而,看看计算机书架上的Apache的书,几乎都是讲如何使用Apache的,很少有对Apache进行源码级别研究的,可是,功利一点的角度来看,很多大公司在进行招聘的时候,又希望招到那些熟悉Apache模块的,最好还有Apache模块开发经验的人。从实践到理论来看,我想,源码级别研究Apache,对于相关从业人员来说,是很有必要的。单单从软件开发的角度来看,Apache由于自身优秀的架构,任何深入研究它的人,都可以吸取丰富的营养。
源码级别研究Apache,我想到的一个很重要的原因,那就是业务的变迁所致。随着业务的变化,我们在开发应用的时候,经常要在现有Apache模块的基础上开发新的模块,或是修改已有模块。举个简单的例子,现在很热门的SNS游戏,很多时候客户端需要向服务端发送请求,我的经验表明,很多请求仅仅需要服务器端返回几个字节的结果。但是,我们都明白,Apache采用HTTP协议,不管请求还是返回结果,基本都有三部分组成:请求行(返回状态),头部,数据体。就算你仅仅返回一个字节的处理结果,其也要返回一个庞大的数据流。对于以前的网页型的应用来说,那点头部信息对于网页中的CSS样式,图片等信息来说可以忽略不计。但是,在SNS这一类型的应用中就需要仔细斟酌了。很受欢迎的SNS游戏一般都面临着极大的服务器压力,我们在架设SNS服务器的时候,根据我们的应用是修改定制Apache模块,将极大的减小应用对于服务器的压力。
相关文章推荐
- LAMP系列文章之二:源码级别研究Apache?
- 僵尸网络研究系列文章之二 设计自动识别系统
- Entity FrameWork 365日系列文章源码研究 (1)
- 磁性窗体源码开源 - 开源研究系列文章
- LAMP源码安装之二--Apache安装
- 僵尸网络研究系列文章之二 设计自动识别系统
- C#面向插件级别的软件开发 - 开源研究系列文章
- 3000元的订单如何难倒100人的开发团队(Zoomla!逐浪CMS软件研究院《中国软件外包系列研究》文章之二)
- 虚拟机CentOS7最小化安装下源码编译搭建LAMP环境之二: ————Apache编译安装
- 【研究】移动办公趋势洞察系列之二:人工智能、智能硬件精彩纷呈,业务协同初心不变
- [FxCop]FxCop系列转载文章之二:利用FxCop做代码审查
- 第127课: Spark Streaming源码经典解读系列之二:Spark Streaming生成RDD
- Delphi开发日志系列文章的示例源码
- CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)环境
- Spark SQL 源码分析系列文章
- Windows 核心编程研究系列之二:读取指定物理内存地址中的内容
- Web Service 开发系列文章之二(一些SOAP相关的内容)
- spark源码系列文章------shuffle模块详解
- Spring AOP 源码分析系列文章导读
- LAMP系列之-Apache服务生产实战应用指南之安装后基本配置编译版