大約一年前,聯通范總寫了一篇《我所知道的云計算》,對云計算的各種新技術和理念進行了深入淺出地解讀。
這一年來,云計算發展得風起云涌,有了很多變化。經過最近一段時間的全面學習和思考,我也手癢寫一篇自己的理解。其中很多觀點比較極端,算是拋磚引玉,給大家立個靶子。
要說的核心是:世上本沒有云,說的人多了,云山霧繞,人云亦云,于是云計算就成了趨勢。
硬件的演變
大家已經習慣,用軟件和硬件,來對計算機的構成部分進行區分。
籠統來說,硬件是為計算機系統提供的物理平臺,軟件則是在硬件平臺上,呈現出各種各樣的功能。二者既有分工又協同發展,構成了紛繁復雜的計算機世界。
我還記得,大學時在51單片機上做開發,相對于BASIC和FORTRAN,C語言是當時最先進的編程語言。技術高手用匯編語言來做開發,雖然掌握起來難度大,但操作的對象是寄存器或存儲器,因此執行速度特別快。
那個時候,硬件資源稀缺而昂貴,如果能節約幾行代碼,少幾分資源損耗,都能直接體現巨大的價值。
之后的發展,主要是由硬件廠商驅動,但發展的模式卻恰恰是通過發展軟件,來提升硬件的競爭力。
一方面,操作系統的發展,在降低軟件開發門檻的同時,使系統軟件和硬件緊緊捆綁在了一起;另一方面,硬件廠商也利用平臺的主導地位,打造出適合于不同類型應用的硬件平臺。
比如銀行業廣泛采用的大型機、容錯機,就是提供了一個穩定可靠的運算平臺,雖然很貴而且資源冗余,但是穩定性可靠性堪稱完美;再比如NCR的數據倉庫解決方案,也是軟硬件一體的,在數據分析方面表現出眾。
各種計算機硬件都有相對的應用場景,尤其在上個世紀中后期,各類硬件平臺不斷進步,體積越來越小,容量越來越大,集成度越來越高,性能越來越強大。
當然,由于UNIX小型機在開放性、穩定性以及成本等方面的綜合性能最佳,因此成為應用范圍最廣的計算機系統的硬件平臺。而PC服務器雖然成本低,但因為穩定性差、故障率高、性能低等缺點,很難進入企業和大規模計算領域。
在這個過程中,發展動力主要來自兩個方面:
一是摩爾定律,集成電路的突飛猛進,推動了硬件平臺的發展,各類服務器都不斷推陳出新,幾乎每年都會推出性能更好、價格更低的新產品;
二是IT系統初建的浪潮,各單位都在發展IT,用計算機系統取代手工作業,從無到有紛紛建起來的IT系統,可謂百花齊放。由于各類應用存在差異,穩定性、安全性、業務連續性等方面的要求都各不相同,所以各種硬件都有非常好的市場空間。
說到這里,我還想到一個插曲:早些年,有人說美國為代表的海外IT系統,用的都是幾十年不變的硬件和軟件,表現同樣很穩定;而國內總買最好、最先進的硬件設備,這不是亂花錢么?
在我理解,兩者只是IT的發展階段不同:國內IT企業發展快速,尤其是用戶規模和系統復雜度遠超海外運營商,所以用最新最好的服務器并沒有錯。而海外的IT初創階段比國內早得多,如果系統能力滿足,需求變化不大、變更成本又高,確實沒有必要頻繁更新設備。
所以,當美國互聯網再度興起,就對IT提出了新的需求,為云計算等一系列新科技的生長提供了土壤。
互聯網是在通信和計算機網絡的基礎上成長發展起來的,而互聯網的發展又給通信和計算機領域帶來了機遇和挑戰。
一個典型的例子,就是相對于傳統的計算機系統,互聯網需要更大規模的運算能力的同時,還希望盡可能地降低成本,所以X86服務器大行其道。
單機性能低,怎么辦?靠軟件堆。硬件不穩定,怎么辦?靠軟件來補。需求變化快,怎么辦?靠軟件改。云計算領域的諸多技術,就是這么被逼出來的。
互聯網的初創企業都是省錢的高手,恨不得一分錢掰成兩半花,因此鐘愛于性價比最低的IT平臺,上一輪次的受益者是SUN。而今,X86服務器逐漸成為新一代互聯網公司的標配,一家沒有那么多銀子買機器,就以互聯網的共享模式,根據實際需要租用計算能力和存儲資源,這也正是催生云計算出現的源動力。
與此同時,“省錢”促成了開源技術的繁榮。從技術角度看,開放源代碼,通過社區交流逐步完善,這些都是非常符合互聯網發展思路的行為;但從商業角度看,免費的開源軟件嚴重影響傳統IT企業的經濟效益,也抑制了傳統IT企業的創新動力,讓傳統IT產業雪上加霜。
在諸多硬件流派中,X86擁有的成本優勢無人能及,自然成為云計算技術的重點發展領域,互聯網飛速發展產生的推動力,主要給了X86平臺;而其他硬件由于規模大、成本高,變化空間有限,并沒有多少互聯網企業愿意在這上面做創新。
幾年時間下來,大型機依靠安全穩定方面的優勢堅守傳統地盤,一部分小型機與軟件深度整合發展為一體機,而更多的硬件廠商放棄了自身的發展計劃。
未來的IT系統,尤其是新建系統新建能力,只能在一片片的X86服務器的基礎上成長。對于絕大多數應用場景來說,將來除了X86,或許不再會有別的硬件平臺可供使用。
云計算技術
基于同樣的X86服務器,各家的玩法不同,催生出了不同的云計算技術。
最為大眾熟悉和接受的,是虛擬化技術。所謂虛擬化,主要是將龐大的、完整的硬件資源(包括計算、存儲等)分割成為較小的單元,并具備動態調整小單元的能力,如果虛擬化用得好,就可以靈活分配和及時調度計算存儲資源,提高資源利用效率。
值得一提的是:虛擬化技術并不為X86所獨有。事實上,在小型機上部署虛擬化軟件,是目前IT系統經常采用的模式。
這是因為,單臺小型機擁有的資源比X86多得多,因此在資源利用率提升方面,在小型機上部署虛擬化,往往比在X86上部署效果更好,甚至比X86具有成本優勢。
比如運營商現在的系統,就是以小型機為主體,很多小的應用都跑在小型機的虛擬化軟件上。
只不過,未來系統以X86為主體,就不再需要在小型機上部署虛擬化軟件,更多的虛擬化場景都會轉移到X86上來搞。所以,小型機的虛擬化場景會越來越少,剩下的小型機將主要是滿足大的計算需求。這也就是說,傳統小型機逐漸萎縮、退出,只是時間問題。
虛擬化技術是將大資源劃小,那么,如何將小的資源,組合成大規模運算的平臺呢?這就需要另一類云計算技術:分布式運算。
為什么說這是一類技術?雖然各家需求不一樣,應用場景不同,采用的技術和策略也大相徑庭,常規的網格計算、集群,以及很多互聯網企業的專用技術,看似五花八門,其實萬變不離其宗,解決的問題,都是如何將小的計算資源,組合成為大規模運算平臺。
雖然目前虛擬化+X86的模式應用最廣,但并非所有的云計算都基于虛擬化技術。其中最典型的就是Google。
作為提供搜索服務的互聯網企業,谷歌需要解決的問題完全用不到虛擬化技術,相反,部署虛擬化軟件將降低系統運行效率,增加成本。
因此,Google基于自己的需要進行定制化開發,先是做出企業自用的Map/Reduce和NDFS,又在此基礎之上形成了經典的Hadoop平臺,由“自研”到“自用”再到“產品化”,令人欽佩。
在此基礎上,谷歌持續創新,乃至引發了“容器”技術革命以及Kubernetes的狂飆突進,這是后話,暫且不表。
前面提到,受互聯網帶來的沖擊,傳統硬件平臺的衰退勢不可當。但使用低成本的X86和免費的開源軟件做出來的系統,在安全性、穩定性、資源調度與管理、系統開發復雜性等方面,就需要做更多的工作,必須通過各種工具軟件和配套的管理來解決。于是,很多新技術應運而生。
評論
查看更多