本文首發於個人公衆號 cloud_dev,專一於乾貨分享,號內有大量書籍和視頻資源,後臺回覆 「1024」便可領取,歡迎你們關注,二維碼文末能夠掃。
在孫悟空的七十二變中,我以爲最厲害的是分身能力,這也是他百試不得其爽的終極大招,往往都能打得妖怪摸不着北。html
集羣,學名叫 Cluster,能夠翻譯爲簇、聚類、集羣等多種意思,不一樣的翻譯,在技術世界裏所表示的意思都不盡相同,但都有一個共同的指向,即羣體。集羣就是由一組計算機所組成的實體,一般做爲一個總體向用戶提供資源和服務。前端
集羣的研究和發展離不開人們對高性能計算的追求,像咱們熟悉的向量機、對稱多處理機、工做站、超級計算機等等都是對高性能計算追求下的產物。linux
這些系統要麼是提升 CPU 的主頻和總線帶寬來提升系統性能,要麼是增長 CPU 個數和內存容量來提升性能,但這些手段對性能的提升都是有限的。有人作過實驗,當 CPU 個數超過某一閾值時,系統的性能反而會變差。其主要的瓶頸就在於 CPU 訪問內存的帶寬並不能隨着 CPU 個數的增長而有效增長。編程
相反,集羣系統的性能可擴展能力是線性增加的。咱們能夠簡單經過增長機器數來增長集羣的運算能力,相比購買高性能的大型計算機,同等運算能力下,咱們能夠得到更高的性價比。同時,系統的可靠性也獲得了加強。後端
早在七十年代計算機廠商和研究機構就開始了對集羣系統的研究和開發,首先創造性發明集羣的是 Seymour Cray(西摩·克雷)—— 超級計算機之父。安全
Seymour 是一位美國工程師,在 1960 年代,CDC 公司開始涉足高性能計算領域,彼時仍是大型機的天下,這些大型機設計很是複雜,生產週期漫長,價格還很是昂貴。因而,當時在 CDC 公司擔任總設計師的 Seymour 就決心建造出一臺他心目中的高性能計算機。服務器
Seymour 出於工程師的直覺,很快想到並行是提升計算機性能的有效方式。他使用廉價的方式來得到跟大型機同樣的運算能力。他將多個普通的處理器鏈接起來,使它們可以協同工做,這就是高性能計算機的原型。網絡
後來,IBM、HP 等公司學習了 Seymour 的這套架構,高性能計算機開始迅速推廣,逐步取代原有的大型機。高性能計算機爲當時的登月計劃等大型科研項目做出了很是重要的貢獻。前端工程師
而後進入八十年代,在摩爾定律的指導下,CPU 頻率不斷提升,芯片不斷降價,我的計算機強勢崛起。蘋果、微軟等公司藉助這股東風成爲我的計算機時代的王者。隨之而來的就是高性能計算機市場遭到了吞噬,被迫只能退守公司服務器市場。架構
但很快,隨着互聯網的普及,高性能計算機又迎來新的一波熱潮。互聯網上用戶量龐大,普通 PC 難以應付如此衆多的網絡請求,必需要依賴由高性能計算機組成的服務器集羣。在 2000 年左右的網絡泡沫時期,成就了不少像 Sun 這樣的服務器生產商。
現在,IT 行業向雲計算衝擊,諸如 Google、Apple、Amazon 等很巨頭紛紛創建起了本身的數據中心。集羣的規模在不斷擴大,爲海量的數據提升基礎設施提供了支撐。根據不一樣的應用場景,集羣也演變出多種形態,好比高性能集羣、高可用集羣、負載均衡集羣等等。
集羣不是簡單的硬件堆疊,而是硬件和軟件的結合。從軟件上說,集羣至少須要:
這兩點比較好理解,集羣的規模每每是比較龐大的,對於管理員來講,須要隨時可以知曉集羣中各節點的業務正常與否,出問題了應該怎麼保證業務可以不中斷,遇到流量高峯和低谷的時候,又該怎麼響應,這些操做若是純靠人工來完成那必將很慘烈。依靠軟件和網絡來完成自動化的管理方式,能夠將管理員解放出來。固然,以上說的兩點是比較寬泛的,用戶能夠根據自身需求來部署不一樣的集羣元素。
一個比較經典的集羣模型當屬 Beowulf 集羣,它經過一個節點統一未來自網絡的請求分配給各個節點進行計算處理。
集羣與分佈式像一對孿生兄弟,傻傻分不清楚。在我看來,它們之間沒有特別明確的分界線,集羣離不開分佈式,分佈式也須要集羣。若是必定要作個區分,能夠套用一個比喻來描述二者的區別:
一家餐廳剛開業,因爲成本限制招了一個廚師,慢慢地,餐廳生意越作越好,一個廚師已經很難應付過來,因而又招了一個,這兩個廚師水平至關,都能作一樣的事,兩個廚師之間的關係就是集羣。兩廚師除了炒菜,還要負責洗菜、配菜等等的活,工做負荷已經嚴重超標,爲了讓廚師能專心炒菜,把菜作到極致,餐廳又招了配菜師來輔助廚師,廚師和配菜師之間的關係就是分佈式。
這個例子比較形象,在網站開發中也有相似的關係,兩個全棧工程師之間就是集羣的關係,前端工程師和後端工程師之間就屬於分佈式的關係。
因此,必定要有區分的話就是:集羣是一個業務部署在多個服務器上,而分佈式是一個業務拆分紅多個子業務部署在不一樣的服務器上。但在實際部署中,爲了高性能,須要分佈式部署,爲了高可用,須要集羣部署,這二者都是業務所必須的指標。因此,集羣和分佈式之間的關係是相互補充的。
隨着虛擬化技術的發展,一臺服務器能夠虛擬出多個虛擬機,對外提供業務,這種方式大大提升了資源的利用率,集羣的部署也逐步從物理機過渡到虛擬機,靈活性大大提升。但同時也帶來了更多新的研究課題。虛擬化計算、虛擬化存儲、虛擬化網絡、虛擬化安全等等這些課題共同推進着雲計算產業邁出一個又一個的臺階。
數據中心是集中存放和運行服務器的地方,是規模最大的集羣。隨着雲計算和大數據概念的風起雲涌,Google、Amazon 等這些明星公司幕後的數據中心也開始走入大衆的視野。數據中心要求有優秀的架構設計、電路設計、空間設計等等,還要有機制可以應對各類各樣的意外,不然一點小小的失誤,公司的股價恐怕就要跳水。
地理位置的選擇也是數據中心考慮的一個指標,隨着綠色數據中心概念的興起,愈來愈多人關注數據中心所帶來的能源問題和環境問題,選擇一個遠離市區,而且能利用自然水源和睦溫的地方,將會爲數據中心的建設節約大量的成本。Google 等大公司的數據中心就有意放在高緯度、高海拔的地區,以及有湖泊、河流流經地區,以享受自然的空調和冷卻水。
[1] 分佈式與集羣的區別是什麼?
[2] 數據中心網絡架構演講
[3] Linux 高性能計算集羣
[4] 高性能計算機傳奇
個人公衆號 cloud_dev,號內有大量書籍和視頻資源,後臺回覆 「1024」便可領取,分享的內容包括但不限於雲計算虛擬化、容器、OpenStack、K8S、霧計算、網絡、工具、SDN、OVS、DPDK、Linux、Go、Python、C/C++編程技術等內容,歡迎你們關注。