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