一篇雲計算論文讀後感

發表於:2011-03-08 21:12 | 分類:轉載 閱讀:(21) 評論:(1) php

        剛看了一個關於一篇雲計算的論文的評論,也一樣是通俗易懂,既適合同行看,也適合非IT人士科普一下。故轉之,你們共賞。html

 

    評論對象的文章是:Above the Clouds: A Berkeley View of Cloud Computing(是一個技術報告,經過下面這個連接能夠下載:http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-28.pdf程序員

 

雲計算論文讀後感什麼是雲計算算法

 

我對雲計算這個概念總有一直抵觸心理。總以爲是炒做。背後沒什麼技術含量。前段時間朋友推薦給我一篇有關雲計算的論文,是伯克利大學計算機系幾位學生髮表的,一直也沒當回事。直到上週去日本出差時才靜下心來看看。原覺得是一篇學術性很強的文章,沒想到讀起來更像一篇MBA寫得的文章。文章標題爲Above the Clouds: A Berkeley View of Cloud Computing。或許能夠翻譯成雲之上:伯克利眼中的雲計算。能站在雲之上看雲,難免讓人有一種一覽衆山小的感受。也許高傲了一點,不過人家伯克利這點資本仍是有的。文章內容自己通俗易懂,但卻引起了我很多的思考。所以我忍不住也加入了這個炒雲團數據庫

該文自己章節分明,層次清晰。可是爲了便於把問題深刻討論(同時掩蓋一下我邏輯混亂的缺點),我斷章取義,列舉幾個我認爲重要的觀點,逐一討論。若是你想看清楚整個大象,我建議仍是直接閱讀原文。瀏覽器

 

一.      什麼是雲計算?安全

有關雲計算究竟是什麼的話題可能比天上的雲還多。該文的定義是,雲計算 = SaaS + Utility ComputingSaaS提供的是服務,而Utility Computing提供的是基礎設施(硬件,OS,軟件等)。這個定義看似有道理,但實際上等於沒有定義。由於你們對SaaSUtility Computing的定義自己就不統一。服務器

不過該文中的比喻仍是比較形象生動的。你們都知道,計算機芯片除了設計以外,離不開加工,鑄造這個環節。可是,在這個行業中,可以負擔得起加工工廠的公司屈指可數,例如Intel,三星等。只有這些巨無霸才能承擔得起30億美金的生產線。因而就孕育了半導體芯片代工(Semiconductor Foundry)這個行業,以臺灣的臺積電(TSMC)爲龍頭老大。這樣,那些沒有能力開工廠的公司仍然能夠作他們擅長的事:設計芯片。所以他們被稱之爲無廠半導體設計公司(Fabless Semiconductor Company),例如QualcommnVidia等。因而硬件行業被細分紅芯片設計和芯片代工兩大領域。芯片代工行業存在的理由是規模效應。當有足夠多的芯片設計公司對他們產生需求時,他們在工廠中的投資就能產生回報。反過來,因爲存在了芯片代工這樣的行業,中小公司也能夠沒必要初期投入大量資金建廠,而儘量將資源投入到芯片設計中。網絡

以一樣的思路推理,或許軟件行業未來也能夠一樣細分。某些大公司投入大量資本創建數據中心以及相關的服務。他們就是雲計算的乙方。而更多公司不須要本身去建數據中心,而是去租相關的服務。這些公司被稱爲無數據中心公司(「Datacenter-less Company」),是雲計算的甲方。架構

其實說白了,就是硬件外包。若是公司能夠把軟件開發外包出去,硬件爲何不能夠也外包出去呢?這個問題留在後面討論。咱們仍是回到雲計算的定義上吧。

我認爲伯克利幾位做者對雲計算定義精髓的其實就是外包。只不過外包一詞太不時髦了,甚至很土,沒有技術含量,很差意提而已。外包最大的好處在於不消耗本身的固定成本,使用量能夠隨着需求增加和增加,減小而減小。你看,SaaS就是以租賃軟件的方式取代採購軟件。而Utility Computing更是像用電同樣來用硬件,存儲等資源,而不須要事先採購它們。SaaS + Utility Computing,不是典型的外包嗎?

伯克利論文給出一個估計:數據中心的服務器平均利用率(server utilization)在5%20%之間。我以爲這個數據雖然聽起來有點難以想象,但和實際狀況很是吻合。至少我所在的公司是差很少這樣的。做爲一家互聯網公司,服務器的採購必定不能僅限於平常的併發量或訪問量,而要基於峯值。而峯值每每是平常值的好幾倍。這就致使在大部分平常狀況下,服務器是嚴重空閒的,資源嚴重浪費。這就比如是爲了知足高峯期間的需求,鐵道部決定整年365天天天都像春運同樣向全國提供最多的列車,最多的乘務員。結果天然是最大的浪費。但是互聯網服務有時候沒法預測哪天春運會到來,沒法提早準備。因而,雲計算就顯得特別有誘惑力。

 

二,雲計算的誘人之處

該文認爲從硬件的角度看,雲計算有3大好處。

1. 取之不盡的技術資源。這裏的取之不滿是相對而言的。這就比如對於我的用戶而言,發電廠的電老是用不完的。所以,雲計算的用戶沒必要爲資源而預先規劃。

2. 沒必要事先在硬件,軟件等上面投資。

3. 按使用量來收費。所以,雲計算的用戶與供應商直接的合同能夠是短時間。

 

其實以上3條能夠總結爲一句話:彈性計算能力和按照使用量收費。

各大公司利用雲計算來忽悠時,也基本上着眼於這裏。兜售雲計算服務的對象每每是公司的CTOCIO等人。對這些人來講,以上3點確實很是有誘惑力。我總結的緣由以下。

第一點是資源規劃。要知道技術規劃是很是難的一件事情。緣由是業務規劃每每不許確。若是資源真的是有彈性的,並且沒有限制的,那就沒必要作詳細的資源規劃了。反正何時須要,就何時購買。這不是和用電同樣嗎?何時須要開燈就開唄。多方便啊!說到底,技術部門不用再爲業務規劃不許確而買單了。多好的一件事啊!

第二點是初期投資。若是某個項目有潛力,有可行性,但初期投資比較高。這個項目就有可能由於風險太大而夭折。如今能夠不在初期進行投資,那何樂而不爲呢?

第三點是後期靈活。若是初期投資不大,並且不須要簽定長期合同,那麼公司均可以隨時改變決定,進行調整。

可是細細品味,就會發現一些問題。

首先,若是使用雲計算的緣由是不須要作技術規劃,那將是一件很危險的事。這個道理一樣能夠比喻作用電。若是一個公司或家庭認爲電資源是無限的,能夠隨便用用。不但可能會形成浪費,並且可能形成用電量過大而跳閘甚至火災等事故。所以規劃是必須的。

其次,若是每一個項目初期投資都很小,那麼極可能出現不少項目都被草率啓動。結果是生了不少孩子,而沒人養的情況。

最後,因爲後期很是靈活,致使需求不停地變動,對需求變動的管理成本大大上升。

咱們必須清醒地看到,雲計算確實能夠解決一些現存的問題。但它必將帶來一些新的問題。是否選擇雲計算服務實際上是在新老問題上作平衡。

上次從雲計算的誘惑之處已經看到了雲計算可能帶來的一些問題。但其實那些問題不是雲計算自己的問題。而是由於雲計算提供了更爲方便的服務,從而可能引起很差好規劃,草率開始項目,盲目需求變動等問題。

這就比如是在10-20年前,因爲計算機資源匱乏(名牌大學計算機系也不過只有幾臺電腦),程序編輯器閱讀不方便,編譯時間很長(編譯的時候抽支菸確定沒問題,甚至吃頓飯都來得及)等等緣由,老程序員每每會把程序寫在紙上,或者打印出來,修改過N遍之後再輸入到電腦中。因爲深思熟慮,這樣的程序每每質量很高。而如今電腦資源處處都是,編輯器愈來愈容易使用(容易到只須要輸入開始幾個字母,編輯器會自動補全函數名/方法名的程度),再加上編譯的速度飛快,程序員每每尚未把問題搞清楚就開始寫程序了。程序的質量天然高不到哪裏去。

因此問題不在雲計算,而是使用雲計算的人是否和過去同樣認真規劃,認真執行。

不過雲計算自身確實存在一些先天不足。

 

三,雲計算的問題

伯克利論文列舉了10個問題。我認爲如下幾個相對比較嚴重。

1.      數據被鎖定

當咱們把數據放到某個雲計算平臺上時,咱們必須有信心將來能夠把數據搬出來。若是數據遷移的成本很高,咱們就會擔憂數據被鎖定在這個雲計算平臺上。這就比如是把錢存到某個銀行很容易,但若是提出來很麻煩,或者手續費很高,咱們存錢的時候就會有顧慮。文章中提出的解決辦法是將數據接口的API標準化,不一樣的雲計算供應商都要按這個標準提供數據進進出出的接口。換句話說,就是讓存錢和取錢都十分方便。我認爲這是十分必要的。但還不夠。還須要第三方公司來作擔保。當雲計算供應商自身能力不夠時(例如倒閉時),第三方公司能夠保證咱們仍然能夠把數據搬出來。這和當銀行倒閉時,客戶存的錢由保險公司來返仍是同樣的道理。

2.      數據安全

大部分公司都不但願本身的數據被雲計算供應商看到。畢竟數據就是商業機密。可是這個問題比較棘手。當咱們把貴重的物品或錢存到銀行的保險箱裏時,銀行即便能夠看到它們,摸到它們,也沒法在不被客戶發現的狀況下拿走它們。拷貝實物或錢等於製造贗品或僞鈔,更沒有實際意義。而當咱們把數據放到雲計算平臺中時,它們能夠在咱們徹底不知道地狀況下被簡單地拷貝走,從而讓原始數據失去價值。伯克利論文的解決方案是數據加密。但我以爲這不必定能解決全部問題。加密並不能100%地保證數據不被解密。更況且加密對應用程序是一個很大的改動,是一件很消耗資源的工做。也許完全解決的辦法是沒有的。只能依靠對雲計算供應商的信任。一來信任他們不會本身盜取數據。二來信任他們能夠作好保安工做,不讓其餘人盜取數據。所以雲計算供應商必定是要有信譽和能力的公司。

3.      數據傳輸

作過數據遷移的人必定有感覺,當數據量大的時候,網絡每每會成爲遷移的一個重要因素。數據遷移項目的瓶頸頗有可能卡在網絡傳輸這個環節上。爲了更形象地說明問題,伯克利論文給出了一個假想案例。假設要從伯克利大學傳輸10TB的數據到亞馬遜公司所在的西雅圖市。在帶寬是20M/s的實際狀況下,須要45天的時間和1000美金的帶寬費用。可是若是經過快遞公司的話,只需用不到1天的時間和400美金的快遞費就搞定了。沒想到在互聯網如此發達的今天,居然是傳統物流以絕對優點取勝。因而該論文提出的3個解決方案分別是:1)經過傳統物流下降數據遷移的成本;2)千方百計把數據留在裏面來減小數據傳輸的必要性;3)試圖下降寬帶網(WAN)的帶寬成本。前兩點都是要雲計算用戶本身來解決。而第三點則要靠網絡設備的供應商來解決。看來都不是雲計算供應商本身能夠掌控的事情。不過這個問題雖然存在,但對於大部分用戶來說並不特別嚴重,由於通常的中小用戶沒有這麼大量的數據須要常常傳輸。

