1. 程式人生 > >分散式、叢集與微服務的區別

分散式、叢集與微服務的區別

概念:叢集是個物理形態,分散式是個工作方式。

  1. 叢集:同一個業務,部署在多個伺服器上,將幾臺伺服器集中在一起,實現同一業務。
  2. 分散式:一個業務分拆多個子業務,部署在不同的伺服器上,分散式是指將不同的業務分佈在不同的地方。
  3. 微服務:  和分散式比較相似,微服務是一種架構風格,一個大型複雜軟體應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是鬆耦合的。每個微服務僅關注於完成一件任務並很好地完成該任務。在所有情況下,每個任務代表著一個小的業務能力。

總結:

1. 分散式中的每一個節點,都可以做叢集。而叢集並不一定就是分散式的。     舉例:就比如新浪網,訪問的人多了,他可以做一個群集,前面放一個響應伺服器,後面幾臺伺服器完成同一業務,如果有業務訪問的時候,響應伺服器看哪臺伺服器的負載不是很重,就將給哪一臺去完成。而分散式,從窄意上理解,也跟叢集差不多,但是它的組織比較鬆散,不像叢集,有一個組織性,一臺伺服器垮了,其它的伺服器可以頂上來。分散式的每一個節點,都完成不同的業務,一個節點垮了,那這個業務就不可訪問了。

2. 簡單說,分散式是以縮短單個任務的執行時間來提升效率,而叢集則是通過提高單位時間內執行的任務數來提升效率。     例如:如果一個任務由 10 個子任務組成,每個子任務單獨執行需 1 小時,則在一臺伺服器上執行該任務需 10 小時。採用分散式方案,提供 10 臺伺服器,每臺伺服器只負責處理一個子任務,不考慮子任務間的依賴關係,執行完這個任務只需一個小時。(這種工作模式的一個典型代表就是 Hadoop 的 Map/Reduce 分散式計算模型)。而採用叢集方案,同樣提供 10 臺伺服器,每臺伺服器都能獨立處理這個任務。假設有 10 個任務同時到達,10 個伺服器將同時工作,1 小時後,10 個任務同時完成,這樣,整身來看,還是 1 小時內完成一個任務!     好的設計應該是分散式和叢集的結合,先分散式再叢集,具體實現就是業務拆分成很多子業務,然後針對每個子業務進行叢集部署,這樣每個子業務如果出了問題,整個系統完全不會受影響。