集群、分布式、微服务概念和区别
概念:
集群是個(gè)物理形態(tài),分布式是個(gè)工作方式。
1.分布式:一個(gè)業(yè)務(wù)分拆多個(gè)子業(yè)務(wù),部署在不同的服務(wù)器上
2.集群:同一個(gè)業(yè)務(wù),部署在多個(gè)服務(wù)器上
分布式是指將不同的業(yè)務(wù)分布在不同的地方。而集群指的是將幾臺服務(wù)器集中在一起,實(shí)現(xiàn)同一業(yè)務(wù)。
分布式中的每一個(gè)節(jié)點(diǎn),都可以做集群。而集群并不一定就是分布式的。
舉例:就比如新浪網(wǎng),訪問的人多了,他可以做一個(gè)集群,前面放一個(gè)響應(yīng)服務(wù)器,后面幾臺服務(wù)器完成同一業(yè)務(wù),如果有業(yè)務(wù)訪問的時(shí)候,響應(yīng)服務(wù)器看哪臺服務(wù)器的負(fù)載不是很重,就將給哪一臺去完成。
而分布式,從窄意上理解,也跟集群差不多,但是它的組織比較松散,不像集群,有一個(gè)組織性,一臺服務(wù)器垮了,其它的服務(wù)器可以頂上來。
分布式的每一個(gè)節(jié)點(diǎn),都完成不同的業(yè)務(wù),一個(gè)節(jié)點(diǎn)垮了,那這個(gè)業(yè)務(wù)就不可訪問了。
簡單說,分布式是以縮短單個(gè)任務(wù)的執(zhí)行時(shí)間來提升效率的,而集群則是通過提高單位時(shí)間內(nèi)執(zhí)行的任務(wù)數(shù)來提升效率。
例如:如果一個(gè)任務(wù)由 10 個(gè)子任務(wù)組成,每個(gè)子任務(wù)單獨(dú)執(zhí)行需 1 小時(shí),則在一臺服務(wù)器上執(zhí)行該任務(wù)需 10 小時(shí)。
采用分布式方案,提供 10 臺服務(wù)器,每臺服務(wù)器只負(fù)責(zé)處理一個(gè)子任務(wù),不考慮子任務(wù)間的依賴關(guān)系,執(zhí)行完這個(gè)任務(wù)只需一個(gè)小時(shí)。(這種工作模式的一個(gè)典型代表就是 Hadoop 的 Map/Reduce 分布式計(jì)算模型)
而采用集群方案,同樣提供 10 臺服務(wù)器,每臺服務(wù)器都能獨(dú)立處理這個(gè)任務(wù)。假設(shè)有 10 個(gè)任務(wù)同時(shí)到達(dá),10 個(gè)服務(wù)器將同時(shí)工作,1 小時(shí)后,10 個(gè)任務(wù)同時(shí)完成,這樣,整體來看,還是 1 小時(shí)內(nèi)完成一個(gè)任務(wù)!
好的設(shè)計(jì)應(yīng)該是分布式和集群的結(jié)合,先分布式再集群,具體實(shí)現(xiàn)就是業(yè)務(wù)拆分成很多子業(yè)務(wù),然后針對每個(gè)子業(yè)務(wù)進(jìn)行集群部署,這樣每個(gè)子業(yè)務(wù)如果出了問題,整個(gè)系統(tǒng)完全不會受影響。
另外,還有一個(gè)概念和分布式比較相似,那就是微服務(wù)。
微服務(wù)是一種架構(gòu)風(fēng)格,一個(gè)大型復(fù)雜軟件應(yīng)用由一個(gè)或多個(gè)微服務(wù)組成。系統(tǒng)中的各個(gè)微服務(wù)可被獨(dú)立部署,各個(gè)微服務(wù)之間是松耦合的。每個(gè)微服務(wù)僅關(guān)注于完成一件任務(wù)并很好地完成該任務(wù)。在所有情況下,每個(gè)任務(wù)代表著一個(gè)小的業(yè)務(wù)能力。
區(qū)別:
1.分布式
將一個(gè)大的系統(tǒng)劃分為多個(gè)業(yè)務(wù)模塊,業(yè)務(wù)模塊分別部署到不同的機(jī)器上,各個(gè)業(yè)務(wù)模塊之間通過接口進(jìn)行數(shù)據(jù)交互。區(qū)別分布式的方式是根據(jù)不同機(jī)器不同業(yè)務(wù)。
上面:service A、B、C、D 分別是業(yè)務(wù)組件,通過API Geteway進(jìn)行業(yè)務(wù)訪問。
注:分布式需要做好事務(wù)管理。
分布式事務(wù)可參考:微服務(wù)架構(gòu)的分布式事務(wù)解決方案
2.集群模式
集群模式是不同服務(wù)器部署同一套服務(wù)對外訪問,實(shí)現(xiàn)服務(wù)的負(fù)載均衡。區(qū)別集群的方式是根據(jù)部署多臺服務(wù)器業(yè)務(wù)是否相同。
注:集群模式需要做好session共享,確保在不同服務(wù)器切換的過程中不會因?yàn)闆]有獲取到session而中止退出服務(wù)。
一般配置Nginx的負(fù)載容器實(shí)現(xiàn):靜態(tài)資源緩存、Session共享可以附帶實(shí)現(xiàn),Nginx支持5000個(gè)并發(fā)量。
分布式是否屬于微服務(wù)?
答案是肯定的。微服務(wù)的意思也就是將模塊拆分成一個(gè)獨(dú)立的服務(wù)單元通過接口來實(shí)現(xiàn)數(shù)據(jù)的交互。
微服務(wù)架構(gòu)
微服務(wù)的設(shè)計(jì)是為了不因?yàn)槟硞€(gè)模塊的升級和BUG影響現(xiàn)有的系統(tǒng)業(yè)務(wù)。微服務(wù)與分布式的細(xì)微差別是,微服務(wù)的應(yīng)用不一定是分散在多個(gè)服務(wù)器上,他也可以是同一個(gè)服務(wù)器。
分布式和微服的架構(gòu)很相似,只是部署的方式不一樣而已。
總結(jié)
以上是生活随笔為你收集整理的集群、分布式、微服务概念和区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Google 插件总览
- 下一篇: plsql连接 oracle insta