4.      性能問題

雲計算目前是創建在虛擬機(VM)技術之上的。然而衆所周知,VM技術雖然日趨成熟,但依然存在性能上的問題。特別是當多個VM之間相互競爭時,磁盤IO會成爲嚴重瓶頸。該論文提出的解決方案是從硬件架構和操做系統上進行提高,以及引入閃存技術。我認爲這個思路很是可取。計算機在過去幾十年的發展雖然很大,但其核心設計一直沒有大的改變。基本思路始終都是一臺計算機上運行一個操做系統。VM是大勢所趨。硬件和操做系統的設計也必須符合這個趨勢。同時,基於高速閃存技術的存儲技術也已經產品化。我在「蘋果公司創始人沃茲尼艾克加入創業公司」一文中提到過。性能問題是以上幾個問題中最有技術挑戰性的問題,但也是最有可能被完全解決的問題之一。

伯克利論文還提出其它幾個諸如可用性,可擴展性,大型分佈式系統中的測試等問題。縱觀雲計算的一些先天不足之後,個人觀點是雖然這些問題不容忽略,但解決方案仍是比較樂觀的。目前已經有一些雲計算的成功案例。我認爲在將來幾年以內,雲計算服務將成爲大部分IT公司考慮的方案之一。當軟件外包的一個高潮過去之後,計算外包的高潮也許很快就要來到了。

