最近,大公司如MS、Google、IBM等都在炒作一個概念就是雲計算,如IBM跟歐盟 合作開展雲計算,歐盟撥款1.7億萬歐元;Google與IBM 聯合力推雲計算模式;Yahoo! 也把寶押在了雲計算上;我國也在無錫 跟IBM公司聯合建立了一個雲計算中心;有人說微軟收購Yahoo! 一個重要的考慮就是在Yahoo在雲計算方面的領先地位,多少有點兒道理。 那麼,什麼是雲計算哪? 我看到有一位推廣自由開源的老先生把雲計算(Cloud Computing)翻譯成「雲霧計算」著實是可笑,好多網友也在問什麼是雲計算,什麼是霧計算,說明好多人對於雲計算是一頭霧水。 雲計算可不是「雲雨」,可不是雲山霧罩。
「雲計算」(Cloud Computing)是分散式處理(Distributed Computing)、並行處理(Parallel Computing)和網格計算(Grid Computing)的發展, 或者說是這些電腦科學概念的商業實現。 許多跨國資訊技術行業的公司如IBM、Yahoo和Google等正在使用雲計算的概念兜售自己的產品和服務。 雲計算這個名詞可能是借用了量子物理中的「電子雲」(Electron Cloud),強調說明計算的彌漫性、無所不在的分佈性和社會性特徵。 量子物理上有「電子雲(electron cloud)」,在原子核周圍運動的電子不是一個經驗世界的軌道例如像天體一樣的運行軌道,而是彌漫空間的、雲狀的存在,描述電子的運動不是牛頓經典力學而是一個概率分佈的密度函數, 用薛定諤波動方程來描述,特定的時間內粒子位於某個位置的概率有多大,這跟經典力學的提法完全不同。 電子雲有以下特性,概然性、彌漫性、同時性等等,雲計算可能的確是來自電子雲的概念,前今年就有所謂「無所不在的計算」,IBM有一個無所不在的計算叫「Ubiquitous 「,MS(Bill)不久也跟著提出一個無所不在的計算「 Pervade「,現在人們對無所不在的計算又有了新的認識,現在說是」Omnipresent 「。 但是,雲計算的確不是純粹的商業炒作,的確會改變資訊產業的格局,現在許多人已經用上了Google Doc和Google Apps,用上了許多遠端軟體應用如Office文書處理而不是用自己本地機器上安裝這些應用軟體, 以後誰還會花錢買Office軟體哪? 還有許多企業應用如電子商務應用,例如要寫一個交易程式,Google的企業方案就包含了現成的範本,一個銷售人員根本沒學習過Netbeanr也能做出來。 這種計算和產業動向是符合開源精神的,符合SaaS(Software as a Service)趨勢。 現在有這樣的說法,當今世界只有五台電腦,一台是Google的,一台是IBM的,一台是Yahoo的,一台是Amazon的,一台是微軟的,因為這五個公司率先在分散式處理的商業應用上捷足先登引領潮流。 Sun公司很早就提出說「網路就是電腦」是有先見之明的。
有以下五個主要原因使得分散式運算必然會越來越普遍,逐漸發展成主流的計算模式而取代集中式的大型電腦:
現在分散式系統的第一個原因就是因為他具有比集中式系統更好的性能價格比。 你不要花幾十萬美元就能獲得高效能計算。 多數應用本身就是分散式的。 如工業企業應用,管理部門和現場不在同一個地方。 高可靠性。 冗余不僅是生物進化的必要條件,而且也是資訊技術。 現代分散式系統具有高度容錯機制,控制核反應爐主要採用分散式來實現高可靠性。 可擴充性。 買一台性能更高的大型機,或者再買一台性能相同的大型機的費用都比添加幾台PC的費用高得多。 高度靈活性。 能夠相容不同硬體廠商的產品,相容低配置機器和外設而獲得高性能計算。
粗略地計算,目前的個人電腦每個CPU晶片的處理能力是200MIPS,就是每秒種執行200M也就是兩億次指令,而最近Yahoo! 公司報導他們已經實現了有一萬個節點(node)就是一萬台PC電腦連接的分散式系統,總的處理能力是 2,000,000MIPS,最快的晶片也達不到這個速度,因為在一定面積上設計的晶片的速度是存在一個極限的,不可逾越。 而當前世界著名的超級電腦所謂的TOP500,達到每秒幾百萬億次指令執行,都是採用分散式設計的,世界第一的IBM BlueGene超級電腦採用了32部機架,每部機架部署有768個PowerPC440 CPU。 順便說一句,這TOP500基本都是使用Linux作業系統的! 現在社會和家庭擁有的個人電腦就是PC,只有30%的計算能力被利用,甚至更低,而其餘70%的實際上是被閒置的,這些閒置的電腦資源和計算能力只有通過分散式系統才能得到有效的利用,這樣可以大大提高一個國家的計算能力, 而計算能力是衡量一個國家國力和科學研究能力的指標,這一點現在還沒有被國人充分認識到。 一個國家和地區的計算能力現在已經成為一種重要的戰略資源,不亞于石油和其他戰略物資的重要性。 雲計算就是把普通的伺服器或者個人電腦連接起來以獲得超級電腦也叫高性能和高可用性電腦的功能,但是成本更低。 這在世界上也是個先進的專案。 雲計算模式必定能大大提高我國科學電腦和商業計算能力,使得我國經濟競爭力大大提升。 美國和歐洲有許多社會分佈的分散式運算系統,他們動員和使用這些社交運算能力進行人類基因組學(Genomics)的研究、天文學問題研究、數學難題研究以及其他的科學問題研究。 去年的一個研究報告估計我國個人電腦PC保有量接近兩億台。
按照電腦作業系統的宗師Andrew S. Tanenbaum(AST)給分散式系統的的定義:「分散式系統是這樣的系統,它運行在不具有共用記憶體的多台機器上,但在使用者的眼裡卻像是一台電腦」。 (引自《現代作業系統》,機械工業出版社,1999年中文版)。 它的目標是讓每個使用者感覺聯網的電腦是一個分時系統——就像使用個人電腦一樣 ——而不是一個由許多電腦聯合起來的集體,即使由五個節點組成的分散式系統也應該讓使用者感覺自己是在使用一台價值20萬美元的大型電腦, 唯一不尋常的感覺是處理速度提高了許多,別的沒有什麼不同。 例如,這裡有一個簡單的例子,在機器A的使用者要使用安裝在機器B上使用者的目錄裡的檔,A使用者要使用遠端登入命令rlogin B登錄到機器B的目錄上,那麼這就不是一個真正的分散式系統,因為使用者A意識到了另外一台機器的存在, 分散式系統必須要做到,使用者A登錄到一個目錄上的時候不知道自己是在本地機器上還是在遠端機器上的目錄上,對於使用者A來說機器B是透明的,這就是分散式系統設計時考慮的「透明性」要求。 其他有關的問題包括:分散式檔案系統的問題,目錄和檔存取機制以及一致性問題,分散式系統進程的通信問題等等。 目前的雲計算嚴格說還沒有到達真正的分散式運算的語義學水準。