linux輕量級 Web 服務(wù)器第1/2頁
作為 Apache 和其他市場領(lǐng)頭產(chǎn)品的補充的專用 HTTP 應(yīng)用程序 |
![]() |
級別: 中級Cameron Laird (claird@phaseit.net), 副總裁, Phaseit, Inc.2007 年 7 月 23 日
“輕量級” Web 服務(wù)器,例如 第一個重要的方面是清楚地理解所調(diào)查的領(lǐng)域(請參閱 參考資料,以了解更詳細(xì)的信息)。終端用戶在 Internet 上的基本動作就是 “進入一個 Web 頁面”。從大處講,這牽涉到兩個應(yīng)用程序之間的協(xié)作:
所有 Web 用戶直接與瀏覽器交互,因此他們的選擇和分析相應(yīng)地有些狂熱。而服務(wù)器只對站點的技術(shù)人員可見。根據(jù) Netcraft 最近的調(diào)查,雖然存在很多不同的 Web 服務(wù)器,但是其中兩種 Web 服務(wù)器就占據(jù)了 90% 的份額,這兩種 Web 服務(wù)器是 Apache 和 Internet Information Server (IIS)。它們都是經(jīng)過高度錘煉的產(chǎn)品,并且聲稱不僅具有廣泛的內(nèi)在技術(shù)特性,而且有很多配套的書籍、增件、顧問、提供商等。那么,它們是否還有值得改 造的地方呢? 答案是肯定的。評價一個 Web 服務(wù)器的重要指標(biāo)有:
Apache 和 IIS 不能同時在那么多的標(biāo)準(zhǔn)方面做到最好。理論上講,顯然那些定向的產(chǎn)品至少能在以上的一至兩個方面超越市場領(lǐng)頭產(chǎn)品。 關(guān)于輕量級 Web 服務(wù)器的一件有趣的、值得調(diào)查的事情是,它們之間的競爭遠(yuǎn)遠(yuǎn)不止是理論上的:仔細(xì)研究表明,它們有很多 東西可以提供,并且即使在很多常見的情況下,它們相對于 Apache 和 IIS 也堅持了自己的風(fēng)格。雖然可以合理地認(rèn)為市場領(lǐng)頭產(chǎn)品已經(jīng)經(jīng)過了小心的優(yōu)化,從而能夠有效地在性能(舉個例子)方面避免被擊敗,但是很多小型的競爭對手因 為只提供簡單的靜態(tài) Web 頁面服務(wù),速度反而更快。當(dāng)使用這些 Web 服務(wù)器運行測試時,您會感覺好像是在賽道上駕駛一輛 go-kart 小車,不知不覺竟然超過了 Porsche 和 Viper 車。這還不是全部:有時候,輕量級 Web 服務(wù)器可作為那些大哥級服務(wù)器的有效補充,而不只是與它們競爭。即使您知道自己將使用 Apache,有時候通過將它與一個輕量級伙伴搭檔,反而可以最大限度地利用它。最好的解決方案有時候需要兩個或更多 Web 服務(wù)器的協(xié)作。
本 調(diào)查中重點關(guān)注的 “輕巧性” 實際上是一種主觀質(zhì)量,就像 “藝術(shù)” 或 “風(fēng)格”。它通常意味著簡單、易于安裝、流線化、要求低和健壯 —— 比 Apache 和 IIS 更小、更簡單,當(dāng)然,在試圖滿足大量市場的過程中,它們已經(jīng)變得異常復(fù)雜。出于這個目的,雖然 Java Web Server、AOLserver 和 Zeus 擁有迷人的可移植性和性能優(yōu)勢,但是它們的復(fù)雜性和大小使其不得不被拒之門外。 輕 量級 Web 服務(wù)器可以適用于市場領(lǐng)頭產(chǎn)品和其他 “重量級” 服務(wù)器無法勝任的情況。例如,整個服務(wù)器可以打包在一個文件中。這意味著開發(fā)人員可以方便地攜帶生產(chǎn)環(huán)境所需的所有工具。即使在生產(chǎn)服務(wù)器上運行的是 Apache,也仍然可以在賓館的房間里,借助只需數(shù)秒鐘就可以安裝完畢的輕量級 Web 服務(wù)器以嘗試新想法。而且,由于輕量級 Web 服務(wù)器要求很低,因此可以在那些無法負(fù)擔(dān) IIS 的主機上順暢地運行。
小的、輕量級的 Web 服務(wù)器還可以在小功率的主機上良好地運行。在我們的公司(Phaseit —— 見 側(cè)欄) 中,我們在遠(yuǎn)程的、條件欠佳或配置較低的環(huán)境中的工業(yè)計算機上運行專用的 硬件。在這些情況下,能夠通過一個對處理能力或磁盤空間要求很低的應(yīng)用程序來提供 Web 頁面是一個很大的優(yōu)勢。這意味著我們的機器可以避免 Apache 的開發(fā)和處理能力所帶來的開銷,構(gòu)建基于 Web 的管理控制臺。 從某種程度上講,幾乎所有輕 量級 Web 服務(wù)器都是開放源碼的。如果我們需要某一款 Web 服務(wù)器所特有的行為,那么下面概述的一些 Web 服務(wù)器都非常小巧,易于理解,也易于增強,只有兩個例外。這些 Web 服務(wù)器為嵌入 Web 服務(wù)的項目提供極好的原始材料,不管這些 Web 服務(wù)是在特殊的硬件中,還是在為在通用計算機上運行而設(shè)計的特定應(yīng)用程序中。它們還廣泛用于具有傳統(tǒng)外觀的 Web 站點:
下面的例子說明了開發(fā)人員使用輕量級服務(wù)器的輕巧性:在我們公司,我們采用專門的硬件提供辦公室電話解決方案。它基于定制的、以傳統(tǒng)的 Linux® 應(yīng)用程序的形式運行的軟件。只需一個附加文件和一點 面向服務(wù)架構(gòu)(SOA)被認(rèn)為難以使用。在我們的經(jīng)驗中,SOA 至少有一部分這方面的缺點阻礙了 Web 服務(wù)的使用。我們利用輕量級 Web 服務(wù)來設(shè)置快速的 SOA,以進行演示。 輕量級服務(wù)器甚至可以用于生產(chǎn)數(shù)據(jù)中心,包括前面列出的 high-profile 站點。性能非常高的站點會將操作分開,從而最大限度地利用緩存、代理等技術(shù)。例如,一個基于 Apache 的站點可能采用一種這樣的架構(gòu):通過小型的 Web 服務(wù)器從專用的文件系統(tǒng)提供緩慢變化的圖片。終端用戶看到的結(jié)果實際上是 Apache 和一個或多個輔助 Web 服務(wù)器通過協(xié)作得到的輸出,它們各自擔(dān)任自己擅長的角色。這樣的安排可以以非常低的計算成本提供非常 快的結(jié)果。
雖 然輕量級 Web 服務(wù)器有很多共同之處,但是各有各的不同。大多數(shù)輕量級 Web 服務(wù)器是用 C 編寫的,但是實踐證明,有些其他實現(xiàn)語言也可以成功地用于實現(xiàn)服務(wù)器,對此我已經(jīng)做了實驗,這些語言包括 Erlang、Java、Lisp、Lua、Perl、Python 和 Tcl。如果其中有您喜歡的語言,那么也許可以找到適合您的 Web 服務(wù)器。 由于很多特定的原因,您可能會將目光投向某種 “不常見” 的語言:
Athana 可以作為這些主題的例子。它是用 Python 編寫的 Web 服務(wù)器。它支持 HTTP 多部分(上傳)、會話、 cookie 等。從 0.2.1 版開始,Athana 一直被編寫在一個單獨的、精心組織的源文件中。 如前所述,不同的輕量級 Web 服務(wù)器有著不同的優(yōu)點,它們或多或少獨立于編程語言。所有輕量級 Web 服務(wù)器都比 Apache 更小、更易于配置。與 Apache 相比,有些輕量級 Web 服務(wù)器更快,有些則快得多。有些則強調(diào)安全性、重負(fù)載下的從容性、可擴展性或者內(nèi)存占有量。在任何情況下,都可以以一種不適用于 Apache 的方式徹底地理解這些服務(wù)器。 哪些特定的產(chǎn)品使這些可能性成為現(xiàn)實?即使只留意 “輕量級” 服務(wù)器,面對的也是一個很大的難于管理的產(chǎn)品集合。不過可以將它們按子類來劃分:超輕型、關(guān)注安全型、支持特定語言型等等。
相關(guān)文章
最新評論大家感興趣的內(nèi)容
最近更新的內(nèi)容常用在線小工具 |