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模塊是非常好用的,但是需要改進!
【編輯推薦】