最新在做一個企業級項目,在讨論到servlet容器的選擇問題。
關于概念
有個概念必須要搞清楚。什麼是web容器?詳見維基百科
簡而言之,web容器就是帶有servlet容器的webserver。是以我很不喜歡web容器這個詞語,web本身沒有什麼容不容器的概念,容器是針對servlet而言。也就是說,必定是java語言的。
在php等世界,就隻有webserver了,因為它們是腳本語言,沒有從jsp編譯為servlet的過程。Apache Httpd就是webserver,但它不能解析JSP,但可以與Tomcat一起使用(它負責http,tomcat負責servlet);當然,Tomcat(同時負責http與servlet)獨立使用也可以。
也就是說web伺服器是解決http層的,servlet容器是解決servlet層的。
格外在說一句,有個同僚把Weblogic稱為Web容器(在專業文檔中),我個人覺得很不專業。首先,Weblogic是一個webserver;同時,它也是一個servlet容器;而且,它還是一個EJB容器。說明的詞語不怕多,在正式的文檔裡要專業。
甲方謝工
在選型讨論會上,謝工主張要選擇商業産品,比如oracle的weblogic。理由是:
1. 功能強大
2. 出了問題可以花錢買專業服務解決
甲方某人
忘了是誰,說用JBoss。
乙方董工
乙方的董工等幾人力薦Tomcat。理由是:
1. Tomcat開源,産品已很成熟
2. 免費
甲方曉東
他負責硬體側購買,但也說不清楚Weblogic的價格。因為License基本總部都買好了,費錢的地方在于格外的其他很多細微地方
我的意見
- 無論是Oracle的Weblogic還是IBM的Websphere,都是不能用的,甲方很熟悉Weblogic,沒用過Websphere,但我是兩個都用過。它們就是兩個黑匣子,出了問題無從查起。雖然我建議公司買了本weblogic的書籍,但也隻是杯水車薪。最關鍵的是服務很貴。
- JBoss是想都不用想就否決的。JBoss最大的優勢是支援EJB,但是現在誰還用EJB?雖然開源免費,但社群也不怎麼樣了現在。
- Tomcat是可以重點考慮的,還需要與Jetty、Resin等權衡抉擇,不能拍腦袋。簡單來說是企業級應用可以考慮tomcat,網際網路雲可以考慮Jetty。是以這個項目Tomcat是比較适合的
- 而且不光是Tomcat就能搞定,還得考慮Nginx等負載均衡。
可參考資料:
- Jetty和Tomcat的選擇:按場景而定
- Google 選擇 Jetty, 放棄 Tomcat
- Jetty vs Tomcat: A Comparative Analysis
最後,還有一個很重要的問題,用Tomcat的話,擴充的功能和故障解決怎麼處理?
這個問題我是這麼看的:
1. 其實Weblogic的全部的功能,是不可能都用到的,與其購買用不到的功能為何不需要什麼功能就在Tomcat上擴充呢?
2. 故障的解決确實需要技術的積累,但為何你願意花錢每次夠購買别人昂貴的服務而不願意花錢招聘、培養自己的核心技術人員呢?
3. 如果這個項目非常着急上線,則可以采用先購買Weblogic,然後逐漸采用Tomcat替換。但,根據我對甲方如果是大型國企/政府部門的了解,項目上線了基本就萬事大吉很難找到有後續的人跟進了。
本文出自ouyida3的csdn blog
2015.4.1