天天看點

“雲計算”和“虛拟化”的差別

摘要:所有你搞不懂的技術術語、專有名詞背後,都會有一個不是技術領域的需求,這個需求才是你需要首先了解的“根本性需求”,而隻有你認識到這些“非技術領域”的問題(或者叫需求),才能算是對這個領域真正開始入門了。

所有你搞不懂的技術術語、專有名詞背後,都會有一個不是技術領域的需求,這個需求才是你需要首先了解的“根本性需求”,而隻有你認識到這些“非技術領域”的問題(或者叫需求),才能算是對這個領域真正開始入門了。

我們平時一直在口頭談起的“雲計算”和“虛拟化”究竟指的是什麼呢?

簡單來說,雲計算是一個概念,而不是具體技術。虛拟化是一種具體技術,指把硬體資源虛拟化,實作隔離性、可擴充性、安全性、資源可充分利用等特點的産品。

cpu虛拟化的技術包括intel的vt-x,amd的amd-v。虛拟化的軟體有vmware,hyper-v,xen,kvm,openvz等

目前雲計算,大多是依賴虛拟化,通過把多台伺服器實體虛拟化後,構成一個資源池,實作共同計算,共享資源。也就是現在所謂“雲計算”,其實這個詞提出來之前,過去的“伺服器叢集”就已經實作這些功能了,隻不過沒有現在那麼先進而已。

那麼,虛拟化技術與現流行的大資料hadoop技術有什麼差別,解決的是一類問題麼?

虛拟化主要解決資源使用率,資源提供的自動擴充。有伺服器(compute)虛拟化(kvm/xen/lxc等),存儲虛拟化,網絡虛拟化。原來的資料中心伺服器整合就利用了大量的虛拟化。現在的雲計算模式也以虛拟化技術為基礎,特别是iaas層。但雲計算本質是效用計算,按需付費,是以saas也可以不基于虛拟化來實作。

hadoop就是用來解決google類似的大資料的分析引入的計算架構。(mapreduce和分布式存儲)。你可以把這些東西放在虛拟化環境裡的。

虛拟化技術是否都适用于并行計算,分布式大資料存儲和檢索?

這裡得區分是“什麼的”虛拟化。如上,有伺服器虛拟化,存儲虛拟化,網絡虛拟化。現在流行軟體定義網絡,軟體定義存儲,廣義的說,這也算是虛拟化技術的應用。

并行計算是一種計算模式。可以基于虛拟化技術來實作。lerlang就是采用vm的方式來表示多程序。但是也可以在硬體上實作。

虛拟化技術和雲計算這兩個概念對應的現實環境中的問題是不同的。

虛拟化技術(尤其是桌面虛拟化),主要的目的是:

提高硬體資源的使用率。

提高運維、管理的效率。

雲計算(尤其是hadoop)的主要目的是:

在合理的時間内,對海量的資料進行分析,找出背後的規律和趨勢。

對于這種概念,最忌諱的就是死記硬背,因為那樣你很快就會被一堆的專有名詞、英文縮寫所淹沒。

雲計算是一種服務;虛拟化和分布式系統都是用來實作雲計算的關鍵技術之一。

雲計算通常可能從兩個方面了解:

一是将it作為一種服務的業務模式,如aws、阿裡雲,其目标是讓it未來像水和電一樣随時随地、簡單友善的使用,并按使用量收費;

二是it自身的一種演進和優化,其目标是提高效率和降低成本,或者說用一種成本可接受的方式解決越來越複雜的業務問題,例如海量資料的存儲和分析、超高并發通路(如雙11或12306)等。

雲計算可以了解為一種租借式的服務,即你可以對it系統内部的原理什麼都不懂,也不需要買到手,但是随時可以使用公共的it資源為自己服務,比如baidu,比如qq,比如163郵箱。

虛拟化作為一種技術,可以幫助雲計算實作以上目标:資源配置設定更加靈活、資源使用率更高。同時技術成熟、對上層應用也基本不影響,是以被廣泛使用,甚至在很多時候虛拟化成為了雲計算的代名詞。

簡單講解之後,下面我們來深入了解一下雲計算:

