1. 程式人生 > >談談我對雲端計算的認識之基本概念(一)

談談我對雲端計算的認識之基本概念(一)

雲端計算這個概念估計已經對於IT人士來說,估計已經是爛大街了。但對於外行來說聽起來還是挺模糊的,好像和天上的雲有啥關係似的,考慮到部分對雲端計算不太瞭解的人,我這裡大概說一下基本概念。

什麼是雲端計算

雲端計算是一種基於網際網路的運算,在其中共享資源、軟體和資訊以一種按需的方式提供給計算機和裝置。這些服務被劃分成三個層次:基礎設施即服務(IAAS)、平臺即服務(PAAS)、軟體即服務(SAAS)。它們落實到底層軟體上面如下圖所示:
雲端計算層級結構
IAAS提供一個完整的作業系統執行環境,完成OS以下全部東西,提供虛擬的CPU、記憶體、虛擬網絡卡和虛擬磁碟等,提供作業系統執行的完整的虛擬硬體環境。最出名莫過aws,國內也有像阿里雲、騰訊雲等IAAS運營商,提供計算、儲存和網路服務,開軟軟體平臺有openstack、cloudstack、eucalyptus和opennebula等,當然在社群活和廠商支援下openstack是當下最火的一個管理平臺,在後面的blog中會詳細介紹。PAAS是最近一兩年比較火的一個概念,其實google的App Engine已經做了很多年了,它是一個託管雲,使用者按照它定義的規範在上面開發,使用它的程式設計框架和資料庫等服務,其實最近PAAS比較火還必須得力於當下另一個東西就是容器,在國內Docker似乎成了容器的代名詞,容器技術的發展推動了PAAS,當下開源的平臺包括kubernetes、mesos+marathon、swarm、rancher等各種容器管理平臺,這些平臺或多或少都具有PAAS平臺部分特點,但還不能完全稱得上是PAAS平臺。最後一個是SAAS,它一般是基於瀏覽器的,提供應用服務,終端使用者無須關心資料的儲存以及作業系統,由於PAAS到現在還沒有具體案例,我用下面這個圖介紹了
PAAS


企業不需要單獨購買office軟體,在瀏覽器中就可以編輯office並儲存到雲端而且還可以共享,狹義的理解,如果做到極致應該是使用者的電腦只需要一個瀏覽器就可以完成所有的辦公,使用者電腦不需要高效能CPU和大儲存的硬碟,本地沒有任何資料。綜合上述,我覺得雲端計算的發展必須有兩個條件:第一是足夠的頻寬,如果沒有通暢網路就不能及時使用雲;第二是快速的硬體,只有在硬體有富餘的情況下才有必要雲化,試想一個已經滿負荷的高效能運算場景去雲化只能是浪費資源,畢竟雲化軟體(主要是虛擬化軟體)本身也是消耗資源的。

雲端計算分類

雲端計算的分類有很多種,可以按照使用者群體劃分為行業雲,如:金融雲、教育雲;我個人更傾向按照使用者和提供者的方式劃分為:公有云、私有云和混合雲。
公有云就是像亞馬遜一樣提供給全球雲端計算服務,使用者再也無須關心機器運維,在亞馬遜資料中心裡面的一臺伺服器可能執行著不同國家的使用者的雲主機,不得不說亞馬遜實際上已經成為公有云的一個標準。私有云是為企業內部構建的雲環境,需要企業有自己的運維人員維護這套雲環境,但對企業內的使用者是透明的,這種環境往往是建立在防火牆之內的,不和其它企業共享資源,這種雲一般對安全要求高,如金融企業。混合雲就是既有私有云也有公有云,當前應用場景並不多,部分公司會將自己的公共服務放到公有云中,如:培訓系統、分享系統,而關乎企業重要資料的放到私有云中。

相關概念

其實雲端計算不是突然冒出來的一個概念,它之前已經有很多相似的構想以及相關理念了,就像lxc在Docker之前很多年就已經提出有了。
平行計算
平行計算是是大化小,就是將一個大的複雜的任務拆分成多個小簡單的任務,分發到不能機器上面並行執行。關於並行和併發簡單的理解就是:並行是軟體層面提供,併發是多核同時執行,詳細的在以後慢慢細說。平行計算一般用於科學計算如:石油探測、模擬模擬等因此屬於高效能運算的範疇。常見的平行計算結構包括共享儲存的對稱多處理器SMP、鬆耦合的工作站叢集COW以及分散式儲存的大規模並行機MPP,平行計算需要演算法支援,需要解決任務排程以及任務間如果通訊等問題。平行計算往往是單資料中心級別的,如國內的天河或者太湖之光等在一個數據中心聚集幾萬臺機器,而云計算的資料中心往往是互通的,亞馬遜在全球有多個數據中心,並且一個數據中心有個多個zone,保持物理隔離,防止因機房斷電等造成服務不可用。下圖是一個平行計算任務執行的示意圖
平行計算


網格計算
大家可能對網格計算比較陌生,這個概念比較老。他是將不同型別的資源進行整合,提供一個大的計算機。有個專業的解釋:通過利用大量異構計算機(通常為桌上型電腦)的未用資源(CPU週期和磁碟儲存),將其作為嵌入在分散式電信基礎設施中的一個虛擬的計算機叢集,為解決大規模的計算問題提供一個模型。所以網格計算更強調是網路連線各種資源,提供一個虛擬叢集,而云計算並不關心任何計算模型,一個雲平臺可以供多個使用者使用,而且一個使用者可以有多個獨立的系統。