天天看點

Web伺服器和應用伺服器是什麼?

公司做的是網際網路電視業務,跟着技術兄弟們學習,接觸到新的詞彙,譬如:WEB伺服器、應用伺服器、CDN、直播伺服器、回看伺服器,涉及到Linux、叢集、虛拟化,目前學習思路還不明确,采取大雜燴的方式,一點一點的積累,希望過一段時間有一個突破。

1、常見的WEB伺服器和應用伺服器

    Linux/Unix免費web伺服器W3C、NCSA和Apache、Nginx。目前我對Apache和Nginx有所接觸。而Windows下使用IIS Web伺服器。對IIS Web伺服器比較熟悉,原來做過這方面配置和程式設計,ASP.NET程式設計需要啟用IIS服務。

    選擇WEB伺服器考慮幾個因素:性能、安全性、日志和統計、虛拟主機、代理伺服器、緩沖服務和內建應用程式等。

    常見的WEB伺服器:

        Microsoft IIS 

  Microsoft的 IIS Web伺服器是在公共Intranet或Internet上釋出資訊的Web伺服器。IIS是目前最流行的Web伺服器産品之一,很多著名的網站都是建立在IIS 的平台上。IIS提供了一個圖形界面的管理工具,稱為 Internet服務管理器,可用于監視配置和控制Internet服務。

  IIS是一種Web服務元件,其中包括Web伺服器、FTP伺服器、NNTP伺服器和SMTP伺服器, 分别用于網頁浏覽、檔案傳輸、新聞服務和郵件發送等方面,它使得在網絡(包括網際網路和區域網路)上釋出資訊成了一件很容易的事。它提供 ISAPI(Intranet Server API)作為擴充Web伺服器功能的程式設計接口;同時,它還提供一個Internet資料庫連接配接器,可以實作對資料庫的查詢和更新。

  Apache

  Apache 源于NCSAhttpd伺服器,經過多次修改,成為世界上最流行的Web伺服器軟體之一。 Apache是自由軟體,是以不斷有人來為它開發新的功能、新的特性、修改原來的缺陷。Apache的特點是簡單、速度快、性能穩定,并可做代理伺服器來 使用。本來它隻用于小型或試驗Internet網絡,後來逐漸擴充到各種Unix系統中,尤其對Linux的支援相當完美。

   Apache是以程序為基礎的結構,程序要比線程消耗更多的系統開支,不太适合于多處理器環境,是以, 在一個Apache Web站點擴容時,通常是增加伺服器或擴充群集節點而不是增加處理器。到目前為止Apache仍然是世界上用的最多的Web伺服器,世界上很多著名的網站 都是Apache的産物,它的成功之處主要在于它的源代碼開放、有一支開放的開發隊伍、支援跨平台的應用(可以運作在幾乎所有的Unix、 Windows、Linux系統平台上)以及它的可移植性等方面。

        Nginx        

        Nginx是由俄羅斯軟體工程師Igor Sysoev開發的一個高性能的HTTP和反向代理伺服器,具備IMAP/POP3和SMTP伺服器功能。Nginx最大的特點是對高并發的支援和高效的負載均衡,在高并發的需求場景下,是Apache伺服器不錯的替代品。目前,包括新浪、騰訊等知名網站已經開始使用Nginx作為Web應用伺服器。

