四大Java云計(jì)算測(cè)評(píng)

2011-10-23 10:40:40來源:網(wǎng)界網(wǎng)作者:范范翻譯

在驚悚電影中似乎都有這樣一個(gè)情節(jié),主人公說“這很容易……簡(jiǎn)直是太容易了”,然后所有的事情就開始土崩瓦解。當(dāng)我開始測(cè)試市場(chǎng)上的頂級(jí)Java云計(jì)算時(shí),我發(fā)現(xiàn)這一情節(jié)正在自己身上重演。

在驚悚電影中似乎都有這樣一個(gè)情節(jié),主人公說“這很容易……簡(jiǎn)直是太容易了”,然后所有的事情就開始土崩瓦解。當(dāng)我開始測(cè)試市場(chǎng)上的頂級(jí)Java云計(jì)算時(shí),我發(fā)現(xiàn)這一情節(jié)正在自己身上重演。

與其他人相比,企業(yè)研發(fā)人員需要對(duì)這些可能性更擔(dān)憂。當(dāng)云計(jì)算中出現(xiàn)了讓生活變得更容易的新方案時(shí),普通的計(jì)算機(jī)用戶會(huì)感到興奮。他們會(huì)采用基于云的電子郵件,如果電子郵件丟失,他們只能聳聳肩,因?yàn)殡娮余]件經(jīng)常丟失,有時(shí)就像作祈禱那樣頻繁。

企業(yè)研發(fā)人員不能如此樂觀。每一個(gè)能夠讓我們進(jìn)行一鍵配置的選擇都會(huì)讓我們永遠(yuǎn)的被禁錮在其中。如果我們采用了一個(gè)過于容易的云計(jì)算并讓它為我們做太多的事,那么我們就不太可能有什么發(fā)展。

“被套牢”的危險(xiǎn)看起來隱藏在每一個(gè)角落里,這未必是最糟糕的部分。如果除去我們需要的特色外,我們對(duì)云計(jì)算在各方面都很滿意,而這個(gè)特色又是云計(jì)算提供商無法或者是不想提供給我們,那會(huì)發(fā)生什么情況呢?云計(jì)算將成為一個(gè)一成不變的世界。

讓我們感到安慰的是,云計(jì)算研發(fā)人員已經(jīng)對(duì)這一情況感到了不安。他們知道,客戶希望得到一鍵式解決方案和高度的自動(dòng)化,以讓生活變得更加容易。但是這意味著發(fā)推出一些非標(biāo)準(zhǔn)或是無法讓用戶自由調(diào)整的接口。云計(jì)算研發(fā)人員必須要搞清楚市場(chǎng)是否需要讓云計(jì)算做每一件事,以及客戶是否想擁有充分的自由以避免 “被套牢”。

對(duì)此,我測(cè)試了4個(gè)主要的Java云—— CloudBees、谷歌App Engine、紅帽O(jiān)penShift和VMware的Cloud Foundry。它們都有許多解決方案。一些云依靠標(biāo)準(zhǔn)工具以獲取標(biāo)準(zhǔn)WAR文件和傳輸信息。另一些也有著自己許多獨(dú)特的辦法。

云計(jì)算實(shí)驗(yàn):Java版本

Java云計(jì)算方案變得越來越好、越來越復(fù)雜,但是他們遠(yuǎn)遠(yuǎn)稱不上是一套完成的產(chǎn)品。這里的幾套工具就可以完整的展出它們尚未完全成熟的狀態(tài)。注冊(cè)表單經(jīng)常提示我們?cè)朴?jì)算只是一個(gè)測(cè)試應(yīng)用,僅針對(duì)研發(fā)而非針對(duì)生產(chǎn)工作。實(shí)際上,這他們更準(zhǔn)確的稱呼或許應(yīng)該是云計(jì)算postalpha測(cè)試版或是prebeta測(cè)試版。

由于都是在摸著石頭過河,因此即使已經(jīng)創(chuàng)建的云計(jì)算也會(huì)經(jīng)常發(fā)生變化。由于沒有人真正知道負(fù)載和成本如何增加,因此價(jià)格會(huì)進(jìn)行調(diào)整,有時(shí)候調(diào)整的幅度很大。云計(jì)算銷售商也不知道如何確定他們的成本,所以在他們報(bào)價(jià)幾百萬的處理量?jī)r(jià)格為多少美元時(shí)也只是全憑猜測(cè)。