雲計算 (cloud computing)是基于網際網路的相關服務的增加、使用和傳遞模式,通常涉及通過網際網路來提供動态易擴充且經常是虛拟化的資源。雲是網絡、網際網路的一種比喻說法。過去在圖中往往用雲來表示電信網,後來也用來表示網際網路和底層基礎設施的抽象。是以,雲計算甚至可以讓你體驗每秒10萬億次的運算能力,擁有這麼強大的計算能力可以模拟核爆炸、預測氣候變化和市場發展趨勢。使用者通過電腦、筆記本、手機等方式接入資料中心,按自己的需求進行運算。

“雲計算”和“虛拟化”的差別

  雲計算的特點:

(1) 超大規模

“雲”具有相當的規模,google雲計算已經擁有100多萬台伺服器, amazon、ibm、微軟、yahoo等的“雲”均擁有幾十萬台伺服器。企業私有雲一般擁有數百上千台伺服器。“雲”能賦予使用者前所未有的計算能力。

(2) 虛拟化

雲計算支援使用者在任意位置、使用各種終端擷取應用服務。所請求的資源來自“雲”,而不是固定的有形的實體。應用在“雲”中某處運作,但實際上使用者無需了解、也不用擔心應用運作的具體位置。隻需要一台筆記本或者一個手機,就可以通過網絡服務來實作我們需要的一切,甚至包括超級計算這樣的任務。

(3) 高可靠性

“雲”使用了資料多副本容錯、計算節點同構可互換等措施來保障服務的高可靠性,使用雲計算比使用本地計算機可靠。

(4) 通用性

雲計算不針對特定的應用,在“雲”的支撐下可以構造出千變萬化的應用,同一個“雲”可以同時支撐不同的應用運作。

(5) 高可擴充性

“雲”的規模可以動态伸縮,滿足應用和使用者規模增長的需要。

(6) 按需服務

“雲”是一個龐大的資源池,你按需購買;雲可以像自來水,電,瓦斯那樣計費。

(7) 極其廉價

由于“雲”的特殊容錯措施可以采用極其廉價的節點來構成雲,“雲”的自動化集中式管理使大量企業無需負擔日益高昂的資料中心管理成本,“雲”的通用性使資源的使用率較之傳統系統大幅提升,是以使用者可以充分享受“雲”的低成本優勢,經常隻要花費幾百美元、幾天時間就能完成以前需要數萬美元、數月時間才能完成的任務。

雲計算可以徹底改變人們未來的生活,但同時也要重視環境問題,這樣才能真正為人類進步做貢獻,而不是簡單的技術提升。

(8) 潛在的危險性

雲計算服務除了提供計算服務外,還必然提供了存儲服務。但是雲計算服務目前壟斷在私人機構(企業)手中,而他們僅僅能夠提供商業信用。對于政府機構、商業機構(特别像銀行這樣持有敏感資料的商業機構)對于選擇雲計算服務應保持足夠的警惕。一旦商業使用者大規模使用私人機構提供的雲計算服務,無論其技術優勢有多強,都不可避免地讓這些私人機構以“資料(資訊)”的重要性挾制整個社會。對于資訊社會而言,“資訊”是至關重要的。另一方面,雲計算中的資料對于資料所有者以外的其他使用者雲計算使用者是保密的,但是對于提供雲計算的商業機構而言确實毫無秘密可言。所有這些潛在的危險,是商業機構和政府機構選擇雲計算服務、特别是國外機構提供的雲計算服務時,不得不考慮的一個重要的前提。

講完了雲計算,我們再來好好說說虛拟化。

“雲計算”和“虛拟化”的差別

虛拟化是指通過虛拟化技術将一台計算機虛拟為多台邏輯計算機。在一台計算機上同時運作多個邏輯計算機,每個邏輯計算機可運作不同的作業系統,并且應用程式都可以在互相獨立的空間内運作而互不影響,進而顯著提高計算機的工作效率。

虛拟化使用軟體的方法重新定義劃分it資源,可以實作it資源的動态配置設定、靈活排程、跨域共享,提高it資源使用率,使it資源能夠真正成為社會基礎設施,服務于各行各業中靈活多變的應用需求。