常見的應用伺服器: 

  IBM WebSphere

  WebSphere Application Server 是 一 種功能完善、開放的Web應用程式伺服器,是IBM電子商務計劃的核心部分,它是基于 Java 的應用環境,用于建立、部署和管理 Internet 和 Intranet Web 應用程式。 這一整套産品進行了擴充,以适應 Web 應用程式伺服器的需要,範圍從簡單到進階直到企業級。

  WebSphere 針對以 Web 為中心的開發人員,他們都是在基本 HTTP伺服器和 CGI 程式設計技術上成長起來的。IBM 将提供 WebSphere 産品系列,通過提供綜合資源、可重複使用的元件、功能強大并易于使用的工具、以及支援 HTTP 和 IIOP 通信的可伸縮運作時環境,來幫助這些使用者從簡單的 Web 應用程式轉移到電子商務世界。

  BEA WebLogic

  BEA WebLogic Server 是一種多功能、基于标準的web應用伺服器,為企業建構自己的應用提供了堅實的基礎。各種應用開發、部署所有關鍵性的任務,無論是內建各種系統和資料庫, 還是送出服務、跨 Internet 協作,起始點都是 BEA WebLogic Server。由于 它具有全面的功能、對開放标準的遵從性、多層架構、支援基于元件的開發,基于 Internet 的企業都選擇它來開發、部署最佳的應用。

  BEA WebLogic Server 在使應用伺服器成為企業應用架構的基礎方面繼續處于領先地位。BEA WebLogic Server 為建構內建化的企業級應用提供了穩固的基礎,它們以 Internet 的容量和速度,在連網的企業之間共享資訊、送出服務,實作協作自動化。BEA WebLogic Server 的遵從 J2EE 、面向服務的架構,以及豐富的工具集支援,便于實作業務邏輯、資料和表達的分離,提供開發和部署各種業務驅動應用所必需的底層核心功能。

   IPlanet Application

  IPlanet Application Server作為Sun與Netscape聯盟産物的iPlanet公司生産的iPlanet Application Server 滿足最新J2EE規範的要求。它是一種完整的WEB伺服器應用解決方案,它允許企業以便捷的方式,開發、部署和管理關鍵任務 Internet 應用。該解決方案集高性能、高度可伸縮和高度可用性于一體,可以支援大量的具有多種客戶機類型與資料源的事務。

  iPlanet Application Server的基本核心服務包括事務監控器、多負載平衡選項、對叢集和故障轉移全面的支援、內建的XML 解析器和可擴充格式語言轉換(XLST)引擎以及對國際化的全面支援。iPlanet Application Server 企業版所提供的全部特性和功能,并得益于J2EE系統構架,擁有更好的商業工作流程管理工具和應用內建功能。

  Oracle IAS

  Oracle iAS的英文全稱是Oracle Internet Application Server,即Internet應用伺服器,Oracle iAS是基于Java的應用伺服器,通過與Oracle 資料庫等産品的結合,Oracle iAS能夠滿足Internet應用對可靠性、可用性和可伸縮性的要求。

  Oracle iAS最大的優勢是其內建性和通用性,它是一個內建的、通用的中間件産品。在內建性方面,Oracle iAS将業界最流行的HTTP伺服器Apache內建到系統中,內建了Apache的Oracle iAS通信服務層可以處理多種客戶請求,包括來自Web浏覽器、胖用戶端和手持裝置的請求,并且根據請求的具體内容,将它們分發給不同的應用服務進行處 理。在通用性方面,Oracle iAS支援各種業界标準,包括 JavaBeans、CORBA、Servlets以及XML标準等,這種對标準的全面支援使得使用者很容易将在其他系統平台上開發的應用移植到 Oracle平台上。

  Tomcat 

  Tomcat是一個開放源代碼、運作servlet和JSP Web應用軟體的基于Java的Web應用軟體容器。Tomcat Server是根據servlet和JSP規範進行執行的,是以我們就可以說Tomcat Server也實行了Apache-Jakarta規範且比絕大多數商業應用軟體伺服器要好。

  Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技術的标準實作,是基于Apache許可證下開發的自由軟體。Tomcat是完全重寫的Servlet API 2.2和JSP 1.1相容的Servlet/JSP容器。Tomcat使用了JServ的一些代碼,特别是Apache服務擴充卡。随着Catalina Servlet引擎的出現,Tomcat第四版号的性能得到提升,使得它成為一個值得考慮的Servlet/JSP容器,是以目前許多WEB伺服器都是采 用Tomcat。

二 web伺服器和應用伺服器比較

通俗的講,Web伺服器傳送(serves)頁面使浏覽器可以浏覽,然而應用程式伺服器提供的是客戶 端應用程式可以調用(call)的方法(methods)。确切一點,你可以說:Web伺服器專門處理HTTP請求(request),但是應用程式服務 器是通過很多協定來為應用程式提供(serves)商業邏輯(business logic)。 

