集羣、分佈式、微服務概念和區別

mayiwoaini關注

 

轉自:https://blog.csdn.net/qq_37788067/article/details/79250623
概念:
集羣是個物理形態,分佈式是個工作方式。
1.分佈式:一個業務分拆多個子業務,部署在不同的服務器上
2.集羣:同一個業務,部署在多個服務器上
分佈式是指將不同的業務分佈在不同的地方。而集羣指的是將幾臺服務器集中在一起,實現同一業務。
分佈式中的每一個節點,都可以做集羣。而集羣並不一定就是分佈式的。
舉例:就比如新浪網,訪問的人多了,他可以做一個集羣,前面放一個響應服務器,後面幾臺服務器完成同一業務,如果有業務訪問的時候,響應服務器看哪臺服務器的負載不是很重,就將給哪一臺去完成。
而分佈式,從窄意上理解,也跟集羣差不多,但是它的組織比較鬆散,不像集羣,有一個組織性,一臺服務器垮了,其它的服務器可以頂上來。
分佈式的每一個節點,都完成不同的業務,一個節點垮了,那這個業務就不可訪問了。
簡單說,分佈式是以縮短單個任務的執行時間來提升效率的,而集羣則是通過提高單位時間內執行的任務數來提升效率。
例如:如果一個任務由 10 個子任務組成,每個子任務單獨執行需 1 小時,則在一臺服務器上執行該任務需 10 小時。
採用分佈式方案,提供 10 臺服務器,每臺服務器只負責處理一個子任務,不考慮子任務間的依賴關係,執行完這個任務只需一個小時。(這種工作模式的一個典型代表就是 Hadoop 的 Map/Reduce 分佈式計算模型)
而採用集羣方案,同樣提供 10 臺服務器,每臺服務器都能獨立處理這個任務。假設有 10 個任務同時到達,10 個服務器將同時工作,1 小時後,10 個任務同時完成,這樣,整體來看,還是 1 小時內完成一個任務!
好的設計應該是分佈式和集羣的結合,先分佈式再集羣,具體實現就是業務拆分成很多子業務,然後針對每個子業務進行集羣部署,這樣每個子業務如果出了問題,整個系統完全不會受影響。
另外,還有一個概念和分佈式比較相似,那就是微服務。
微服務是一種架構風格,一個大型複雜軟件應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是鬆耦合的。每個微服務僅關注於完成一件任務並很好地完成該任務。在所有情況下,每個任務代表着一個小的業務能力。

區別:

1.分佈式

 

將一個大的系統劃分爲多個業務模塊,業務模塊分別部署到不同的機器上,各個業務模塊之間通過接口進行數據交互。區別分佈式的方式是根據不同機器不同業務。
上面:service A、B、C、D 分別是業務組件,通過API Geteway進行業務訪問。
注:分佈式需要做好事務管理。
分佈式事務可參考:微服務架構的分佈式事務解決方案

 

2.集羣模式

集羣模式是不同服務器部署同一套服務對外訪問,實現服務的負載均衡。區別集羣的方式是根據部署多臺服務器業務是否相同。
注:集羣模式需要做好session共享,確保在不同服務器切換的過程中不會因爲沒有獲取到session而中止退出服務。
一般配置Nginx的負載容器實現:靜態資源緩存、Session共享可以附帶實現,Nginx支持5000個併發量。

分佈式是否屬於微服務?

答案是肯定的。微服務的意思也就是將模塊拆分成一個獨立的服務單元通過接口來實現數據的交互。

微服務架構

微服務的設計是爲了不因爲某個模塊的升級和BUG影響現有的系統業務。微服務與分佈式的細微差別是,微服務的應用不一定是分散在多個服務器上,他也可以是同一個服務器。

分佈式和微服的架構很相似,只是部署的方式不一樣而已。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章