薄薄的Java
          技術(shù)本來很廣,但我們可以把它變?。?
          posts - 0,  comments - 2,  trackbacks - 0

          Google 應(yīng)用系統(tǒng)引擎最初是以 Apache Tomcat 作為其 webserver/servlet 容器的,但最終將切換到 Jetty 上。 這個決定讓許多開發(fā)人員都詫異的想問:為什么要做這樣的改變?Tomcat 有什么問題嗎? 我們獲得的一次訪問 Webtide ——Jetty 背后的公司——里的這個團隊的機會,得到了關(guān)于這個決定背后更詳細(xì)的信息。

          記者: 為什么Google選擇Jetty作為其應(yīng)用系統(tǒng)的引擎,而不是 Tomcat 或其他的?

          Google選擇Jetty的關(guān)鍵原因是它的體積和靈活性。 在云計算里,體積的因素是很重要,如果你運行幾萬個Jetty的實例(Google就是這樣干的),每個server省1兆,那就會省10幾個G的內(nèi)存(或能夠給其他應(yīng)用提供更多的內(nèi)存)。
          Jetty 被設(shè)計成了可插拔和可擴展的特性,這樣Google就可以高度的自定義它。 他們在其中替換了他們自己的HTTP connector,Google認(rèn)證,以及他們自己的session集群。也真是奇怪,這個特性對于云計算來說是非常出色的,但同時也讓Jetty非常適合嵌入小的設(shè)備中,例如手機和機頂盒。

          記者: 是什么促使Jetty成為Java里出色的servlet容器?

          我們在開發(fā)Jetty時,并沒有想著要把它開發(fā)成一個全功能的應(yīng)用server(盡管它是的)。每一項功能都考慮了可插拔性,所以,如果你不需要他,你就可以不把它加載到內(nèi)存里,把它從request 處理調(diào)用鏈中去掉。如果你不需要sessons,你可以把session處理器拿掉,這樣你就不要浪費資源去來回尋找session cookie了。當(dāng)你每秒鐘都有出來上千個請求時,這些微小的查找動作的開銷是非常的大的。
          我們也并沒有想當(dāng)然的企圖通過設(shè)計就可以得到最優(yōu)化的代碼,我們是如同收集沙粒般,每次得到一些人告訴我們?nèi)绾尾拍苡泻玫腏VMs優(yōu)化和垃圾回收辦法。這是真的,已經(jīng)很小心的代碼仍然能被優(yōu)化,最后的效果就是避免創(chuàng)建新的對象。例如,我們在Jetty里使用并行處理技術(shù),但我們并沒有使用很多標(biāo)準(zhǔn)的并行處理數(shù)據(jù)結(jié)構(gòu),因為這需要創(chuàng)建太多的對象。所以,只是作為個例子,我們使用了雙并行鎖循環(huán) arrays,而不是采用并行鏈?zhǔn)?lists,這樣我們就能夠在不創(chuàng)建對象的情況下,獲得了非阻塞并行效果。

          記者: 是什么使Jetty成為開發(fā)人員的一個有用的server平臺的(例如:testing)?

          Jetty 已經(jīng)在一些流行框架中內(nèi)置了,例如GWT,scala/lift,grails,Jruby等等,還有很多。如果你使用了這些技術(shù),你就直接可以用Jetty了。 Jetty-maven 插件是另外一個非常優(yōu)秀的開發(fā)工具,它能讓web應(yīng)用在不打包成war文件的情況下運行。源文件可以直接編輯,在不需要把它重新放進war文件的情況下獲得測試結(jié)果。 Jetty嵌入式的特征讓我們不再需要寫通過寫那些main方法、通過你的IDE,調(diào)試器或 profiler 來運行之類的無聊的事情。

          記者: Jetty在處理 client-server 請求時有什么獨特的地方嗎?

          Jetty 現(xiàn)在是一個第二代的異步處理server。 過去的兩年里,我們讓Jetty實現(xiàn)了處理異步請求的功能,這成了它核心架構(gòu)的一部分。就像其他的支持異步serlets容器一樣,我想,他們會發(fā)現(xiàn)這個東西并不是看起來的那么簡單和容易。 我們的異步HTTP引擎被我們復(fù)用在了HTTP client 上,所以我們可以大量的降低request 和 responses 消耗。
          同時,就像我之前提到過的,我們的請求處理器是可擴展和可插拔的,這讓web application可以被單獨省略掉,或者是單獨使用,或者是進一步擴展的application。

          記者: 有沒有其他Jetty使用的案例,大的或小的?

          使用Jetty的公司有像Zimbra/Yahoo,這意味著Jetty正作為web mail 服務(wù)器,為百萬級的用戶提供服務(wù)。 Eclipse IDE把它內(nèi)置了進去,這意味著有成百萬的開發(fā)者在桌面運行Jetty。 Jetty被 hadoop map/reduce cluster使用,在其上有幾千個點的集群,處理著世界最大的TB級別的數(shù)據(jù)分類排序工作。 我們也有 J2ME 的接口,有本地編譯器,所以我們可以在手機上,家用路由器和 Java cards 上運行。 更多的Jetty使用的例子可以參考 http://docs.codehaus.org/display/JETTY/Jetty+Powered

          記者: Jetty的將來或藍圖是怎樣的?

          Jetty 最近的計劃是發(fā)布 7.0.0 版本,這將會完全的遷移到eclipse foundation 下。 Jetty 7 將會支持很多 servlet 3.0 的特征,但是并不會使用新的API 和 不會依賴Java 1.6 。 Jetty 7后,很快我們會發(fā)布Jetty 8,這將會完全支持 servlet 3.0 和 Java 1.6,Jetty 會繼續(xù)的創(chuàng)新 和跟蹤各種web 2.0 里的其他的新成果。 我們現(xiàn)在已經(jīng)能支持 Firefox 3.5 里的跨域Ajax功能,我們可以在cometd版本里使用這個。 我們很快就會增加對 WebSocket 和 BWTP 的支持。 對 Google wave 以及相關(guān)協(xié)議的支持的問題已經(jīng)優(yōu)先排到了我們的議事日程上了。

          記者: Google/Jetty 還有其他的計劃嗎?

          Google有他們自己下棋的棋局,我們并不清楚。 我們在JavaOne大會上曾經(jīng)和App Engine開發(fā)者們有個簡單的對話,我們愿意聽他們?nèi)魏蔚姆答伜鸵庖姡脕砀倪MJetty的可嵌入性和可擴展性。

          下面的跟Webtide團隊的討論中,我們詢問了SpringSource 從Jetty轉(zhuǎn)換到Tomcat的事情。

          記者: 你們?nèi)绾慰创?SpringSource 把 Grails 從本來作為缺省容器的Jetty換成了Tomcat的事情?

          原因是grails開發(fā)的領(lǐng)導(dǎo)感覺使用Tomcat能從內(nèi)部的Tomcat開發(fā)人員哪里獲得更好的”服務(wù)“。我猜測,他們把Grails的用戶驅(qū)趕到某一個平臺,以讓SpringSource能更好的銷售他們的技術(shù)支持服務(wù)。幾年前我們看到了相同的事情,JBoss 雇傭了一下tomcat開發(fā)人員后把Jetty提出成了Tomcat,并最終和Mort Bay達成了商業(yè)合同。 很遺憾,這些商業(yè)協(xié)議對技術(shù)選擇有如此大的影響,當(dāng)相同的是,一些基礎(chǔ)結(jié)構(gòu)的工程也正聚集到也application server 為中心的隊伍里來。
          Grails將會繼續(xù)同時支持對Jetty和Tomcat的集成,但會改成Tomcat為缺省服務(wù)。

          這看起來是 SpringSource使用/攀附 Tomcat 的一個特別合適的論斷。


          本篇文章原地址:http://lifeside.javaeye.com/blog/452361
          posted on 2009-08-22 23:53 Rique 閱讀(353) 評論(0)  編輯  收藏 所屬分類: Web Servers

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          留言簿

          文章分類

          文章檔案

          收藏夾

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 永寿县| 宜兴市| 平山县| 庆安县| 龙陵县| 富源县| 会理县| 上蔡县| 陈巴尔虎旗| 阳朔县| 高青县| 仙居县| 英德市| 静乐县| 达孜县| 长乐市| 贵南县| 巴林左旗| 类乌齐县| 黄浦区| 惠安县| 拉萨市| 米脂县| 积石山| 徐州市| 广德县| 会同县| 余庆县| 安龙县| 灵台县| 巍山| 兴隆县| 蛟河市| 昔阳县| 东至县| 佛学| 仪陇县| 萍乡市| 长治县| 丽江市| 富阳市|