未來,對(duì)于買家和賣家來說,定價(jià)可能是一件非常困難,并極具挑戰(zhàn)性的工作。人們已經(jīng)對(duì)谷歌停止補(bǔ)貼其App Engine的作法感到非常失望。一些用戶抱怨每一次點(diǎn)擊都使得他們的成本增長(zhǎng)兩倍,甚至是三倍。但是誰又能夠指責(zé)谷歌呢?盡管谷歌擁有優(yōu)秀的金融工程師,但是我不能確定他們是否知道Big Table數(shù)據(jù)倉庫的每次往返的合理價(jià)格。它們可能會(huì)受到西北部大雨而波動(dòng)。因?yàn)楣雀璧囊恍┳钚聰?shù)據(jù)中心就建在那里,那里的水利發(fā)電是最便宜的能源。

或許是我想多了。但是總會(huì)要發(fā)生錯(cuò)誤,價(jià)格將出現(xiàn)波動(dòng)。云計(jì)算具有更高的靈活性和自動(dòng)化程度,這為我們節(jié)省了雇人管理這些機(jī)架和確保數(shù)據(jù)平穩(wěn)傳輸?shù)某杀。如果Web 3.0應(yīng)用取得了巨大成功,而云計(jì)算卻非常昂貴,這仍然可以帶來足夠的盈利以支付將應(yīng)用移植到一套內(nèi)部服務(wù)器所進(jìn)行的全部程序改編。如果這些Web程序的盈利不足以抵消成本,那么體驗(yàn)價(jià)格不會(huì)下降。云計(jì)算最終會(huì)發(fā)生變化:他們會(huì)簡(jiǎn)化實(shí)驗(yàn)并進(jìn)行調(diào)整。

選擇云計(jì)算涉及到大量實(shí)驗(yàn)。最簡(jiǎn)單的一項(xiàng)是從亞馬遜或Rackspace云計(jì)算那里發(fā)現(xiàn)機(jī)器,但是這一操作比服務(wù)提供商承諾的要復(fù)雜很多。是的,我按下按鍵,在幾秒內(nèi)就可以啟動(dòng)一臺(tái)計(jì)算機(jī),但是隨后我卻要花上數(shù)個(gè)小時(shí)進(jìn)行聯(lián)機(jī),以安裝JVM和剩下的堆棧。

如果你有時(shí)間和意愿來創(chuàng)建一個(gè)帶有你喜愛的軟件的機(jī)器鏡像,那么原始的云計(jì)算機(jī)器將會(huì)滿足你對(duì)云計(jì)算的大多數(shù)期望,但同時(shí)也將你“套牢”。亞馬遜和 Rackspace讓存儲(chǔ)鏡像和復(fù)制變得很容易。你需要選擇軟件和確定需要多少臺(tái)機(jī)器。理論上,你隨時(shí)可以獲得更多的機(jī)器。我曾經(jīng)嘗試過在日常事務(wù)處理中生成新機(jī)器,這很棒,每小時(shí)只需要花費(fèi)1.5美分。在工作完成后,它們就會(huì)消失。

當(dāng)然,你必須要對(duì)自己有一個(gè)全面的認(rèn)識(shí)。你是想要100臺(tái)虛擬機(jī)還是102臺(tái)呢?這是一個(gè)矛盾的問題。你要控制你的成本,但你又沒有時(shí)間卻做出反應(yīng),除非你在這方面擁有更高的智能化。

Java云:谷歌App Engine

在使用谷歌App Engine的過程中,我們會(huì)感到興奮和舒服。其作為一款先進(jìn)的工具正在慢慢成熟,并且更容易被用戶所理解和使用,也許是因?yàn)橛脩粢呀?jīng)接受了其中的許多理念。

