微服務(wù)和分布式的區(qū)別
微服務(wù)和分布式的區(qū)別
1.?
集群、分布式、微服務(wù)概念和區(qū)別
轉(zhuǎn)自: https://blog.csdn.net/qq_37788067/article/details/79250623 概念: 集群是個(gè)物理形態(tài),分布式是個(gè)工作方式。 1.分布式:一個(gè)業(yè)務(wù)分拆多個(gè)子業(yè)務(wù),部署在不同的服務(wù)器上 2.集群:同一個(gè)業(yè)務(wù),部署在多個(gè)服務(wù)器上 分布式是指將不同的業(yè)務(wù)分布在不同的地方。
而集群指的是將幾臺(tái)服務(wù)器集中在一起,實(shí)現(xiàn)同一業(yè)務(wù)。
分布式中的每一個(gè)節(jié)點(diǎn),都可以做集群。而集群并不一定就是分布式的。 舉例:就比如新浪網(wǎng),訪問(wèn)的人多了,他可以做一個(gè)集群,前面放一個(gè)響應(yīng)服務(wù)器,后面幾臺(tái)服務(wù)器完成同一業(yè)務(wù),如果有業(yè)務(wù)訪問(wèn)的時(shí)候,響應(yīng)服務(wù)器看哪臺(tái)服務(wù)器的負(fù)載不是很重,就將給哪一臺(tái)去完成。 而分布式,從窄意上理解,也跟集群差不多,但是它的組織比較松散,不像集群,有一個(gè)組織性,一臺(tái)服務(wù)器垮了,其它的服務(wù)器可以頂上來(lái)。
分布式的每一個(gè)節(jié)點(diǎn),都完成不同的業(yè)務(wù),一個(gè)節(jié)點(diǎn)垮了,那這個(gè)業(yè)務(wù)就不可訪問(wèn)了。 簡(jiǎn)單說(shuō),分布式是以縮短單個(gè)任務(wù)的執(zhí)行時(shí)間來(lái)提升效率的,而集群則是通過(guò)提高單位時(shí)間內(nèi)執(zhí)行的任務(wù)數(shù)來(lái)提升效率。 例如:如果一個(gè)任務(wù)由 10 個(gè)子任務(wù)組成,每個(gè)子任務(wù)單獨(dú)執(zhí)行需 1 小時(shí),則在一臺(tái)服務(wù)器上執(zhí)行該任務(wù)需 10 小時(shí)。
采用分布式方案,提供 10 臺(tái)服務(wù)器,每臺(tái)服務(wù)器只負(fù)責(zé)處理一個(gè)子任務(wù),不考慮子任務(wù)間的依賴關(guān)系,執(zhí)行完這個(gè)任務(wù)只需一個(gè)小時(shí)。(這種工作模式的一個(gè)典型代表就是 Hadoop 的 Map/Reduce 分布式計(jì)算模型) 而采用集群方案,同樣提供 10 臺(tái)服務(wù)器,每臺(tái)服務(wù)器都能獨(dú)立處理這個(gè)任務(wù)。假設(shè)有 10 個(gè)任務(wù)同時(shí)到達(dá),10 個(gè)服務(wù)器將同時(shí)工作,1 小時(shí)后,10 個(gè)任務(wù)同時(shí)完成,這樣,整體來(lái)看,還是 1 小時(shí)內(nèi)完成一個(gè)任務(wù)! 好的設(shè)計(jì)應(yīng)該是分布式和集群的結(jié)合,先分布式再集群,具體實(shí)現(xiàn)就是業(yè)務(wù)拆分成很多子業(yè)務(wù),然后針對(duì)每個(gè)子業(yè)務(wù)進(jìn)行集群部署,這樣每個(gè)子業(yè)務(wù)如果出了問(wèn)題,整個(gè)系統(tǒng)完全不會(huì)受影響。
另外,還有一個(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ù)能力。 集群模式是不同服務(wù)器部署同一套服務(wù)對(duì)外訪問(wèn),實(shí)現(xiàn)服務(wù)的負(fù)載均衡。區(qū)別集群的方式是根據(jù)部署多臺(tái)服務(wù)器業(yè)務(wù)是否相同。
注:集群模式需要做好session共享,確保在不同服務(wù)器切換的過(guò)程中不會(huì)因?yàn)闆](méi)有獲取到session而中止退出服務(wù)。 一般配置Nginx的負(fù)載容器實(shí)現(xiàn):靜態(tài)資源緩存、Session共享可以附帶實(shí)現(xiàn),Nginx支持5000個(gè)并發(fā)量。 答案是肯定的。 微服務(wù) 的意思也就是將模塊拆分成一個(gè)獨(dú)立的服務(wù)單元通過(guò)接口來(lái)實(shí)現(xiàn)數(shù)據(jù)的交互。
微服務(wù)的設(shè)計(jì)是為了不因?yàn)槟硞€(gè)模塊的升級(jí)和BUG影響現(xiàn)有的系統(tǒng)業(yè)務(wù)。微服務(wù)與分布式的細(xì)微差別是,微服務(wù)的應(yīng)用不一定是分散在多個(gè)服務(wù)器上,他也可以是同一個(gè)服務(wù)器。
一分鐘弄懂什么是分布式和微服務(wù)
簡(jiǎn)單的說(shuō),微服務(wù)是架構(gòu)設(shè)計(jì)方式,分布式是系統(tǒng)部署方式,兩者概念不同 微服務(wù)是啥? 這里不引用書(shū)本上的復(fù)雜概論了,簡(jiǎn)單來(lái)說(shuō)微服務(wù)就是很小的服務(wù),小到一個(gè)服務(wù)只對(duì)應(yīng)一個(gè)單一的功能,只做一件事。這個(gè)服務(wù)可以單獨(dú)部署運(yùn)百科行,服務(wù)之間可以通過(guò)RPC來(lái)相互交互,每個(gè)微服務(wù)都是由獨(dú)立的小團(tuán)隊(duì)開(kāi)發(fā),測(cè)試,部署,上線,負(fù)責(zé)它的整個(gè)生命周期。
微服務(wù)架構(gòu)又是啥? 在做架構(gòu)設(shè)計(jì)的時(shí)候,先做邏輯架構(gòu),再做物理架構(gòu),當(dāng)你拿到需求后,估算過(guò)**用戶量和并發(fā)量后,計(jì)算單個(gè)應(yīng)用服務(wù)器能否滿足需求,如果用戶量只有幾百人的小應(yīng)用,單體應(yīng)用就能搞定,即所有應(yīng)用部署在一個(gè)應(yīng)用服務(wù)器里,如果是很大用戶量,且某些功能會(huì)被頻繁訪問(wèn),或者某些功能計(jì)算量很大,建議將應(yīng)用拆解為多個(gè)子系統(tǒng),各自負(fù)責(zé)各自功能,這就是微服務(wù)架構(gòu)。
那么分布式又是啥? 分布式服務(wù)顧名思義服務(wù)是分散部署在不同的機(jī)器上的,一個(gè)服務(wù)可能負(fù)責(zé)幾個(gè)功能,是一種面向SOA架構(gòu)的,服務(wù)之間也是通過(guò)rpc來(lái)交互或者是webservice來(lái)交互的。邏輯架構(gòu)設(shè)計(jì)完后就該做物理架構(gòu)設(shè)計(jì),系統(tǒng)應(yīng)用部署在超過(guò)一臺(tái)服務(wù)器或虛擬機(jī)上,且各分開(kāi)部署的部分彼此通過(guò)各種通訊協(xié)議交互信息,就可算作分布式部署,生產(chǎn)環(huán)境下的微服務(wù)肯定是分布式部署的,分布式部署的應(yīng)用不一定是微服務(wù)架構(gòu)的,比如集群部署,它是把相同應(yīng)用**到不同服務(wù)器上,但是邏輯功能上還是單體應(yīng)用。