從Amazon到Windows Azure,IaaS雲在性能表現、複雜性和速度上存在著巨大差異。
雲上的資訊總是相當簡單:交出你的擔憂,IT管理人員和我們會幫你解決一切。 忘掉撥皮抽骨般地安裝伺服器和需要按兩下的引擎備份吧,別再擔心成千上萬的東西會出錯了。 你只需向我們提供信用卡號和你的資料,我們就能為你完成後續所有事情。
在過去的幾個月裡,我都一直活在夢裡,那裡我建造了一個遍及全球的龐大電腦王國。 無處不在的設備將我的資料處理成極小的微小字位,然後又把他們處理成更多的數位。 個人網路在不同的設備間傳輸我那些零散的秘密資訊以便其他人能夠處理資料並將其改造為漂亮的圖片。 確實,我的桌上型電腦實在有點老舊而且本該可以使用更多的記憶體條,但是我用瀏覽器創造了一支全球機器軍隊,我能像「幻想曲」中的魔法師學徒那樣輕鬆自如地操縱他們。
好消息就是,與學徒不同,當我讓這些機器離開,他們就能或多或少地消失。 這就是雲的妙處! 當你需要的時候,你就去購買你需要的東西。 哦! 使用微軟Windows Azure Cloud存儲那一點點的資料字串,我們需要掏一筆不定的經常性費用,不過還好技術支援已經在調查如何消除這筆費用,我希望速度能快一點。 每次當我看到幾便士的費用單出現在我的信用卡帳單上時,總會讓我想起這些資料字串。
然後其他設備來了,隨之而來的是以美分計價的小筆費用。 大多數的幾元店巧妙地重新命名以適應那些售價低於5美元的物品,但在雲上,很有可能買設備就像買便宜的便士糖。 總有人該讓這些老式的設備廠商和廠商宣傳重新煥發生機。
關鍵不同
當完成對所有的雲的調查後,最驚人的發現就是雲世界是如此顯著地變化多端。 那些認為雲設施僅僅只是商品的人那就大錯特錯了。 市場團隊堅持認為雲能讓我們在電腦和存放裝置間轉換自如,就像可隨意替換的樂高積木那般方便,但這觀點不完全正確。 所有的供應商都試圖通過提供略有不同、略微優秀的東西讓他們的產品和服務與眾不同。 有時候你需要花點時間來正確找到不同產品間的不同之處,但對於付出大量工作努力的任何人而言,變更總是至關重要。
差異性總是伴隨著運營系統而產生。 我們很容易認為什麼都是Linux因為Linux無處不在,但那無視了在配給物上的對比。 儘管諸如Ubuntu這樣的標準發行版本本隨處可見,企業依然用細微或不那麼細微的技術增強創造了他們自己的企業版本。 舉例來說,Amazon Web Services(AWS,Amazon網頁服務)和Google Compute Engine(GCE,谷歌計算引擎),二者都有他們專用於雲的Linux系統。 Rackspace消費者可以在一批免費版本中選擇,也可以每月支付一定費用購買紅帽軟體的企業級Linux。
Linux不是唯一選擇。 許多雲系統可以使用Microsoft Windows系統,但需要額外付費。 不過如果你採用微軟Windows Azure和戴爾雲應用,你就無需支付額外費用,他們希望通過服務吸引微軟商店以便説明他們更便捷地將越來越多的計算遷移至雲上。 穩定地把錢花在了微軟技術的任何公司可以很順暢地使用微軟Windows Azure。 還有一家Joyent Cloud,他們的特色是提高效率後的開放原始碼,稱作SmartOS(智慧作業系統)。
更深層次的差異性表現在視覺上。 雖然所有這些設備從購買Intel處理器到將其放到你的機架上都幾乎毫無區別,但事實是他們是大量的多心刀片機切割而成的虛擬機器以方便使用。 你無需在自己的地盤上租用一個單獨的設備--你只需註冊登記一組設備(中的一個)或者按時間分攤使用。
基準設備
當你開始計時後,刀片機之間的不同之處就快速顯露出來。 企業為了説明我們,創造了衡量CPU性能的計量單位,但那些只是非常粗略的指標。 通過DaCapo收集的JAVA路徑,一種超級優秀的JAVA應用測試方法,我把電腦放到我那個龐大的電腦王國。 DaCapo為這些測試配備了多種多樣的測試內容,如在JAVA中作圖、啟動Tomcat伺服器等。 由於每種標準都能對設備施加不同的壓力,不使用JAVA的人也能對不同設備的性能有一個全面而廣泛的認知。
結果的差異是如此的戲劇性,讓人很難相信這是同一個設備在進行同一個測試。 這是因為不同的設備虛擬化的層不同,裝置驅動程式也就大不相同。 單詞「不同」每次都以特別搞笑的方式出現,卻造就了差異巨大的結果。
想想Lucene吧,這個常見的用於文字檔大集合索引的工具。 在索引創建測試中,基礎的SoftLayer設備可以很輕易地達到Amazon基本速度的兩倍還多。 但索引創建完成後,SoftLayer搜索該索引的速度只比Amazon快30%多一點點。
不同設備在同一個雲中的表現結果同樣也能讓人震驚。 比如說谷歌,提供了大量的不盡如你意的設備。 高CPU設備的速度竟然與絕大多數標準的設備大略相同,最快也快不了多少。 在Tomcat類比實驗中,Google下的設備跑出了兩倍的速度。 令人費解的是,在Avrora標準測試中,其速度比標準設備慢3倍之多。
在關於谷歌設備的測試中,舊的經驗法則總是真實的,但可能不是你所期待的真實。 他們當然也經常出錯,增加CPU可以説明多執行緒的某些測試,不過偶爾速度會減慢;增加記憶體條也常常能起作用但不是每次都行。 所有這些明顯的修復對測試速度中的變化更加困惑,大部分的測試容易在同一時段內重複,但一些(如XALAN解析器)變化巨大。
以上這些意味著你需要充分的知識和大量的實驗來決定這個基本問題:設備價值多少? 當帳單到期時,我們就該考慮用這些基礎標準來衡量(設備)了。 如果是創建Lucene索引而非只是搜索索引,那麼很顯然SoftLayer更有價值。 這種差異表明,如果我們想要最大化我們的收益,那麼盡可能擴大設備測試時間是十分必要的。 你沒法想當然地認為每小時3美分的雲設備一定比每小時4美分的設備更劃得來。
資料存儲
虛擬化影響作用巨大的地方是資料存儲。 資料庫強烈依賴磁片磁碟機的輸入輸出信號速度,虛擬化的一點點額外增加都能降低該速度。 某些雲不會對此有太多表示因為他們大概認為所有人都希望使用他們自己的資料庫設備。
有些雲平臺則提供以位元組計費的特殊資料存儲服務。 比如SoftLayer,向那些單獨的設備提供特別優化的用於讀寫資料的MongoDB,性能表現肯定優於在企業自有設備上安裝的MongoDB。 惠普雲和Rackspace雲則步調一致地提供MySQL服務。
許多企業嘗試用不同的資料庫技術做類似的工作。 他們減少虛擬化層並創建API,説明客戶以比特而不是設備的方式購買存儲量。 他們相信基於高度優化的運營系統肯定比客戶的正規機器性能優越。
其他服務則強調不同的性能屬性。 Amazon推出資料存儲解決方案的一攬子集合,他們打包比特資料之後返還,但最有趣的雲服務可能是Glacier,專為檢索時間可能達到「數小時「而設計的一種資料存儲服務。 不是毫秒、不是秒,也不是分鐘--而是小時。
客戶當然可以選擇另外一種設備並安裝最喜歡的存儲方案,但這樣託管的解決方案足以誘惑到為你做出決定。 如果某家雲平臺有你偏好的資料存儲層,你可以偶爾使用其他工具。
網路選擇
另一個讓人困擾的主題是網路。 某些雲--如戴爾雲和SoftLayer雲--提供連接到設備的私人網路。 客戶很容易創建一個只聽取該私人網路命令的資料庫設備,這也使資料庫能更安全地躲過來自公共網路的攻擊。 技術不夠完美因為雲的安全性仍然是個「多雲」的東西,但是個好的開始。
其他一些供應商提供了更多關於他們的雲的一些詳盡的地理上的區別。 客戶知道對自己的設備放在哪裡,方便決定將資料存儲在什麼地方。 尤其有些多疑的企業人員,他們管理著特別重要的資料。 他們可以創建一個龐大的設備帝國,將資料備份存儲在不同地點,以更好地抵禦風暴、火災及其他洪澇災害。 比如谷歌公司對不同資料中心的頻寬成本十分清楚,因此,資料在不同頻寬間傳輸的成本價格高出在同一資料中心傳輸的價格。
頻寬計量有可能造成混亂。 例如戴爾雲,不收取傳入流量的任何費用,簡化測量與核算,而創建一種專門針對客戶資訊的蟑螂汽車旅館,資料存入但不希望輸出。 如果創建一個巨大的處理資料的機器,就像來自「銀河系漫遊指南」的來客,吸收大批量資料卻只提供一個資料作為答案,類似的通話方案頗具吸引力。
基礎知識之外
雲最有趣的地方就是專門用途的設備。 即便它們並不十分適用于當前客戶常用的PHP碼,它們也可以更便捷地處理未來挑戰。 如Amazon,有一組顯卡(GPU)用於任何你夢想和使用的演算法,執行簡單易操作。 物理學家、生物學家以及電腦科學家都已經改變演算法,在這批顯卡上運行。 這僅僅只是雲讓我們更方便地嘗試新架構的一個例子。
這些特殊的電腦裝置也不是任何時候都需要特殊的硬體設備。 好多雲--包括Amazon、Joyent、Windows Azure等--提供特別的Hadoop設備來滿足狂熱的需求。 他們協調基礎的運營系統、優化JVM,性能更加卓越。 Joyent聲稱他們的設備速度比之前快3倍。 真的嗎? 這取決於你命令設備做些什麼。 如Amazon,在這部分,推出一種可以直接以Hadoop工作、説明獲取備用機時間的雲設備。
還有其他一些特徵,于我而言最終無關緊要。 有些雲性能表現更優異,更安全。 最開始它們吸引了我,但之後我就對此不再關注。 瞭解設備的整體組裝益處多多,但多數開發者需要侵入他們自己的統計資料以更清楚的瞭解設備組合的輸送量。 客戶需求可能變化無常,儘管如此,其他額外的性能特質也許才是客戶需要的。
其他類似的性能最後可能更加重要。 雲上的一些最新特徵使自動化設備大軍更方便,然後一點點的改變每一個設備的配置。 Amazon雲允許客戶以同樣的形象創建數百個新機器,然後配置資訊,允許每台設備自我修改,無需再單獨地登陸到每台設備並配置相關資訊。
類似這種的性能的價值主要取決於運行的工作類型。 如果你的設備僅用於統計資料,各項特徵間差異不大。 但如果你想安裝和拆卸大型機組,自動化配置的能力十分重要。 對類似這種的性能的更多支援的期望支配著人們的選擇,他們的工作是處理偶爾爆發的大資料。
最適合你的雲
如果有一門可以展示以上所有的課程,那肯定是答案永遠不會被削減,毫無水分。 你最便宜的設備,對我而言可能不是最便宜;你的最佳頻寬成本計畫也許對我來說有些昂貴;基礎標準隨著資料存儲的價格而變化。 在做出決定前,我們都是被系統逼迫著耗時耗力處理資料、運行測試。
這部分很有趣。 雲可能看起來像可以解決一串伺服器上運行的所有複雜問題,但供應商要做的是解決讓人困擾的所有難題,同時開放自由態度,允許客戶選擇其他不同的架構設施。 由於我們無需對備份生成件和機架容量產生過多擔心,企業選擇正變得越來越透明,也越來越便捷。 在花費數月時間在我那龐大的機器王國之後,我也僅僅只是意識到我還沒真正完成。