它是一個廣義的術語,是指計算元件在虛拟的基礎上而不是真實的基礎上運作,是一個為了簡化管理,優化資源的解決方案。如同空曠、通透的寫字樓,整個樓層沒有固定的牆壁,使用者可以用同樣的成本建構出更加自主适用的辦公空間,進而節省成本,發揮空間最大使用率。這種把有限的固定的資源根據不同需求進行重新規劃以達到最大使用率的思路,在it領域就叫做虛拟化技術。

虛拟化技術可以擴大硬體的容量,簡化軟體的重新配置過程。cpu的虛拟化技術可以單cpu模拟多cpu并行,允許一個平台同時運作多個作業系統,并且應用程式都可以在互相獨立的空間内運作而互不影響,進而顯著提高計算機的工作效率。

虛拟化技術與多任務以及超線程技術是完全不同的。多任務是指在一個作業系統中多個程式同時并行運作,而在虛拟化技術中,則可以同時運作多個作業系統,而且每一個作業系統中都有多個程式運作,每一個作業系統都運作在一個虛拟的cpu或者是虛拟主機上;而超線程技術隻是單cpu模拟雙cpu來平衡程式運作性能,這兩個模拟出來的cpu是不能分離的,隻能協同工作。

目前來講虛拟化主要常用兩個核心技術:伺服器虛拟化,與應用虛拟化。

目前來講分布式系統主要用到的兩個核心技術:分布式存儲,與分布式計算。

我認為對虛拟化技術最好的定義就是可以讓it系統的實體拓撲圖與邏輯拓撲圖無關,即解耦。

我們暫時以商用虛拟化系統vmware舉例

為了實作拓撲解耦,它做的第一點就是讓一台機器可以同時跑多個作業系統,即虛拟機,而且虛拟機還可以在實體機間來回轉移,高可用,這樣我們的作業系統就從實體機上徹底解放出來了,你可以把同一個虛拟機随時放到其他實體機上,實作了對硬體的高效資源利用,和系統的高度靈活,解除了大量人工勞動,便于實作大規模系統的友善管理,這種就是伺服器虛拟化(vsphere)。

光系統分開還不行,你有時還需要各種方式通路虛拟機系統,于是你就會是用遠端桌面等方式去通路這些背景的虛拟機,這種就是應用虛拟化(view)。

當然還有網絡虛拟化,存儲虛拟化等各種其他虛拟化技術正在慢慢成長,不過相對于前兩者無論是商用還是開源,都還不太成熟,暫不讨論。

我認為對分布式系統比較合适的定義是把所有it資源看成為一個整體來使用,而不是去獨立的看某個機器某個系統,即資源池。

我們暫時以開源hadoop為例

為實作将it資源變成整體,它要做到的第一點就是将一個巨大的檔案拆開放在多個地方,你可以用一大堆很普通的計算機用網絡連在用來存放這一個巨型檔案,這樣即使很多很小硬碟的機器也可以通過連在一起當成一個很大的存儲空間來用,這種就是分布式存儲(hdfs)。

光檔案存放合在一起不行,計算能力也要合在一起,是以它還要滿足一個任務分給多個實體機來處理,這樣即便一堆老破電腦,通過這種方式連在一起,隻要足夠多,也能當超級計算機用,這種就使分布式計算(mapreduce)。

當然hbase等其他的技術也在逐漸成熟,總的來講都是為了解決建立巨型資源池需要的技術。

由此可以看出虛拟化主要是把大塊拆成小塊兒,分布式系統主要是把小塊組合成大塊兒,it資源經過這樣的揉碎再組合,變成了一個十分靈活的系統,在這幾個基本技術的基礎上,在通過某種排程和經營,就可以實作雲計算的服務模式了。

最後說句題外話,基本上所有你搞不懂的技術術語、專有名詞背後,都會有一個不是技術領域的需求,這個需求才是你需要首先了解的“根本性需求”,而隻有你認識到這些“非技術領域”的問題(或者叫需求),才能算是對這個領域真正開始入門了。執着于純技術層面,其實無法真正的解決問題。 

本文轉自d1net(轉載)

繼續閱讀