伺服器和個人電腦的結構非常相似,也有cpu、記憶體、硬碟等,但也有些許不同。普遍來說伺服器的cpu,核心數要多一些,主頻要低一些,伺服器可以插多個cpu(真實的存在的cpu,不是超執行緒技術),伺服器記憶體支援ecc校驗機制,伺服器硬碟通常搭配raid卡使用,支援熱插拔等等,可以前往zol檢視一些伺服器的**和配置:
不過由於多種原因,伺服器硬體在個人電腦上的使用效果並不好,網上有個很形象的比喻:你覺得開坦克去上班,會覺得舒適嗎?此外,還有乙個技術更迭帶來的問題,雖然現在多數伺服器的cpu都採用和個人電腦相同的x86架構,但是在更早的時候,伺服器cpu還有一些不同的架構,比如power pc架構。由於歷史遺留,它們可能仍然存在於一些資料中心中。
cpu架構不同帶來的問題就是:不同cpu架構的配套硬體(比如主機板)、軟體、作業系統不能夠通用。
簡單概括:多數伺服器和個人電腦都是x86架構,x86架構的伺服器和個人電腦結構幾乎相同,軟體、作業系統可以通用,但硬體不通用(強行使用,硬體能發揮的效能極低),特別說明平板電腦多數不是x86架構。
大型網際網路企業,都有自己的資料中心,而且通常不只乙個。每個資料中心裡面都部署的有大量的伺服器,它們借助內部網路通過極其複雜的方式協同工作,最終通過網際網路向公眾提供網際網路服務。
資料中心的伺服器和家庭電腦接入網際網路的方式並不同,家庭電腦通常是所有終端直接接入路由器,沒有類似上圖交換機組成的「協同工作」的網路,而資料中心一般只將少量的伺服器通過路由器直接接入網際網路,這些少量的伺服器負責將來自網際網路的服務請求通過「協同工作」的網路分發給對應的處理服務請求的伺服器,這些服務請求被對應的伺服器處理後產生相應的資訊,再通過「協同工作」的網路傳輸回分發請求的伺服器,最後分發請求的伺服器再將這些資訊通過網際網路傳輸給使用者。
雖然現實情況並非完全如此,但硬體利用率低、無法及時新增伺服器,伺服器硬體配置不一,這些情況在資料中心是真實存在的。當資料中心規模較小的時候,也許這些只是小問題,對於擁有成百上千臺伺服器的大型資料中心來說,這些小問題會被放大,造成極高的tco。
上述傳統資料中心的弊端可以通過伺服器虛擬化技術解決,這是一種將多個作業系統同時執行在一台伺服器上的技術。在傳統的認知裡面,一台電腦只能裝乙個作業系統,即使安裝了雙作業系統,也只能同時執行其中乙個。初次理解這個也許有些困難,就像作業系統為什麼可以同時執行多個程式一樣,為什麼伺服器不可以同時執行多個作業系統呢?
伺服器能夠同時執行多個作業系統,並不是因為伺服器有什麼特別之處,相反x86伺服器和個人電腦是一樣的架構,也就是說他們都可以同時執行多個作業系統。實現這一切依靠的是hypervisor,hypervisor又被稱為虛擬機器監視器(vmm,virtual machine monitor),它有兩種型別:一種是特殊的作業系統,直接安裝在伺服器上;另一種是應用程式,這需要先在伺服器上安裝乙個作業系統,稱為host os,再在host os中安裝hypervisor。最終是在hypervisor中安裝這多個作業系統,每個作業系統使用hypervisor提供的伺服器的部分硬體,比如一台伺服器有12g記憶體,它上面的乙個作業系統可能只使用其中的4g。
引用乙個redhat的案例,假設您有 3 臺物理伺服器,分別用於不同的特定用途。 其中一台是郵件伺服器,一台是 web 伺服器,最後一台則用於執行企業內部的傳統應用。每台伺服器只使用了大約 30% 的效能,這僅是執行潛能的一小部分。
過去確實如此。相對簡單和可靠的做法是在單獨的伺服器上執行單獨的任務:1 臺伺服器, 1 個執行作業系統,1 個處理任務。我們很難讓 1 臺伺服器有多個大腦(作業系統)。但是,借助伺服器虛擬化技術,您可以將郵件伺服器分為 2 個能夠處理獨立任務的「特殊伺服器」,這 2 個特殊伺服器都有自己的作業系統,相互獨立,從而實現傳統應用的遷移。您仍然使用相同的硬體,但可以更加高效地利用這些資源。
很明顯,通過伺服器虛擬化技術,傳統資料中心的弊端得到了解決。
伺服器虛擬化似乎解決了靈活性問題,其實不全對。因為虛擬化軟體一般建立一台虛擬的電腦,是需要人工指定這台虛擬電腦放在哪台物理機上的,可能還需要比較複雜的人工配置,所以使用vmware的虛擬化軟體,需要考乙個很牛的證書,能拿到這個證書的人,薪資是相當的高,也可見複雜程度。所以僅僅憑虛擬化軟體所能管理的物理機的集群規模都不是特別的大,一般在十幾台,幾十台,最多百台這麼乙個規模。這一方面會影響時間靈活性,雖然虛擬出一台電腦的時間很短,但是隨著集群規模的擴大,人工配置的過程越來越複雜,越來越耗時。另一方面也影響空間靈活性,當使用者數量多的時候,這點集群規模,還遠達不到想要多少要多少的程度,很可能這點資源很快就用完了,還得去採購。所以隨著集群的規模越來越大,基本都是千台起步,動輒上萬台,甚至幾十上百萬臺,如果去查一下bat,包括網易,包括谷歌,亞馬遜,伺服器數目都大的嚇人。這麼多機器要靠人去選乙個位置放這台虛擬化的電腦並做相應的配置,幾乎是不可能的事情,還是需要機器去做這個事情。
人們發明了各種各樣的演算法來做這個事情,演算法的名字叫做排程(scheduler)。通俗一點的說,就是有乙個排程中心,幾千臺機器都在乙個池子裡面,無論使用者需要多少cpu,記憶體,硬碟的虛擬電腦,排程中心會自動在大池子裡面找乙個能夠滿足使用者需求的地方,把虛擬電腦啟動起來做好配置,使用者就直接能用了。這個階段,我們稱為池化,或者雲化,到了這個階段,才可以稱為雲計算,在這之前都只能叫虛擬化。
這裡引用了
的一段簡單概括:伺服器虛擬化技術使資料中心以更加靈活的方式(虛擬機器)使用伺服器,最開始管理虛擬機器使用虛擬化平台,需要靠人工配置,能夠管理的虛擬機器、伺服器有限,雲計算使用特殊的演算法自動配置虛擬機器。
這裡記錄使用某雲計算平台建立一台虛擬機器的步驟:
雲計算遠不止於此,更詳細的雲計算介紹見後續文章。
因併發而生,因雲計算而熱
2008年11月17日,51cto聯合人民郵電出版社圖靈公司邀請了 erlang程式設計 一書的譯者趙東煒老師和在erlang開發方面有著豐富經驗的成立濤老師作客51cto聊天室,就erlang程式語言和雲計算方面的話題與進行了深入交流。本次聊天活動一共分為5個環節,聊天記錄在這裡,建議所有熱愛co...
因併發而生,因雲計算而熱(專家聊天實錄)
2008年11 月17日,51cto 聯合人民郵電出版社圖靈公司邀請了 erlang程式設計 一書的譯者趙東煒老師和在 erlang 開發方面有著豐富經驗的成立濤老師作客 51cto 聊天室,就 erlang 程式語言和雲計算方面的話題與進行了深入交流。本次聊天活動一共分為 5個環節,聊天記錄在這裡...
雲計算學習(3 3)雲計算的由來 應運而生
雲計算是對企業it能力的一次革命 它的實現基於大規模資料中心和告訴廉價寬頻網路的鏈結 今天的使用者要求能夠隨時隨地使用不同的裝置安全地訪問不同的企業應用 這使得對it的要求飛速上公升 傳統it已經無法滿足時代飛速發展的需要了 使用與計算,你只需要支付你實際使用的部分 跳出傳統it的平靜,不需要長時間...