一文秒懂分散式、叢集、負載均衡之間的區別

架構師修行手冊發表於2023-04-19

來源:mikechen的網際網路架構


平時經常接觸:叢集、分散式、負載均衡、分散式資料一致性等問題,究竟有什麼區別?有什麼關聯?希望本篇能解釋清楚之間的區別



01

伺服器叢集


1.叢集概念

叢集就是一組相互獨立的計算機,透過高速的網路組成一個計算機系統。

伺服器叢集就是指將很多伺服器集中起來一起進行同一種服務,在客戶端看來就像是隻有一個伺服器。

2.叢集的特點和優勢

1)高效能

比如上千臺伺服器同時計算執行,遠大於單機的執行效率(可以參考:google公開有關GFS,bigtable,mapreduce的三篇論文)。

2)價效比優勢

利用通用廉價的伺服器代替小型機,例如:阿里轟轟烈烈的去IOE(去掉IBM的小型機、Oracle資料庫、EMC儲存裝置,代之以自己在開源軟體基礎上開發的系統)

3)可伸縮性

比如:阿里雙11,除了提前預估伺服器外,在極端的情況下,可以實現動態的伺服器擴容。

3.叢集的分類

一文秒懂分散式、叢集、負載均衡之間的區別


一般分為如下三類:

  • 負載均衡叢集(Load balancing clusters)簡稱LBC

  • 高可用性叢集(High-availability clusters)簡稱HAC

  • 高效能運算叢集(High-perfomance clusters)簡稱HPC

大家平時接觸最多的就是負載均衡叢集,常用的有 Nginx 把請求分發給後端的不同web伺服器,還有就是資料庫叢集,負載均衡就是,為了保證伺服器的高可用,高併發。


02

負載均衡


在伺服器叢集中,需要有一臺伺服器充當排程者的角色,使用者的所有請求都會首先由它接收,排程者再根據每臺伺服器的負載情況將請求分配給某一臺後端伺服器去處理。

那麼在這個過程中,排程者如何合理分配任務,保證所有後端伺服器都將效能充分發揮,從而保持伺服器叢集的整體效能最優,這就是負載均衡。

一文秒懂分散式、叢集、負載均衡之間的區別


如果還想更加全面深入瞭解負載均衡,請檢視我之前寫的:史上最全負載均衡原理圖文詳解



03

分散式


分散式是指將不同的業務分佈在不同的地方,而叢集指的是將幾臺伺服器集中在一起,實現同一業務。

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



04

分散式資料一致性


分散式系統中,解決了負載均衡的問題後,另外一個問題就是資料的一致性了。

在分散式叢集中,很難保障資料的一致性,在以往的單節點服務中,通常使用鎖來實現,當發生併發衝突時 透過對鎖的持有獲得物件的操作權,從而保證資料在同一時刻只允許被一個請求操作。

但是在叢集中,若同樣採用鎖的機制,那麼需要一臺節點用來管理分配鎖,當其他節點進行請求前,首先去獲取鎖從而獲得執行權。

但是這樣會產生單節點問題,即若管理鎖的節點down掉,那麼整個叢集將無法工作。同時,由於鎖的機制會使整個叢集變成序列化單節點的形式,失去了叢集的意義。

所以,在叢集中需要一種高容錯的分散式一致性演算法,因此提出了Paxos演算法。

在Paxos演算法的基礎上後續有出現了:ZAB、Raflt等演算法。

Raft演算法也是解決分散式系統一致性問題的,與 Paxos 實現的功能相同,相對來說更容易實現和理解。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027824/viewspace-2946806/,如需轉載,請註明出處,否則將追究法律責任。

相關文章