1. 程式人生 > 其它 >叢集與分散式的區別與關係

叢集與分散式的區別與關係

轉載:https://www.jianshu.com/p/8e510857e23f

一、為什麼要叢集?
1.JavaEE專案,如果部署在一臺Tomcat上,所有的請求,都由這一臺伺服器處理,存在很大風險:
A:併發處理能力有限(一般單臺伺服器處理的併發量為250左右,超過250,可能會出現資料丟失,連結不穩定的情況)。因為單伺服器的效能有限制。所以單臺Tomcat的最大連線數有限制,
B:容錯率低,一旦伺服器故障,整個服務就無法訪問了。
eBay於 1999年6月停機22小時的事故,中斷了約230萬的拍賣,使eBay的股票下降了9.2個百分點。
C:單臺伺服器計算能力低,無法完成複雜的海量資料計算。
提高CPU主頻和匯流排頻寬是最初提供計算機效能的主要手段。但是這一手段對系統性能的提供是有限的。接著人們通過增加CPU個數和記憶體容量來提高效能,於是出現了向量機,對稱多處理機(SMP)等。但是當CPU的個數超過某一閾值,這些多處理機系統的可擴充套件性就變的極差。主要瓶頸在於CPU訪問記憶體的頻寬並不能隨著CPU個數的增加而有效增長。與SMP相反,集群系統的效能隨著CPU個數的增加幾乎是線性變化的。

二、什麼是叢集
叢集是是指將多臺伺服器集中在一起,每臺伺服器都實現相同的業務,做相同的事情。但是每臺伺服器並不是缺一不可,存在的作用主要是緩解併發壓力和單點故障轉移問題。可以利用一些廉價的符合工業標準的硬體構造高效能的系統。實現:高擴充套件、高效能、低成本、高可用!

2.1伸縮性(Scalability)
在一些大的系統中,預測終端使用者的數量和行為是非常困難的,伸縮性是指系統適應不斷增長的使用者數的能力。提高這種併發會話能力的一種最直觀的方式就增加資源(CPU,記憶體,硬碟等),叢集是解決這個問題的另一種方式,它允許一組伺服器組在一起,像單個伺服器一樣分擔處理一個繁重的任務,我們只需要將新的伺服器加入叢集中即可,對於客戶來看,服務無論從連續性還是效能上都幾乎沒有變化,好像系統在不知不覺中完成了升級

2.2高可用性(High availability)
單一伺服器的解決方案並不是一個健壯方式,因為容易出現單點失效。像銀行、賬單處理這樣一些關鍵的應用程式是不能容忍哪怕是幾分鐘的宕機。它們需要這樣一些服務在任何時間都可以訪問並在可預期的合理的時間週期內有響應。高可用性叢集的出現是為了使叢集的整體服務儘可能可用,以便考慮計算硬體和軟體的易錯性。如果高可用性叢集中的主節點發生了故障,那麼這段時間內將由次節點代替它。次節點通常是主節點的映象,所以當它代替主節點時,它可以完全接管其身份,並且因此使系統環境對於使用者是一致的。

2.3負載均衡(Load balancing)
負載均衡叢集為企業需求提供了更實用的系統。如名稱所暗示的,該系統使負載可以在計算機叢集中儘可能平均地分攤處理。該負載可能是需要均衡的應用程式處理負載或網路流量負載。這樣的系統非常適合於運行同一組應用程式的大量使用者。每個節點都可以處理一部分負載,並且可以在節點之間動態分配負載,以實現平衡。

2.4高效能 (High Performance )
通常,第一種涉及為叢集開發並行程式設計應用程式,以解決複雜的科學問題。這是平行計算的基礎,儘管它不使用專門的並行超級計算機,這種超級計算機內部由十至上萬個獨立處理器組成。但它卻使用商業系統,如通過高速連線來連結的一組單處理器或雙處理器 PC,並且在公共訊息傳遞層上進行通訊以執行並行應用程式。因此,您會常常聽說又有一種便宜的 Linux 超級計算機問世了。但它實際是一個計算機叢集,其處理能力與真的超級計算機相等
三、為什麼要進行分散式
傳統的專案中,我們將各個模組放在一個系統中,系統過於龐大,開發維護困難,各個功能模組之間的耦合度增高,無法針對單個模組進行優化,也無法進行水平擴充套件。

四、什麼是分散式
分散式是指將多臺伺服器集中在一起,每臺伺服器都實現總體中的不同業務,做不同的事情。並且每臺伺服器都缺一不可,如果某臺伺服器故障,則網站部分功能缺失,或導致整體無法執行。存在的主要作用是大幅度的提高效率,緩解伺服器的訪問和儲存壓力。

注意:該圖中最大特點是:每個Web伺服器(Tomcat)程式都負責一個網站中不同的功能,缺一不可。如果某臺伺服器故障,則對應的網站功能缺失,也可以導致其依賴功能甚至全部功能都不能夠使用。

五、分散式和叢集的關係。
在開發中我們可以將分散式和叢集分開嗎?
針對這個問題,我們可以根據分散式的介紹看出,其主要的功能是用了將我們的系統模組化,將系統進行解耦的,方便我們的維護和開發的,但是其並不能解決我們的併發問題,也無法保證我們的系統在伺服器宕機後的正常運轉。
而叢集呢?其恰好彌補了分散式的缺陷,叢集,就是多個伺服器處理相同的業務,這在一方面可以解決或者說改善我們系統的併發問題,一方面可以解決我們伺服器如果出現一定數量的宕機後,系統仍然可以正常運轉。
因此我說,分散式和叢集式一堆好基友,誰也離不開誰。。。。