下面讓我們來細細道來: 

Web伺服器(Web Server) 

Web伺服器可以解析(handles)HTTP協定。當Web伺服器接收到一個HTTP請求(request),會傳回一個HTTP響應 (response),例如送回一個HTML頁面。為了處理一個請求(request),Web伺服器可以響應(response)一個靜态頁面或圖檔, 進行頁面跳轉(redirect),或者把動态響應(dynamic response)的産生委托(delegate)給一些其它的程式例如CGI腳本,JSP(JavaServer Pages)腳本,servlets,ASP(Active Server Pages)腳本,伺服器端(server-side)JavaScript,或者一些其它的伺服器端(server-side)技術。無論它們(譯者 注:腳本)的目的如何,這些伺服器端(server-side)的程式通常産生一個HTML的響應(response)來讓浏覽器可以浏覽。 

要知道,Web伺服器的代理模型(delegation model)非常簡單。當一個請求(request)被送到Web伺服器裡來時,它隻單純的把請求(request)傳遞給可以很好的處理請求 (request)的程式(譯者注:伺服器端腳本)。Web伺服器僅僅提供一個可以執行伺服器端(server-side)程式和傳回(程式所産生的)響 應(response)的環境,而不會超出職能範圍。伺服器端(server-side)程式通常具有事務處理(transaction processing),資料庫連接配接(database connectivity)和消息(messaging)等功能。 

雖然Web伺服器不支援事務處理或資料庫連接配接池,但它可以配置(employ)各種政策(strategies)來實作容錯性(fault tolerance)和可擴充性(scalability),例如負載平衡(load balancing),緩沖(caching)。叢集特征(clustering—features)經常被誤認為僅僅是應用程式伺服器專有的特征。 

應用程式伺服器(The Application Server) 

根據我們的定義,作為應用程式伺服器,它通過各種協定,可以包括HTTP,把商業邏輯暴露給(expose)用戶端應用程式。Web伺服器主要是處理向浏 覽器發送HTML以供浏覽,而應用程式伺服器提供通路商業邏輯的途徑以供用戶端應用程式使用。應用程式使用此商業邏輯就象你調用對象的一個方法(或過程語 言中的一個函數)一樣。 

應用程式伺服器的用戶端(包含有圖形使用者界面(GUI)的)可能會運作在一台PC、一個Web伺服器或者甚至是其它的應用程式伺服器上。在應用程式伺服器 與其用戶端之間來回穿梭(traveling)的資訊不僅僅局限于簡單的顯示标記。相反,這種資訊就是程式邏輯(program logic)。 正是由于這種邏輯取得了(takes)資料和方法調用(calls)的形式而不是靜态HTML,是以用戶端才可以随心所欲的使用這種被暴露的商業邏輯。 

在大多數情形下,應用程式伺服器是通過元件(component)的應用程式接口(API)把商業邏輯暴露(expose)(給用戶端應用程式)的,例如 基于J2EE(Java 2 Platform, Enterprise Edition)應用程式伺服器的EJB(Enterprise JavaBean)元件模型。此外,應用程式伺服器可以管理自己的資源,例如看大門的工作(gate-keeping duties)包括安全(security),事務處理(transaction processing),資源池(resource pooling), 和消息(messaging)。就象Web伺服器一樣,應用程式伺服器配置了多種可擴充(scalability)和容錯(fault tolerance)技術。 

一個例子 

例如,設想一個線上商店(網站)提供實時定價(real-time pricing)和有效性(availability)資訊。這個站點(site)很可能會提供一個表單(form)讓你來選擇産品。當你送出查詢 (query)後,網站會進行查找(lookup)并把結果内嵌在HTML頁面中傳回。網站可以有很多種方式來實作這種功能。我要介紹一個不使用應用程式 伺服器的情景和一個使用應用程式伺服器的情景。觀察一下這兩中情景的不同會有助于你了解應用程式伺服器的功能。 

情景1:不帶應用程式伺服器的Web伺服器 

