LAMP系列之源码级别研究Apache


LAMP系列之源码级别研究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模块是非常好用的,但是需要改进!

相关内容