分散式與叢集的區別
分散式:不同的業務模組部署在不同的伺服器上或者同一個業務模組分拆多個子業務,部署在不同的伺服器上,解決高併發的問題。
叢集:同一個業務部署在多臺機器上,提高系統可用性。
分散式是指將不同的業務分佈在不同的地方。 而叢集指的是將幾臺伺服器集中在一起,實現同一業務。
分散式中的每一個節點,都可以做叢集。 而叢集並不一定就是分散式的。
舉例:就比如新浪網,訪問的人多了,他可以做一個群集,前面放一個響應伺服器,後面幾臺伺服器完成同一業務,如果有業務訪問的時候,響應伺服器看哪臺伺服器的負載不是很重,就交給哪一臺去完成。
而分散式,從窄意上理解,也跟叢集差不多, 但是它的組織比較鬆散,不像叢集,有一個組織性,一臺伺服器垮了,其它的伺服器可以頂上來。
分散式的每一個節點,都完成不同的業務,一個節點垮了,哪這個業務就不可訪問了。
分散式是以縮短單個任務的執行時間來提升效率的,而叢集則是通過提高單位時間內執行的任務數來提升效率。
例如:
如果一個任務由10個子任務組成,每個子任務單獨執行需1小時,則在一臺伺服器上執行該任務需10小時。
採用分散式方案,提供10臺伺服器,每臺伺服器只負責處理一個子任務,不考慮子任務間的依賴關係,執行完這個任務只需一個小時。(這種工作模式的一個典型代表就是Hadoop的Map/Reduce分散式計算模型)
而採用叢集方案,同樣提供10臺伺服器,每臺伺服器都能獨立處理這個任務。假設有10個任務同時到達,10個伺服器將同時工作,1小時後,10個任務同時完成,這樣,整身來看,還是1小時內完成一個任務!
小飯店原來只有一個廚師,切菜洗菜備料炒菜全乾。後來客人多了,廚房一個廚師忙不過來,又請了個廚師,兩個廚師都能炒一樣的菜,這兩個廚師的關係是叢集。為了讓廚師專心炒菜,把菜做到極致,又請了個配菜師負責切菜,備菜,備料,廚師和配菜師的關係是分散式,一個配菜師也忙不過來了,又請了個配菜師,兩個配菜師關係是叢集