在此種情景下,一個Web伺服器獨立提供線上商店的功能。Web伺服器獲得你的請求(request),然後發送給伺服器端(server-side)可 以處理請求(request)的程式。此程式從資料庫或文本檔案(flat file,譯者注:flat file是指沒有特殊格式的非二進制的檔案,如properties和XML檔案等)中查找定價資訊。一旦找到,伺服器端(server-side)程式 把結果資訊表示成(formulate)HTML形式,最後Web伺服器把會它發送到你的Web浏覽器。 

簡而言之,Web伺服器隻是簡單的通過響應(response)HTML頁面來處理HTTP請求(request)。 

情景2:帶應用程式伺服器的Web伺服器 

情景2和情景1相同的是Web伺服器還是把響應(response)的産生委托(delegates)給腳本(譯者注:伺服器端(server- side)程式)。然而,你可以把查找定價的商業邏輯(business logic)放到應用程式伺服器上。由于這種變化,此腳本隻是簡單的調用應用程式伺服器的查×××(lookup service),而不是已經知道如何查找資料然後表示為(formulate)一個響應(response)。 這時當該腳本程式産生HTML響應(response)時就可以使用該服務的傳回結果了。 

在此情景中,應用程式伺服器提供(serves)了用于查詢産品的定價資訊的商業邏輯。(伺服器的)這種功能(functionality)沒有指出有關 顯示和用戶端如何使用此資訊的細節,相反用戶端和應用程式伺服器隻是來回傳送資料。當有用戶端調用應用程式伺服器的查×××(lookup service)時,此服務隻是簡單的查找并傳回結果給用戶端。 

通過從響應産生(response-generating)HTML的代碼中分離出來,在應用程式之中該定價(查找)邏輯的可重用性更強了。其他的客戶 端,例如收款機,也可以調用同樣的服務(service)來作為一個店員給客戶結帳。相反,在情景1中的定價查×××是不可重用的因為資訊内嵌在HTML 頁中了。 

總而言之,在情景2的模型中,在Web伺服器通過回應HTML頁面來處理HTTP請求(request),而應用程式伺服器則是通過處理定價和有效性(availability)請求(request)來提供應用程式邏輯的。 

警告(Caveats) 

現在,XML Web Services已經使應用程式伺服器和Web伺服器的界線混淆了。通過傳送一個XML有效載荷(payload)給伺服器,Web伺服器現在可以處理資料和響應(response)的能力與以前的應用程式伺服器同樣多了。 

另外,現在大多數應用程式伺服器也包含了Web伺服器,這就意味着可以把Web伺服器當作是應用程式伺服器的一個子集(subset)。雖然應用程式服務 器包含了Web伺服器的功能,但是開發者很少把應用程式伺服器部署(deploy)成這種功能(capacity)(譯者注:這種功能是指既有應用程式服 務器的功能又有Web伺服器的功能)。相反,如果需要,他們通常會把Web伺服器獨立配置,和應用程式伺服器一前一後。這種功能的分離有助于提高性能(簡 單的Web請求(request)就不會影響應用程式伺服器了),分開配置(專門的Web伺服器,叢集(clustering)等等),而且給最佳産品的 選取留有餘地。

三 比較

1.WEB伺服器

 了解WEB伺服器,首先你要了解什麼是WEB?WEB你可以簡單了解為你所看到的HTML頁面就是WEB的資料元素,處理這些資料元素的應用軟體就叫WEB伺服器,如IIS、apache。 WEB伺服器與用戶端打交道,它要處理的主要資訊有:session、request、response、HTML、JS、CS等。

2.應用伺服器

  應用伺服器如JSP,處理的是非正常性WEB頁面(JSP檔案),他動态生成WEB頁面,生成的WEB頁面在發送給用戶端(實際上當應用伺服器處理完一個JSP請求并完成JSP生成HTML後它的任務就結束了,其餘的就是WEB處理的過程了)。

3.兩者關系

  WEB伺服器一般是通用的,而應用伺服器一般是專用的,如Tomcat隻處理JAVA應用程式而不能處理ASPX或PHP。而Apache是一個WEB服 務器f(HTTP伺服器),後來連接配接Tomcat應用伺服器來支援java。

繼續閱讀