按照馮.諾依曼的電腦體系架構,電腦包括輸入,輸出,儲存,計算和控制五個部分,雖然到現在,電腦已經發展非常完善,但在體繫結構方面,還是沒有超出馮.諾依曼的這種結構體系,至少,我們依然可以用這種體系思想去思考電腦,而不管他是並行的,還是串列的,是複雜指令的,還是簡單指令的等等。這個體系架構也非常符合我們人類生產活動的本質步驟和內容(認知,處理(含控制),儲存,應用)。比如工廠,輸入的是原材料,輸出的是產成品,中間是加工和控制,當然我們還有原材料和產成品的儲存--倉庫;再比如我們典型的軟體系統,也同樣包括輸入(使用者錄入,資料擷取),輸出(使用者顯示,儲存系統),計算與控制(應用伺服器),儲存(檔案系統或者資料庫等)。如果我們在這個基礎在再總結一下,把運算與控制合并成一項,就叫處理,增加一個各個組成部分之間進行聯絡的通訊與控制紐帶--網路,那麼就構成如下的結構:輸入,處理,輸出,儲存和網路,如所示:
現在我們來回答電腦在幹什麼:收集資料,處理資料,輸出資料,儲存資料,而這之間的控制與通訊依賴於網路。其實上面的抽象還有一個作用,就是一台機器如此,那麼對於一個叢集應用網路而言,其實也如此,我們總可以將網路中的資源如此劃分,這樣做的好處其實就是設計模式中合成模式的好處,無論網路多大,規模多複雜,我們總可以一致表達和處理,比如對於儲存硬體而言,你是用一台電腦做存放裝置,還是用多台,你的作用都是完成儲存,對於軟體一樣,你是用資料庫做儲存,還是用檔案來儲存,你的作用同樣是完成儲存。對於網路是這樣,對於一個應用系統也是如此(軟體和硬體本來就是對立與統一的)。這種處理和思維方式,就是我們研究複雜系統的利器,比如ERP中的BOM結構,有的工廠的BOM很複雜,有的工廠的BOM結構很簡單,但無論
BOM結構多複雜,是兩層,還是三層,四層...無數層,無論你的子件只有一個還是有成千上萬個,我們都可以用一棵樹(某些情況下還會有一顆倒樹)來一致表達和處理。
回答了電腦在做什麼,其實也就回答了網路在做什麼。那這個東西與雲有關嗎?當然有,這其實也是雲端運算的基本體繫結構,電腦在做什麼,雲也在做什麼。無論怎麼變化,我們總可以用這種架構一致的對待它。有的人會說,有的情況下可能缺這缺那,但這不是問題,我們總可以認為它虛擬存在。為了這種一致表達和處理(合成模式的核心思想),我們既可以利用抽象來抽枝剝繭,也同樣可以無中生有來補項(本來沒有某種特徵,但我們可以認為或者虛擬認為具有這種特徵),來取得一定形式上的統一。這其實就是數學變換中的補項思想。
從這種一致化的思想,其實我們就可以將雲看做是網路,看做是電腦,因為從本質上來講,沒有什麼區別。區別的是分工的細化和專業化,比如原來儲存只是電腦的一個部分,現在有專門的電腦來完成這部分功能;而防火牆之類的也可以看著是一種處理器專業化的發展結果。而對於雲應用軟體,你也理所當然的可以將其看做是電腦,是網路,別忘了,軟硬統一的特性。
那麼既然雲端運算的可以看做是傳統的網路或者電腦,那麼為什麼我們現在要特別叫它雲呢?下一篇,我們就從電腦的應用和發展曆史,結合我們前面說的成本和收益來看這種概念的曆史演變。
PS:這裡,我也極力想向大家表達一種思想,就是在思考和對待一些問題時,我們應該在更高的高度來抽象的看待這些問題,採用一致化表達和處理的手段,來避免我們陷入問題的細節的泥潭(比如問題的規模,研究對象的非關鍵性差異等),當然,採用這種思想或者方法,也並不是不考慮這些問題(在很多時候,這些問題很是關鍵,比如規模問題),我們只是將這種問題延遲到更低的層次去考慮,從而使得我們的思維更具有層次性,有利於簡化思考的複雜度,這其實也是物件導向分析的核心思想。