近日,云計算、大數據領域可謂風起云涌,各種聲音與活動極為頻繁??偨Y看來,大家主要是在表達這樣的幾種觀點:云計算即將成為IT運營的主體模式;云計算不但會成為公眾與小微企業的IT主體,并且即將推翻并取代垂直行業的現有IT體系;云計算的技術手段是以“小變大”的分布式架構(也是所謂的大數據技術架構)為主體,它即將以穩定、低成本的表現在各個領域取代傳統IT基礎設施。
乍看起來,這些意見既符合未來趨勢,又有各方云界英雄們過去的不俗成績為后盾,的確是很容易讓人信服的,并且比以往任何時候都顯得更加實在。但是,在各種關于云計算、大數據的令人振奮、符合時代趨勢的業務戰略背后,依然是以“小變大”分布式架構一統天下的技術策略作為支撐。
從業務上講,云計算將使IT運營模式發生翻天覆地的變化,的確可以算是“浩浩蕩蕩的世界潮流”。而拋棄產品銷售模式,向“以服務為中心”的模式轉變也是全球各級IT供應商應該盡早考慮的戰略。這些都無疑是正確的,但是不是就等同于“小變大”的分布式技術架構已經達到了無往不利、能夠有效替代現存所有技術架構、滿足所有技術需求的地步呢?
這樣的從業務戰略到技術戰術的推導似乎并不符合邏輯。眾所周知,分布式并不是一個新東西,為什么突然就能一統天下了呢?看來,這個問題還是不能簡單地隨風而動,人云亦云,需要進行認真的考慮與分析。
業務:云天萬里競自由
關于云計算轟轟烈烈的新氣象,有兩點筆者是完全贊同和佩服的。
一是關于云計算將成為未來社會IT運營模式主流的論斷。相信未來有一天,基于云計算的服務必將會成為人類社會消費IT基礎設施、平臺乃至應用軟件的主體模式。而位于云計算體系中包羅萬象、互聯互通、安全智能的數據,其實也就是真正意義上的大數據;
二是云界英雄在云計算新一輪的浪潮中提出的各種發展戰略、業務策劃等,也是非常明智的,它們要比若干年前關于云計算的吶喊實在得多。其中很多行動、規劃與舉措,都是站在時代發展的前沿與主干道上,無疑都將是引領未來的正確設想。
一句話,對于云計算業務來講,正可謂是云天萬里,前景無限!
技術:長劍僅百尺
“小變大”技術策略已經具備足夠的能力顛覆現有的IT體系了嗎?有一個現象值得我們注意:云界大佬們在提出各種云計算業務戰略的同時,又強烈地表達了這樣一個論調:“小變大”的分布式技術架構將完全顛覆現有IT體系。但深入分析就會發現,從云計算的運營模式并不能嚴密地推導出這樣的結論。云計算無疑是業務模式、IT運營模式的顛覆,但從這一點并不能得出某種技術方法也是所有IT技術顛覆者的結果。
如果將目前用于云計算的分布式技術的現狀全部拿出來,與現有的IT技術體系一一對應的話,我們很快會發現,如果要全部顛覆,實在是難以成行的。而這種一一對應來證明某種觀點的方法,雖然也有說服力,但過于具體,其高度、抽象度與理論性還不夠強。這也是本文想重點強調的,分布式技術架構還不能作為所有IT技術顛覆者的根本原因,并不是因為某一個具體的場景不能滿足,而應是:至今為止,計算機體系架構并沒有發生顛覆性的改變。
眾所周知,現代計算機體系架構,從紙帶時代進入磁盤時代、從電子管時代進入到硅電路時代以后,無論CPU如何升級,網速如何提升,都一直保持著同樣的體系:一臺計算機內,CPU、內存、磁盤等部件被總線與其他接口連接起來;而在計算機之間,則由網絡連接起來。現階段,主要是以太網和TCP/IP協議。
多年以來,影響計算機效率發生顛覆性質變的關鍵,無非就是兩點:一是磁盤的效率,二是網絡的速度。我們可以發現,對于極為高速的單臺大型設備,其內部一定設計有類似內存的緩存架構,同時一定也采用了“分布式”的思想與架構。但其在絕大多數情況下,它們并沒有采用應用開發者所熟悉的通用“網絡”來連接分布的部件,IBM大型機、多CPU的PC機都是如此,甚至采用MPP(大規模并行處理)架構的TeraData也設計了自己的網絡互聯技術BYNET。
長年從事通用網絡編程的朋友們也應該明白,這么多年了,兩臺通過網絡互聯的計算機之間,在最底層的IPC編程層面,永遠都是Socket編程那一套,連函數都沒有發生改變,Internet、消息、SOA、WebService、RPC、Hadoop、NoSQL之類,到了分布式通信編程的底層,都是一樣的玩意,沒有什么新東西。
那有人會問,照你這么說,這么多年還都沒有發展了?當然不能這樣講,但公平的說,計算機應用及應用支撐技術現代以來的發展(包括云計算技術在內)(+微信關注網絡世界),都只是在現有的技術體系上做得越來越好、越來越巧妙,這些工作依然是偉大的,但絕對不適合使用“顛覆”這一詞匯。
另外,采用“小變大”的分布式架構,使用內存與緩存,其實是由來已久的技術策略,準確來講,已經有了幾十年的歷史。就連我們感覺老舊的IBM大型機,其實也采用的是這樣的架構。當然,本文所說的“小變大”與“分布式”,是專門指x86機器采用標準計算機網絡互聯。而多年以來,很多問題一直不適合在傳統網絡連接的分布式架構中實現(例如OLTP中的事務),而在大型機這樣的分布式架構卻可以實現的原因也就非常明了了。還有一個要素也很重要,那就是阿姆達爾定律用數學公式精確地告訴我們:“若串行代碼占整個代碼的25%,則并行處理的總體性能不可能超過4”,無論您的設計編程技能有多么高超!很明顯,并不是所有的問題都是并行處理的優勢所在。
也就是說,如果從技術角度看,目前云計算似乎很難做到“倚天抽長劍,而縱橫天下”。
不顛覆也偉大
筆者從這個角度出發來看問題,其實是想告訴大家:任何技術性的顛覆,一定需要堅實的理論基礎。正如如果沒有愛因斯坦的E=MC2在科學理論基礎上的顛覆,就不可能有原子彈在工程制作上的成功。
當然,有人會說,關于分布式計算機互聯的網絡通信問題我不與你爭辯,但近年來內存對磁盤的挑戰,總算是一個小小的顛覆吧?這一點當然是正確的,但云計算技術策略的問題是:要用多個“小”采用計算機網絡組成一個“大”。我們先不說內存技術對磁盤技術的顛覆目前尚無結論,核心的問題在于:根本性的技術顛覆,并沒有發生過。
D1Net評論:
假如現有的計算機體系架構,包括分布式網絡通信架構,沒有發生質的改變,云計算在技術上就很難實現真正的顛覆。云計算本是一種劃時代的業務模式與IT運營模式,為什么一定要與某種技術緊緊綁定呢?似乎從邏輯上、現實上講都沒有必要。我們是不是應該放開眼界,采用“適合就是美”的策略來建設和運營云呢?如果這樣,即使沒有技術顛覆的結果出現,偉大的云計算模式也一樣可以成功。