這篇論文的第一做者名爲「Michael Armbrust」。他應該是該論文的主要貢獻者。去Google上搜這我的名時,搜索條上竟然會自動把這個名字補齊,並顯示有31萬條結果。可見這哥們的人氣是至關的旺盛。(固然和小瀋陽比差得遠去了。小瀋陽在谷歌顯示的結果有17百多萬條。)一個學術界的小毛孩,至關不容易了。這哥們還有一個過人之處,就是經過對Google排序算法的實驗,當你搜索他的名字時,讓Google搜索結果的第一頁所有返回有關他的網頁。讓與他重名的人徹底在第一頁上露不了臉。真絕!找他作SEO,效果確定不錯。

圖片

Michael Armbrust,加州大學伯克利分校RADReliable Adaptive Distributed systems)實驗室的博士生。

這篇論文的署名還真多,居然有11位。學術界的人都知道,除非你是第一做者,不然無非是搭個順風車而已。不過這些人中卻有2位是鼎鼎大名。文章的分量所以而陡然增長。他們是David PattersonRandy Katz。這二人在1987年發明了RAID技術,在存儲行業無人不知,無人不曉。David Patterson寫的2本書「Computer Architecture: A Quantitative Approach」「Computer Organization and Design: the Hardware/Software Interface」,以及Randy Katz寫的「Contemporary Logic Design」一書都是美國大學和研究生院計算機系必讀的教科書。所以,他們在計算機這個行業裏基本上是家喻戶曉了。

