1. 程式人生 > >java 分散式與叢集的區別和聯絡

java 分散式與叢集的區別和聯絡

一.先說區別:

一句話:分散式是並聯工作的,叢集是串聯工作的。

1.分散式是指將不同的業務分佈在不同的地方(微服務是為了滿足在不同微服務實現不同功能)。 而叢集指的是將幾臺伺服器集中在一起,實現同一業務(redis叢集,資料庫叢集)。

分散式中的每一個節點,都可以做叢集。 而叢集並不一定就是分散式的。

舉例:就比如新浪網,訪問的人多了,他可以做一個群集,前面放一個響應伺服器,後面幾臺伺服器完成同一業務,如果有業務訪問的時候,響應伺服器看哪臺伺服器的負載不是很重,就將給哪一臺去完成。

而分散式,從窄意上理解,也跟叢集差不多, 但是它的組織比較鬆散,不像叢集,有一個組織性,一臺伺服器垮了,其它的伺服器可以頂上來。

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

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

簡單的例子說明一下:

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

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

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

二.叢集概念

1. 兩大關鍵特性

叢集是一組協同工作的服務實體,用以提供比單一服務實體更具擴充套件性與可用性的服務平臺。在客戶端看來,一個叢集就象是一個服務實體,但事實上叢集由一組服務實體組成。與單一服務實體相比較,叢集提供了以下兩個關鍵特性:

a.可擴充套件性:叢集的效能不限於單一的服務實體,新的服務實體可以動態地加入到叢集,從而增強叢集的效能。

b.高可用性:叢集通過服務實體冗餘使客戶端免於輕易遇到out of service的警告。在叢集中,同樣的服務可以由多個服務實體提供。如果一個服務實體失敗了,另一個服務實體會接管失敗的服務實體。叢集提供的從一個出 錯的服務實體恢復到另一個服務實體的功能增強了應用的可用性。

2. 兩大能力

為了具有可擴充套件性和高可用性特點,叢集的必須具備以下兩大能力:

a.負載均衡:負載均衡能把任務比較均衡地分佈到叢集環境下的計算和網路資源。

b.錯誤恢復:由於某種原因,執行某個任務的資源出現故障,另一服務實體中執行同一任務的資源接著完成任務。這種由於一個實體中的資源不能工作,另一個實體中的資源透明的繼續完成任務的過程叫錯誤恢復。

負載均衡和錯誤恢復都要求各服務實體中有執行同一任務的資源存在,而且對於同一任務的各個資源來說,執行任務所需的資訊檢視(資訊上下文)必須是一樣的。

3. 兩大技術

實現叢集務必要有以下兩大技術:

a.叢集地址:叢集由多個服務實體組成,叢集客戶端通過訪問叢集的叢集地址獲取叢集內部各服務實體的功能。具有單一叢集地址(也叫單一影像)是叢集的一個基 本特徵。維護叢集地址的設定被稱為負載均衡器。負載均衡器內部負責管理各個服務實體的加入和退出,外部負責叢集地址向內部服務實體地址的轉換。有的負載均 衡器實現真正的負載均衡演算法,有的只支援任務的轉換。只實現任務轉換的負載均衡器適用於支援ACTIVE-STANDBY的叢集環境,在那裡,叢集中只有 一個服務實體工作,當正在工作的服務實體發生故障時,負載均衡器把後來的任務轉向另外一個服務實體。

b.內部通訊:為了能協同工作、實現負載均衡和錯誤恢復,叢集各實體間必須時常通訊,比如負載均衡器對服務實體心跳測試資訊、服務實體間任務執行上下文資訊的通訊。

具有同一個叢集地址使得客戶端能訪問叢集提供的計算服務,一個叢集地址下隱藏了各個服務實體的內部地址,使得客戶要求的計算服務能在各個服務實體之間分佈。內部通訊是叢集能正常運轉的基礎,它使得叢集具有均衡負載和錯誤恢復的能力。

三.叢集分類

Linux叢集主要分成三大類( 高可用叢集, 負載均衡叢集,科學計算叢集)

1. 高可用叢集(High Availability Cluster)

常見的就是2個節點做成的HA叢集,有很多通俗的不科學的名稱,比如"雙機熱備", "雙機互備", "雙機".

高可用叢集解決的是保障使用者的應用程式持續對外提供服務的能力。 (請注意高可用叢集既不是用來保護業務資料的,保護的是使用者的業務程式對外不間斷提供服務,把因軟體/硬體/人為造成的故障對業務的影響降低到最小程度)。

2. 負載均衡叢集(Load Balance Cluster)

負載均衡系統:叢集中所有的節點都處於活動狀態,它們分攤系統的工作負載。一般Web伺服器叢集、資料庫叢集和應用伺服器叢集都屬於這種型別。

負載均衡叢集一般用於相應網路請求的網頁伺服器,資料庫伺服器。這種叢集可以在接到請求時,檢查接受請求較少,不繁忙的伺服器,並把請求轉到這些伺服器上。從檢查其他伺服器狀態這一點上看,負載均衡和容錯叢集很接近,不同之處是數量上更多。

3. 科學計算叢集(High Performance Computing Cluster)

高效能運算(High Perfermance Computing)叢集,簡稱HPC叢集。這類叢集致力於提供單個計算機所不能提供的強大的計算能力。

四. 分散式(叢集)與叢集的聯絡與區別

分散式是指將不同的業務分佈在不同的地方。

而叢集指的是將幾臺伺服器集中在一起,實現同一業務。

分散式中的每一個節點,都可以做叢集。

而叢集並不一定就是分散式的。