Sun Inner Circle (權力核心)電子報 - 適合商業與技術領袖

GlassFish 或 Tomcat: 究竟哪一種適合我?

如果您重視應用程式的效能、可用性和靈活度,請深入探究幕後的事實。

執行長永遠只會向 IT 管理人員提出最簡單的問題,像是: 客戶為何抱怨新上線的訂購系統? 新的網路服務為何需要八個月才能上線? 這個月的財務報表為何出現應用程式當機的記錄?

執行長鮮少會問 IT 管理人員:公司目前使用的是那種應用程式伺服器技術。在許多情況下,這些問題是有相關性的,因為部署團隊所使用的應用程式伺服器和公司應用程式的效能及靈活度之間具有直接關聯。

更明確地說,應用程式伺服器所採用的 Web 容器技術對於應用程式的品質和開發人員的生產力具有關鍵影響因素。只有擁有正確的 Web 容器技術,您的部屬團隊才能完成更多工作,而您的應用程式也才能提高服務速度和執行效能。錯誤的選擇終將成為痛苦的源頭。

因此,如果應用程式是您負責的內容,那麼深入探究應用程式伺服器內部運作原理、Web 容器技術,以及其對部屬團隊的影響一定會對您有所幫助。本文章將比較兩大廣受歡迎的開放源碼選項: GlassFish 和 Tomcat。

兩種不同的選項,有許多關鍵的差異處

GlassFish 是 GlassFish Community 開發的開放源碼應用程式伺服器,並由昇陽在 2005 年推出,受到眾多開發人員的歡迎。目前有兩大盛行版本: GlassFish v2,以及新發行的 Glassfish v3 Prelude。截至目前為止,GlassFish v2 已被下載 9,000,000 次,且僅只是 2009 年就有 300,000 份的產品註冊。GlassFish v3 Prelude 則提供了新功能和強化。這個優異的平台可用於部署以 Java 或 jRuby 等動態語言為基礎的多元化網際網路應用程式。

GlassFish 集合了眾多的 Java EE 容器 (其中之一也是 Web 容器),而 Tomcat 則僅僅是一個 Web 容器。此一關鍵差異造就了 GlassFish 許多的主要優點。

Tomcat 應用程式伺服器是由 Apache 推出,這是由昇陽和 JServ 開發人員所組成的群組。一開始的遺漏代碼即來自昇陽。Tomcat 在伺服器端 Java 的早期採用階段扮演著重要角色,必須獲得開放源碼授權才能使用,在大型企業之間推廣開放源碼軟體的貢獻卓著。

在 Tomcat 上運作的應用程式通常也能完全相同地在 GlassFish 上運作。不過,這之間仍有些重要差異,而這些差異對效能、擴充性、使用性和開發人員的生產力都會造成影響。

若想瞭解這些差異,就必須深入探究它們所使用的 Web 容器技術。Web 容器是應用程式伺服器中用來管理 Servlet、JavaServer Pages (JSP) 和其它網路層元件的其中一個元件。

GlassFish 集合了眾多的 Java EE 容器 (其中之一也是 Web 容器),而 Tomcat 則僅僅是一個 Web 容器。此一關鍵差異造就了 GlassFish 許多的主要優點:

  • 更簡易的移轉路徑。使用 GlassFish v2,您可以更輕鬆、方便地利用 Enterprise Java Beans (EJB)、Java Persistence API (JPA)、Java Message Service (JMS) 等技術及其它功能。如為使用 Tomcat,就必須個別加入這些技術。開發人員必須負責實作這些功能並確保其可運作,以及搭配後的運作性。
  • 卓越的叢集作業和容錯移轉支援。GlassFish v2 提供了叢集作業和精密的高可用性能力,能夠讓應用程式符合嚴格的企業級服務層級合約 (SLA)。GlassFish v3 Prelude 可透過負載平衡器提供叢集作業,但尚未提供叢集設定檔。
  • 優異的管理/監控功能。GlassFish v2 和 v3 Prelude 都支援透過管理主控台及透過 Command Line Interface (CLI) 進行集中化管理。GlassFish v2 提供 Callflow Monitoring,可協助應用程式開發人員或伺服器管理員判斷應用程式在哪些項目花了最多的時間。此功能也將出現在 GlassFish v3 上。此外,第三方的廠商也可透過 GlassFish Update Center 讓它們的軟體可以輕鬆安裝在 GlassFish 上。如為 Tomcat,則必須個別設定這些新軟體。Update Center 也能讓使用者盡早取得 EJB 3.1 等技術的新版本,這樣就能將 EJB 搭配於 WAR,而不用裝應用程式封裝在 EAR 檔案中。
  • 支援程序語言。GlassFish 對 Ruby/JRuby、Python/Jython、Groovy、PHP、JavaScript/Phobos、Scala 和其它語言已提供支援,有些則將於未來提供支援。

核心問題: 其它的 Web 容器差異

除了上述的一般優勢以外,GlassFish 與 Tomcat 最大的不同即在於其 Web 容器功能。以下舉幾個例子:

  • 能夠在重新部署應用程式時維持工作階段 (GlassFish v3 Prelude),這能為製作 Java Web 應用程式的開發人員節省許多時間。
  • GlassFish v2 和 v3 Prelude 支援虛擬伺服器和 HTTP 偵聽器的動態再配置,不需重新啟動伺服器。如為 Tomcat,當您對資源庫進行了變更,通常必須重新啟動應用程式伺服器。
  • GlassFish v2 和 v3 Prelude 內的高效能、高擴充性 Grizzly Framework 擁有更高的要求/回應處理量。GlassFish 中較低層的 Web Tier 都是透過 Grizzly Framework 實作。 此架構是以 Java 撰寫,它能夠發揮 NIO API (可擴充網路和檔案輸出入) 的優點,不只可提供擴充能力,也能高度自訂。
  • GlassFish v2 和 v3 Prelude 包含多項效能強化,例如「平面閥調用」(Flattened Valve Invocation),這項對閥門架構上的改良可簡化各個閥門的呼叫程序,進而縮小堆疊深度並提升效能。GlassFish v3 Prelude 也支援 Tomcat 樣式的閥門。

昇陽對 Tomcat 和 Glassfish 的 NIO 連接器進行過多項擴充性測試比較。這些測試均採用簡易的 Servlet 以縮短在容器內耗費的時間,並測量各種容器在不斷增加使用者數量的情況下可以支援多少的每秒作業數。例如,在 16,000 位使用者的條件下,我們的基準測試產生下列結果:

  GLASSFISH TOMCAT
作業數/秒 6988.9 6615.3
平均回應時間 0.242 0.358
最大回應時間 1.519 3.693
90% 回應時間 0.6 0.75

取得詳細資料,做出最正確的選擇

應用程式伺服器的選擇會對一家公司的營運產生很多方面的影響,影響層面不僅只涉及開發團隊。這對企業來說是個高度策略性的決策。昇陽堅信,GlassFish 對新一代應用程式的開發人員來說絕對是值得信賴的優質選項。但我們還是建議您先深入瞭解,然後再仔細評估您的可用方案。如需詳細資訊以及 GlassFish 和 Tomcat 的深入比較,請參閱我們的白皮書


 
聯絡我們 關於Sun 新聞 活動 人才招募 隱私權 使用條款 註冊商標 Copyright 1994-2009 Sun Microsystems, Inc.