LAMP系列之源碼級(jí)別研究Apache
LAMP系列之源碼級(jí)別研究Apache的具體內(nèi)容如下:
要展開(kāi)這個(gè)話題,我想首先需要解決好為什么需要這樣做的問(wèn)題。源碼級(jí)別看待Apache,首先需要解決態(tài)度問(wèn)題哈。
追溯Apache的歷史,從Tin Berners-Lee 1991年編寫的CERN HTTP服務(wù)器算起,已經(jīng)有20多年歷史了。當(dāng)下,Apache可以說(shuō)是***Web服務(wù)器。facebook,google,百度等大型互聯(lián)網(wǎng)公司所使用的web server屬于定制過(guò)的Apache,廣義上也算是Apache吧,這樣看的話,互聯(lián)網(wǎng)流量的絕大部分都是由Apache服務(wù)器提供。PHP方面,雖然現(xiàn)有后起之秀nginx,網(wǎng)上也到處都是Apache和nginx評(píng)測(cè)文章,論調(diào)基本一致:nginx比Apache更優(yōu)。這里不做比較,只要你承認(rèn),Apache的的確確是一款優(yōu)秀的web server就足以了,至于這一點(diǎn),我想就算是nginx的擁躉,也不會(huì)質(zhì)疑這一點(diǎn)。Apache良好的模塊化架構(gòu)設(shè)計(jì)已經(jīng)成為經(jīng)典的服務(wù)器架構(gòu)。
然而,看看計(jì)算機(jī)書(shū)架上的Apache的書(shū),幾乎都是講如何使用Apache的,很少有對(duì)Apache進(jìn)行源碼級(jí)別研究的,可是,功利一點(diǎn)的角度來(lái)看,很多大公司在進(jìn)行招聘的時(shí)候,又希望招到那些熟悉Apache模塊的,***還有Apache模塊開(kāi)發(fā)經(jīng)驗(yàn)的人。從實(shí)踐到理論來(lái)看,我想,源碼級(jí)別研究Apache,對(duì)于相關(guān)從業(yè)人員來(lái)說(shuō),是很有必要的。單單從軟件開(kāi)發(fā)的角度來(lái)看,Apache由于自身優(yōu)秀的架構(gòu),任何深入研究它的人,都可以吸取豐富的營(yíng)養(yǎng)。
源碼級(jí)別研究Apache,我想到的一個(gè)很重要的原因,那就是業(yè)務(wù)的變遷所致。隨著業(yè)務(wù)的變化,我們?cè)陂_(kāi)發(fā)應(yīng)用的時(shí)候,經(jīng)常要在現(xiàn)有Apache模塊的基礎(chǔ)上開(kāi)發(fā)新的模塊,或是修改已有模塊。舉個(gè)簡(jiǎn)單的例子,現(xiàn)在很熱門的SNS游戲,很多時(shí)候客戶端需要向服務(wù)端發(fā)送請(qǐng)求,我的經(jīng)驗(yàn)表明,很多請(qǐng)求僅僅需要服務(wù)器端返回幾個(gè)字節(jié)的結(jié)果。但是,我們都明白,Apache采用HTTP協(xié)議,不管請(qǐng)求還是返回結(jié)果,基本都有三部分組成:請(qǐng)求行(返回狀態(tài)),頭部,數(shù)據(jù)體。就算你僅僅返回一個(gè)字節(jié)的處理結(jié)果,其也要返回一個(gè)龐大的數(shù)據(jù)流。對(duì)于以前的網(wǎng)頁(yè)型的應(yīng)用來(lái)說(shuō),那點(diǎn)頭部信息對(duì)于網(wǎng)頁(yè)中的CSS樣式,圖片等信息來(lái)說(shuō)可以忽略不計(jì)。但是,在SNS這一類型的應(yīng)用中就需要仔細(xì)斟酌了。很受歡迎的SNS游戲一般都面臨著極大的服務(wù)器壓力,我們?cè)诩茉O(shè)SNS服務(wù)器的時(shí)候,根據(jù)我們的應(yīng)用是修改定制Apache模塊,將極大的減小應(yīng)用對(duì)于服務(wù)器的壓力。
通過(guò)文章的闡述,我們明白了許多道理,LAMP 的Apache模塊是非常好用的,但是需要改進(jìn)!
【編輯推薦】