圖片

David Patterson,加州大學伯克利分校教授,RAD實驗室主任

圖片

Randy Katz,加州大學伯克利分校教授

說了這麼一大堆,無非是想說明這篇論文的重要性,從而間接地說明個人觀點是有依據的:一個計算外包的高潮也許就要到來了。那麼咱們這些將來的雲計算使用者應該作哪些準備呢?

 

四,爲雲計算作準備

1. 應用程序要有可伸縮性。注意我這裏用的是伸縮性,而不是擴展性。咱們平時每每強調應用程序須要有好的擴展性,但不多強調收縮能力。大丈夫能伸能屈。大丈夫寫的應用程序應該也是同樣的。若是將來咱們的應用程序是按照計算量(例如CPU使用率,I/O使用率等等)來付費,那麼當用戶訪問量降低的時候,咱們必定要釋放這些資源,從而下降費用。這就和不在家的時候,把電燈都關燈是一個道理。否則多浪費啊。看看咱們如今的不少設計中,資源池(例如數據庫的鏈接池)這個概念已經十分普及了。可是真正可以作到伸縮自如的是百裏挑一。

2. 將來的客戶端程序須要更加聰明。當客戶端不能上網時,或者不能鏈接到服務器上時,仍然能夠容許客戶作部分工做。而如今的客戶端要麼徹底基於瀏覽器(例如絕大部分網頁),要麼過於依賴網絡(好比MSN,雅虎通等IM工具),一旦斷網,就幾乎沒用了。理想中的IM可以讓你不聯網的狀況下,仍然輕鬆地查看網友的聯繫信息,歷史消息等。

3. 因爲操做系統將逐漸被VM化,相應的系統管理技能和流程也須要改進。將來的系統管理員也許根本沒法物理接觸到他們管理的設備,全部工做都要經過遠程管理。那時候的系統優化也許是徹底不一樣的事情。

4. 公司裏的我的電腦使用者將再也不物理擁有本身的電腦。你的桌子上或桌子下面將再也不有那個又笨又大的主機箱。你有的無非是一個顯示器,一個鍵盤和一個鼠標。你的電腦資料被存在了某個VM上面,你不用再爲備份而頭疼了。世界或許將要輪迴到7080年代的X window時期。你們都是經過終端登陸到某臺主機上工做。

寫到這裏,我本身也不由有些吃驚。難道將來PC會消失嗎?可是看看如今上網本這麼流行,或許PC的末日真的不遠了。PC的發展孕育了互聯網。而互聯網的發展或許會消滅PC。這後面究竟是什麼?我真的很好奇。

若是雲計算真的發展到了那個不須要PC,計算資源和電同樣方便的時候,咱們恐怕早已經徹底適應了。如今的問題是當雲計算還不成熟的時候,咱們該不應去吃這個螃蟹?答案確定是沒有的。但願那些吃過螃蟹的人分享經驗。我也將盡量地分享個人經驗。