什么是集群,分布式,微服务?
概念
1、什么是集群
集群:同一個業(yè)務(wù),部署在多個服務(wù)器上(不同的服務(wù)器運(yùn)行同樣的代碼,干同一件事)
集群是指將多臺服務(wù)器集中在一起,每臺服務(wù)器都實(shí)現(xiàn)相同的業(yè)務(wù),做相同的事情。如果一臺死機(jī),另一臺可以起作用。
但是每臺服務(wù)器并不是缺一不可,存在的作用主要是緩解并發(fā)壓力和單點(diǎn)故障轉(zhuǎn)移問題。我們可以利用一些廉價的符合工業(yè)標(biāo)準(zhǔn)的硬件構(gòu)造高擴(kuò)展、高性能、低成本、高可用的系統(tǒng)。
2、什么是分布式
分布式:一個業(yè)務(wù)分拆多個子業(yè)務(wù),部署在不同的服務(wù)器上(不同的服務(wù)器,運(yùn)行不同的代碼,為了同一個目。而集群指的是將幾臺服務(wù)器集中在一起,實(shí)現(xiàn)同一業(yè)務(wù)。
好處: 模塊之間獨(dú)立,各做各的事,便于擴(kuò)展,復(fù)用性高 高吞吐量
簡單說,分布式是以縮短單個任務(wù)的執(zhí)行時間來提升效率的,而集群則是通過提高單位時間內(nèi)執(zhí)行的任務(wù)數(shù)來提升效率。
例如:如果一個任務(wù)由 10 個子任務(wù)組成,每個子任務(wù)單獨(dú)執(zhí)行需 1 小時,則在一臺服務(wù)器上執(zhí)行該任務(wù)需 10 小時。
采用分布式方案,提供 10 臺服務(wù)器,每臺服務(wù)器只負(fù)責(zé)處理一個子任務(wù),不考慮子任務(wù)間的依賴關(guān)系,執(zhí)行完這個任務(wù)只需一個小時。(這種工作模式的一個典型代表就是 Hadoop 的 Map/Reduce 分布式計(jì)算模型)
采用集群方案,同樣提供 10 臺服務(wù)器,每臺服務(wù)器都能獨(dú)立處理這個任務(wù)。假設(shè)有 10 個任務(wù)同時到達(dá),10 個服務(wù)器將同時工作,1 小時后,10 個任務(wù)同時完成。這樣整體來看,還是 1 小時內(nèi)完成一個任務(wù)。
注:分布式需要做好事務(wù)管理。
一個服務(wù)可能負(fù)責(zé)幾個功能,是一種面向 SOA的架構(gòu)。各分開部署的部分彼此通過各種通訊協(xié)議交互信息,并且每臺服務(wù)器都缺一不可,如果某臺服務(wù)器故障,則部分功能缺失,或?qū)е抡w無法運(yùn)行。
所以:好的設(shè)計(jì)應(yīng)該是分布式和集群相結(jié)合,先分布式再集群。具體實(shí)現(xiàn)就是業(yè)務(wù)拆分成很多子業(yè)務(wù),然后針對每個子業(yè)務(wù)進(jìn)行集群部署。這樣每個子業(yè)務(wù)如果出了問題,整個系統(tǒng)完全不會受影響。
3、什么是微服務(wù)
微服務(wù)的概念和分布式比較相似,微服務(wù)是一種架構(gòu)風(fēng)格。簡單來說微服務(wù)就是很小的服務(wù),小到一個服務(wù)只對應(yīng)一個單一的功能。每個微服務(wù)僅關(guān)注于完成一件任務(wù)并很好地完成該任務(wù),這個服務(wù)可以單獨(dú)部署運(yùn)行。 各個微服務(wù)之間是松耦合的,服務(wù)之間可以通過 RPC 來相互交互。每個微服務(wù)都是由獨(dú)立的小團(tuán)隊(duì)開發(fā)、測試、部署,上線,負(fù)責(zé)它的整個生命周期。
在做架構(gòu)設(shè)計(jì)時,當(dāng)你估算過最大用戶量和并發(fā)量后,計(jì)算出單個應(yīng)用服務(wù)器能否滿足需求。如果用戶量只有幾百人的小應(yīng)用,單體應(yīng)用就能搞定,即所有應(yīng)用部署在一個應(yīng)用服務(wù)器里。如果是很大用戶量,且某些功能會被頻繁訪問,或者某些功能計(jì)算量很大,建議將應(yīng)用拆解為多個子系統(tǒng),各自負(fù)責(zé)各自功能,這就是微服務(wù)架構(gòu)。
微服務(wù)的設(shè)計(jì)是為了不因?yàn)槟硞€模塊的升級和 BUG 影響現(xiàn)有的整個系統(tǒng)業(yè)務(wù)。微服務(wù)與分布式的細(xì)微差別是,微服務(wù)的應(yīng)用不一定是分散在多個服務(wù)器上,它也可以是同一個服務(wù)器。
微服務(wù)相比分布式服務(wù)來說,它的粒度更小,服務(wù)之間耦合度更低。由于每個微服務(wù)都由獨(dú)立的小團(tuán)隊(duì)負(fù)責(zé),因此它敏捷性更高。分布式服務(wù)最后都會向微服務(wù)架構(gòu)演化,這是一種趨勢。不過服務(wù)微服務(wù)化后帶來的挑戰(zhàn)也是顯而易見的,例如服務(wù)粒度小,數(shù)量大,后期運(yùn)維難度會增大。
集群、分布式、微服務(wù)的異同及聯(lián)系
1.分布式與微服務(wù)的關(guān)系
分布式和微服務(wù)的架構(gòu)很相似,只是部署的方式不一樣而已。
生產(chǎn)環(huán)境下的微服務(wù)肯定是分布式部署的,分布式部署的應(yīng)用不一定是微服務(wù)架構(gòu)的。比如集群部署,它是把相同應(yīng)用復(fù)制到不同服務(wù)器上,但是邏輯功能上還是單體應(yīng)用。
2.集群模式是不同服務(wù)器部署同一套服務(wù)對外訪問,實(shí)現(xiàn)服務(wù)的負(fù)載均衡。區(qū)別集群的方式是根據(jù)部署多臺服務(wù)器業(yè)務(wù)是否相同,分布式中的每一個節(jié)點(diǎn),都可以做集群。而集群并不一定就是分布式的。
舉例:就比如新浪網(wǎng)訪問的人多了,他可以做一個群集。前面放一個響應(yīng)服務(wù)器,后面幾臺服務(wù)器完成同一業(yè)務(wù)。如果有業(yè)務(wù)訪問的時候,響應(yīng)服務(wù)器看哪臺服務(wù)器的負(fù)載不是很重,就將任務(wù)調(diào)度給哪一臺去完成。
而分布式,從窄意上理解也跟集群差不多。但是它的組織比較松散,不像集群有一個組織性,一臺服務(wù)器垮了,其它的服務(wù)器可以頂上來。分布式的每一個節(jié)點(diǎn)都完成不同的業(yè)務(wù),一個節(jié)點(diǎn)垮了那這個業(yè)務(wù)就不可訪問了。
注:集群模式需要做好 Session 共享,確保在不同服務(wù)器切換的過程中不會因?yàn)闆]有獲取到 Session 而引起服務(wù)終止。
3.在開發(fā)中我們可以將分布式和集群分開嗎?
針對這個問題,我們可以根據(jù)分布式的介紹看出,其主要的功能是用來將我們的系統(tǒng)模塊化,將系統(tǒng)進(jìn)行解耦的,方便我們以后的維護(hù)和開發(fā)的。但是其并不能解決我們的并發(fā)問題,也無法保證我們的系統(tǒng)在服務(wù)器宕機(jī)后的正常運(yùn)轉(zhuǎn)。
而集群恰好彌補(bǔ)了分布式的缺陷,集群就是多個服務(wù)器處理相同的業(yè)務(wù)。這在一方面可以解決或者說改善我們系統(tǒng)的并發(fā)問題,一方面可以解決我們服務(wù)器如果出現(xiàn)一定數(shù)量的宕機(jī)后,系統(tǒng)仍然可以正常運(yùn)轉(zhuǎn)。
好的設(shè)計(jì)應(yīng)該是分布式和集群相結(jié)合,先分布式再集群。具體實(shí)現(xiàn)就是業(yè)務(wù)拆分成很多子業(yè)務(wù),然后針對每個子業(yè)務(wù)進(jìn)行集群部署。這樣每個子業(yè)務(wù)如果出了問題,整個系統(tǒng)完全不會受影響。
總結(jié)
以上是生活随笔為你收集整理的什么是集群,分布式,微服务?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试题目汇总
- 下一篇: 使用iozone进行磁盘读写性能测试