集羣與分佈式,大家知道有什麼區別嗎?

attachments-2020-06-jnwa1I4z5ef2abbb69b8d.png

用一個例子介紹集羣與分佈式:

小餐館原來只有一個廚師,切菜洗菜備料炒菜他都全乾。後來餐館的客人多了,廚房裏一個廚師忙不過來,又請了個廚師,兩個廚師都能炒同樣的菜,這兩個廚師的關 系是集羣。爲了讓廚師專心炒菜,把菜作到極致,又請了個配菜師負責切菜,備菜,備料,廚師和配菜師的關係是分佈式,一個配菜師也忙不過來了,又請了個配菜 師,兩個配菜師關係是集羣。編程

1、分佈式:服務器

分佈式是指將多臺服務器集中在一塊兒,每臺服務器都實現整體中的不一樣業務,作不一樣的事情。而且每臺服務器都缺一不可,若是某臺服務器故障,則網站部分功能缺失,或致使總體沒法運行。存在的主要做用是大幅度的提升效率,緩解服務器的訪問和存儲壓力。網絡

分佈式的優勢是細化了應用程序的功能模塊,同時也減輕了一個完整的應用程序部署在一臺服務器上的負擔,用了分佈式拆分後,就至關於把一個應用程序的多個功能分配到多臺服務器上去處理了。架構

v2-4a1f051c418c230e898c95bc8c2de77a_720w.jpg

注意:該圖中最大特色是:每一個Web服務器(Tomcat)程序都負責一個網站中不一樣的功能,缺一不可。若是某臺服務器故障,則對應的網站功能缺失,也能夠致使其依賴功能甚至所有功能都不可以使用。併發

2、集羣:負載均衡

集羣是是指將多臺服務器集中在一塊兒,每臺服務器都實現相同的業務,作相同的事情。可是每臺服務器並非缺一不可,存在的做用主要是緩解併發壓力和單點故障轉移問題。能夠利用一些廉價的符合工業標準的硬件構造高性能的系統。實現:高擴展、高性能、低成本、高可用!分佈式

v2-1c2ee671d2d46954871bd92c2dd56a5f_720w.jpg

集羣的特色:模塊化

2.1伸縮性(Scalability)oop

在一些大的系統中,預測最終用戶的數量和行爲是很是困難的,伸縮性是指系統適應不斷增加的用戶數的能力。提升這種併發會話能力的一種最直觀的方式就增長資源(CPU,內存,硬盤等),集羣是解決這個問題的另外一種方式,它容許一組服務器組在一塊兒,像單個服務器同樣分擔處理一個繁重的任務,咱們只須要將新的服務器加入集羣中便可,對於客戶來看,服務不管從連續性仍是性能上都幾乎沒有變化,好像系統在不知不覺中完成了升級性能

2.2高可用性(High availability)

單一服務器的解決方案並非一個健壯方式,由於容易出現單點失效。像銀行、帳單處理這樣一些關鍵的應用程序是不能容忍哪怕是幾分鐘的死機。它們須要這樣一些服務在任什麼時候間均可以訪問並在可預期的合理的時間週期內有響應。高可用性集羣的出現是爲了使集羣的總體服務儘量可用,以便考慮計算硬件和軟件的易錯性。若是高可用性集羣中的主節點發生了故障,那麼這段時間內將由次節點代替它。次節點一般是主節點的鏡像,因此當它代替主節點時,它能夠徹底接管其身份,而且所以使系統環境對於用戶是一致的。

2.3負載均衡(Load balancing)

負載均衡集羣爲企業需求提供了更實用的系統。如名稱所暗示的,該系統使負載能夠在計算機集羣中儘量平均地分攤處理。該負載多是須要均衡的應用程序處理負載或網絡流量負載。這樣的系統很是適合於運行同一組應用程序的大量用戶。每一個節點均可以處理一部分負載,而且能夠在節點之間動態分配負載,以實現平衡。

2.4高性能 (High Performance )