基礎(chǔ)的架構(gòu)主題是相同的。你上傳帶有業(yè)務(wù)邏輯的核心代碼,App Engine將部署充足的實(shí)例以滿足你的需求。如果你想在會(huì)話間存儲(chǔ)或同步你的工作,你必需使用谷歌專用的數(shù)據(jù)存儲(chǔ)和緩存,不過所有的東西感覺都相當(dāng)優(yōu)秀。App Engine的第一個(gè)版本使用了Python,但是現(xiàn)在你可以增加帶有JSP、小服務(wù)程序和服務(wù)器端邏輯的Java WAR文件。通過獨(dú)立的Web界面進(jìn)行管理。命令行問題幾乎已經(jīng)不再出現(xiàn)。

盡管架構(gòu)和數(shù)據(jù)存儲(chǔ)沒有變化,但是工具卻更為復(fù)雜和豐富,通過許多功能和按鍵可以調(diào)整配額和性能。我使用了整套的Eclipse插件創(chuàng)建了應(yīng)用,整個(gè)環(huán)境與NetBeans和IntelliJ很相似。工具還將谷歌Web Toolkit與App Engine整合在了一起,盡可能的在Java中完成你的所有編程。如果你不能忍受JavaScript或想在服務(wù)器和客戶端上使用相同的代碼,那么谷歌的Web Toolkit可以為瀏覽器翻譯你的Java。

我認(rèn)為對(duì)于程序員來說最大的挑戰(zhàn)是適應(yīng)谷歌的非關(guān)系型數(shù)據(jù)庫。當(dāng)谷歌App Engine首次出現(xiàn),并沒有太多的NoSQL項(xiàng)目。存儲(chǔ)“名稱/值”對(duì)的集合這一概念還是件新奇的事物。任何有著一定的NoSQL經(jīng)驗(yàn)的App Engine用戶都不會(huì)被這一如此簡(jiǎn)潔的解決方案所震驚。但是任何考慮連接和規(guī)范數(shù)據(jù)的人需要打破以往的陳規(guī),適應(yīng)新的方式。

App Engine提供兩個(gè)級(jí)別的數(shù)據(jù)庫,所以架構(gòu)師必須確定是否為額外的能力付款;灸J绞亲屢粋(gè)數(shù)據(jù)中心成為主數(shù)據(jù)中心其它的成為附屬數(shù)據(jù)中心。如果數(shù)據(jù)中心宕機(jī)或執(zhí)行預(yù)定的維護(hù)任務(wù),那么你的數(shù)據(jù)將無法存儲(chǔ)。你必須要做好面對(duì)“預(yù)定的只讀期”的準(zhǔn)備。許多新的Web應(yīng)用(如臉譜)能夠很輕松的克服這類小故障,但許多需要金融級(jí)的可獲得性和一致性的應(yīng)用則需要考慮另的辦法。

低租金的主-從配置被認(rèn)為只有高端版本成本的三分之一,且寫入成本只為高端同類產(chǎn)品的八分之五。不過,在寫入速度上,低租金版本比高端云計(jì)算可能要慢兩倍,并且可能還存在無法寫入的時(shí)候。你必須要關(guān)注這些數(shù)字,因?yàn)闄C(jī)制中還包括了大量隱性支出。

Java云:Cloud Foundry

Spring是Java中最干凈的架構(gòu)。這讓人們使用其作為Java云計(jì)算基礎(chǔ)變得很有意義。SpringSource如今已經(jīng)成為了VMware的一部分,并且成為了Cloud Foundry的領(lǐng)導(dǎo)者。因此,其被創(chuàng)建在VMware虛擬機(jī)頂端并不意外。

使用Cloud Foundry的最早方式是通過SpringSource定制版的Eclipse利用模板創(chuàng)建一個(gè)Spring項(xiàng)目。該工具被稱為 SpringSource工具套件。我嘗試在自己的Eclipse版本安裝了一些SpringSource工具,但是庫的正確收集并不容易發(fā)現(xiàn)。 SpringSource工具套件則非常簡(jiǎn)單。

Cloud Foundry并不局限于Spring,其還支持Rails、Sinatra、Scala、Grails和Node.js。即使你不寫任何Java,它們也能夠在JVM上運(yùn)行。Cloud Foundry不久剛剛宣布支持PHP和 Python/Django。