一般,第一種涉及爲集羣開發並行編程應用程序,以解決複雜的科學問題。這是並行計算的基礎,儘管它不使用專門的並行超級計算機,這種超級計算機內部由十至上萬個獨立處理器組成。但它卻使用商業系統,如經過高速鏈接來連接的一組單處理器或雙處理器 PC,而且在公共消息傳遞層上進行通訊以運行並行應用程序。所以,您會經常據說又有一種便宜的 Linux 超級計算機問世了。但它實際是一個計算機集羣,其處理能力與真的超級計算機相等

3、兩者之間的聯繫:

在開發中咱們能夠將分佈式和集羣分開嗎?

針對這個問題,咱們能夠根據分佈式的介紹看出,其主要的功能是用了將咱們的系統模塊化,將系統進行解耦的,方便咱們的維護和開發的,可是其並不能解決咱們的併發問題,也沒法保證咱們的系統在服務器宕機後的正常運轉。

而集羣呢?其剛好彌補了分佈式的缺陷,集羣,就是多個服務器處理相同的業務,這在一方面能夠解決或者說改善咱們系統的併發問題,一方面能夠解決咱們服務器若是出現必定數量的宕機後,系統仍然能夠正常運轉。

所以我說,分佈式和集羣式一對好基友,誰也離不開誰。。。。

集羣與分佈式的區別

集羣是個物理形態,分佈式是個工做方式。

只要是一堆機器,就能夠叫集羣,他們是否是一塊兒協做着幹活,這個誰也不知道;一個程序或系統,只要運行在不一樣的機器上,就能夠叫分佈式,嗯,C/S架構也能夠叫分佈式。

集羣通常是物理集中、統一管理的,而分佈式系統則不強調這一點。

因此,集羣可能運行着一個或多個分佈式系統,也可能根本沒有運行分佈式系統;分佈式系統可能運行在一個集羣上,也可能運行在不屬於一個集羣的多臺(2臺也算多臺)機器上。

分佈式是相對中心化而來,強調的是任務在多個物理隔離的節點上進行。中心化帶來的主要問題是可靠性,若中心節點宕機則整個系統不可用,分佈式除了解決部分中心化問題,也傾向於分散負載,但分佈式會帶來不少的其餘問題,最主要的就是一致性。

集羣就是邏輯上處理同一任務的機器集合,能夠屬於同一機房,也可分屬不一樣的機房。分佈式這個概念能夠運行在某個集羣裏面,某個集羣也可做爲分佈式概念的一個節點。

一句話,就是:「分頭作事」與「一堆人」的區別

分佈式是指將不一樣的業務分佈在不一樣的地方。而集羣指的是將幾臺服務器集中在一塊兒,實現同一業務。分佈式中的每個節點,均可以作集羣。而集羣並不必定就是分佈式的。

舉例:就好比新浪網,訪問的人多了,他能夠作一個羣集,前面放一個響應服務器,後面幾臺服務器完成同一業務,若是有業務訪問的時候,響應服務器看哪臺服務器的負載不是很重,就將給哪一臺去完成。

而分佈式,從窄意上理解,也跟集羣差很少, 可是它的組織比較鬆散,不像集羣,有一個組織性,一臺服務器垮了,其它的服務器能夠頂上來。

分佈式的每個節點,都完成不一樣的業務,一個節點垮了,哪這個業務就不可訪問了。

簡單說,分佈式是以縮短單個任務的執行時間來提高效率的,而集羣則是經過提升單位時間內執行的任務數來提高效率。

例如:

若是一個任務由10個子任務組成,每一個子任務單獨執行需1小時,則在一臺服務器上執行該任務需10小時。

採用分佈式方案,提供10臺服務器,每臺服務器只負責處理一個子任務,不考慮子任務間的依賴關係,執行完這個任務只需一個小時。(這種工做模式的一個典型表明就是Hadoop的Map/Reduce分佈式計算模型)

而採用集羣方案,一樣提供10臺服務器,每臺服務器都能獨立處理這個任務。假設有10個任務同時到達,10個服務器將同時工做,1小時後,10個任務同時完成,這樣,整身來看,仍是1小時內完成一個任務!

attachments-2020-06-EFjx4ikx5ef2abaa015b1.jpg

相關文章
相關標籤/搜索