目前VMware仍然對(duì)其價(jià)格保持沉默。產(chǎn)品還處于測(cè)試階段,VMware還無法對(duì)其進(jìn)行充分的定價(jià)。Cloud Foundry虛擬機(jī)開放程度較高,你可以下載Micro Cloud Foundry——Cloud Foundry環(huán)境中的便攜虛擬機(jī)鏡像,然后在自己帶有VMware Player的環(huán)境中運(yùn)行。其核心代碼在cloudfoundry.org中被開放,并且大部分被Apache許可證所涵養(yǎng)。

Java云:CloudBees

CloudBees不僅提供了一個(gè)部署應(yīng)用的云計(jì)算,而且提供了一個(gè)創(chuàng)建它們的工具。你的賬戶不僅僅是將你的數(shù)據(jù)服務(wù)于大眾的一個(gè)方式。其還有代碼庫(Git或Subversion)和監(jiān)聽你輸入的每一個(gè)代碼的Jenkins服務(wù)器。

我能夠輸入代碼并等待Jenkins去創(chuàng)建、測(cè)試和、匯集文件并將其部署至服務(wù)器中。如果我需要更多,這里有大量的其它服務(wù)、插件和交換機(jī)。

其原理是CloudBees有大量平等工作的高端盒子,以用于創(chuàng)建大量代碼。你不再需要等待你的桌面機(jī)器頁入適當(dāng)?shù)膸欤《氖亲孞enkins分配你的模塊至CloudBees中。

但是我并沒有看到什么優(yōu)勢(shì)。我的Web應(yīng)用只是一個(gè)JSP。連接Jenkins的Web界面一直出現(xiàn)一個(gè)進(jìn)度條并有一個(gè)閃動(dòng)的藍(lán)色球體,這表明我的本地機(jī)器能夠比CloudBees數(shù)據(jù)中心更快的創(chuàng)建這些文件。

CloudBees云的實(shí)質(zhì)是Tomcat和MySQL,不過一些經(jīng)過緊密整合的第三方數(shù)據(jù)庫也可以使用。比如Cloudant提供了CouchDB服務(wù),MongoHQ提供MongoDB數(shù)據(jù)庫服務(wù)。

CloudBees還提供許多免費(fèi)服務(wù),不過限制也非常嚴(yán)格。只有臨時(shí)性的研發(fā)人員喜歡它們。任何長(zhǎng)期從事研發(fā)工作的人員都會(huì)快速的升級(jí)到付費(fèi)服務(wù)。

Java云:紅帽的OpenShift

紅帽并不僅僅滿足于推出個(gè)Linux工具集合。目前他們也開始進(jìn)軍云計(jì)算,他們的云計(jì)算平臺(tái)被稱為OpenShift,可快速向等待接受Java、Python、PHP或Ruby應(yīng)用的機(jī)器進(jìn)行部署。紅帽云計(jì)算提供了一套將應(yīng)用部署至亞馬遜EC2的工具集合。

OpenShift并不是以Java為中心。無論你創(chuàng)建一個(gè)Java應(yīng)用或是其它類型的應(yīng)用,它都可以幫助解決許多部署問題。標(biāo)準(zhǔn)的Java應(yīng)用是由 Maven創(chuàng)建的JBoss Application Server 7堆棧。這是一個(gè)很新的選項(xiàng),我并沒有發(fā)現(xiàn)其在最新的HTML文件當(dāng)中。相反,我是無意中在命令行中敲擊-h時(shí)發(fā)現(xiàn)的。

當(dāng)然,OpenShift對(duì)于那些喜歡使用命令行的人來說是一個(gè)好工具。我敲入了一些命令行就可以了,一個(gè)JBoss應(yīng)用就可以被部署、運(yùn)行并做好了定制的準(zhǔn)備,并且升級(jí)也非常的簡(jiǎn)單。

你提供賬戶信息后,名為Flex的紅帽工具會(huì)處理部署問題。如果你想對(duì)OpenShift進(jìn)行測(cè)試,那么你可以免費(fèi)試用30天。不過,這些工具還處理測(cè)試階段,只能用于研發(fā)工作。

關(guān)鍵詞:Java云計(jì)算