新聞中心
淺談集群、分布式、微服務(wù)的異同
作者:Mike 2019-05-24 14:45:17
運維
系統(tǒng)運維
分布式 分布式是以縮短單個任務(wù)的執(zhí)行時間來提升效率的,而集群則是通過提高單位時間內(nèi)執(zhí)行的任務(wù)數(shù)來提升效率。分布式和微服務(wù)的架構(gòu)很相似,只是部署的方式不一樣而已。

公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出舒蘭免費做網(wǎng)站回饋大家。
什么是集群
集群是指將多臺服務(wù)器集中在一起,每臺服務(wù)器都實現(xiàn)相同的業(yè)務(wù),做相同的事情。但是每臺服務(wù)器并不是缺一不可,存在的作用主要是緩解并發(fā)壓力和單點故障轉(zhuǎn)移問題。我們可以利用一些廉價的符合工業(yè)標(biāo)準(zhǔn)的硬件構(gòu)造高擴(kuò)展、高性能、低成本、高可用的系統(tǒng)。
集群主要具有以下特性:
- 伸縮性(Scalability)
在一些大的系統(tǒng)中,預(yù)測最終用戶的數(shù)量和行為是非常困難的,伸縮性是指系統(tǒng)適應(yīng)不斷增長的用戶數(shù)的能力。提高這種并發(fā)會話能力的一種最直觀的方式就是增加資源(CPU,內(nèi)存,硬盤等),集群是解決這個問題的另一種方式,它允許一組服務(wù)器組在一起,像單個服務(wù)器一樣分擔(dān)處理一個繁重的任務(wù),我們只需要將新的服務(wù)器加入集群中即可,對于客戶來看,服務(wù)無論從連續(xù)性還是性能上都幾乎沒有變化,好像系統(tǒng)在不知不覺中完成了升級。
- 高可用性(High availability)
單一服務(wù)器的解決方案并不是一個健壯方式,因為容易出現(xiàn)單點失效。像銀行、賬單處理這樣一些關(guān)鍵的應(yīng)用程序是不能容忍的,哪怕是幾分鐘的死機(jī)。它們需要這樣一些服務(wù)在任何時間都可以訪問并在可預(yù)期的合理時間周期內(nèi)有響應(yīng)。高可用性集群的出現(xiàn)就是為了使集群的整體服務(wù)盡可能可用,以便考慮計算硬件和軟件的易錯性。如果高可用性集群中的主節(jié)點發(fā)生了故障,那么這段時間內(nèi)將由次節(jié)點代替它。次節(jié)點通常是主節(jié)點的鏡像,所以當(dāng)它代替主節(jié)點時,它可以完全接管其身份。因此系統(tǒng)環(huán)境對于用戶是一致的。
- 負(fù)載均衡(Load balancing)
負(fù)載均衡集群為企業(yè)需求提供了更實用的系統(tǒng)。如名稱所暗示的,該系統(tǒng)使負(fù)載可以在計算機(jī)集群中盡可能平均地分?jǐn)偺幚?。該?fù)載可能是需要均衡的應(yīng)用程序處理負(fù)載或網(wǎng)絡(luò)流量負(fù)載。這樣的系統(tǒng)非常適合于運行同一組應(yīng)用程序的大量用戶。每個節(jié)點都可以處理一部分負(fù)載,并且可以在節(jié)點之間動態(tài)分配負(fù)載,以實現(xiàn)平衡。
- 高性能 (High Performance)
通常,這種設(shè)計的集群是用來開發(fā)并行編程應(yīng)用程序,以解決復(fù)雜的科學(xué)問題。并行計算(或稱平行計算)是相對于串行計算來說的,并行計算能力的目的是用來提高計算速度。它實際是一個計算機(jī)集群,其處理能力與真的超級計算機(jī)相等。
什么是分布式
分布式服務(wù)是指將多臺服務(wù)器集中在一起,服務(wù)是分散部署在不同的機(jī)器上的。每臺服務(wù)器都實現(xiàn)總體中的不同業(yè)務(wù),做不同的事情。一個服務(wù)可能負(fù)責(zé)幾個功能,是一種面向 SOA 的架構(gòu)。各分開部署的部分彼此通過各種通訊協(xié)議交互信息,并且每臺服務(wù)器都缺一不可,如果某臺服務(wù)器故障,則部分功能缺失,或?qū)е抡w無法運行。
分布式存在的主要作用是大幅度的提高效率,緩解服務(wù)器的訪問和存儲壓力。區(qū)別分布式的方式是一個業(yè)務(wù)分拆多個子業(yè)務(wù),部署在不同的服務(wù)器上。
例如:將一個大的系統(tǒng)劃分為多個業(yè)務(wù)模塊,業(yè)務(wù)模塊分別部署到不同的機(jī)器上,各個業(yè)務(wù)模塊之間通過接口進(jìn)行數(shù)據(jù)交互。
上圖中 Service A、B、C、D 分別是業(yè)務(wù)組件,通過 API Geteway 進(jìn)行業(yè)務(wù)訪問。
什么是微服務(wù)
微服務(wù)的概念和分布式比較相似,微服務(wù)是一種架構(gòu)風(fēng)格。簡單來說微服務(wù)就是很小的服務(wù),小到一個服務(wù)只對應(yīng)一個單一的功能。每個微服務(wù)僅關(guān)注于完成一件任務(wù)并很好地完成該任務(wù),這個服務(wù)可以單獨部署運行。 各個微服務(wù)之間是松耦合的,服務(wù)之間可以通過 RPC 來相互交互。每個微服務(wù)都是由獨立的小團(tuán)隊開發(fā)、測試、部署,上線,負(fù)責(zé)它的整個生命周期。
在做架構(gòu)設(shè)計時,當(dāng)你估算過最大用戶量和并發(fā)量后,計算出單個應(yīng)用服務(wù)器能否滿足需求。如果用戶量只有幾百人的小應(yīng)用,單體應(yīng)用就能搞定,即所有應(yīng)用部署在一個應(yīng)用服務(wù)器里。如果是很大用戶量,且某些功能會被頻繁訪問,或者某些功能計算量很大,建議將應(yīng)用拆解為多個子系統(tǒng),各自負(fù)責(zé)各自功能,這就是微服務(wù)架構(gòu)。
微服務(wù)的設(shè)計是為了不因為某個模塊的升級和 BUG 影響現(xiàn)有的整個系統(tǒng)業(yè)務(wù)。微服務(wù)與分布式的細(xì)微差別是,微服務(wù)的應(yīng)用不一定是分散在多個服務(wù)器上,它也可以是同一個服務(wù)器。
微服務(wù)相比分布式服務(wù)來說,它的粒度更小,服務(wù)之間耦合度更低。由于每個微服務(wù)都由獨立的小團(tuán)隊負(fù)責(zé),因此它敏捷性更高。分布式服務(wù)最后都會向微服務(wù)架構(gòu)演化,這是一種趨勢。不過服務(wù)微服務(wù)化后帶來的挑戰(zhàn)也是顯而易見的,例如服務(wù)粒度小,數(shù)量大,后期運維難度會增大。
集群、分布式、微服務(wù)的異同及聯(lián)系
1. 分布式是以縮短單個任務(wù)的執(zhí)行時間來提升效率的,而集群則是通過提高單位時間內(nèi)執(zhí)行的任務(wù)數(shù)來提升效率。
例如:如果一個任務(wù)由 10 個子任務(wù)組成,每個子任務(wù)單獨執(zhí)行需 1 小時,則在一臺服務(wù)器上執(zhí)行該任務(wù)需 10 小時。
- 采用分布式方案,提供 10 臺服務(wù)器,每臺服務(wù)器只負(fù)責(zé)處理一個子任務(wù),不考慮子任務(wù)間的依賴關(guān)系,執(zhí)行完這個任務(wù)只需一個小時。(這種工作模式的一個典型代表就是 Hadoop 的 Map/Reduce 分布式計算模型)
- 采用集群方案,同樣提供 10 臺服務(wù)器,每臺服務(wù)器都能獨立處理這個任務(wù)。假設(shè)有 10 個任務(wù)同時到達(dá),10 個服務(wù)器將同時工作,1 小時后,10 個任務(wù)同時完成。這樣整體來看,還是 1 小時內(nèi)完成一個任務(wù)。
注:分布式需要做好事務(wù)管理。
2. 集群模式是不同服務(wù)器部署同一套服務(wù)對外訪問,實現(xiàn)服務(wù)的負(fù)載均衡。區(qū)別集群的方式是根據(jù)部署多臺服務(wù)器業(yè)務(wù)是否相同,分布式中的每一個節(jié)點,都可以做集群。而集群并不一定就是分布式的。
舉例:就比如新浪網(wǎng)訪問的人多了,他可以做一個群集。前面放一個響應(yīng)服務(wù)器,后面幾臺服務(wù)器完成同一業(yè)務(wù)。如果有業(yè)務(wù)訪問的時候,響應(yīng)服務(wù)器看哪臺服務(wù)器的負(fù)載不是很重,就將任務(wù)調(diào)度給哪一臺去完成。
而分布式,從窄意上理解也跟集群差不多。但是它的組織比較松散,不像集群有一個組織性,一臺服務(wù)器垮了,其它的服務(wù)器可以頂上來。分布式的每一個節(jié)點都完成不同的業(yè)務(wù),一個節(jié)點垮了那這個業(yè)務(wù)就不可訪問了。
注:集群模式需要做好 Session 共享,確保在不同服務(wù)器切換的過程中不會因為沒有獲取到 Session 而引起服務(wù)終止。
3. 分布式與微服務(wù)的關(guān)系
分布式和微服務(wù)的架構(gòu)很相似,只是部署的方式不一樣而已。
生產(chǎn)環(huán)境下的微服務(wù)肯定是分布式部署的,分布式部署的應(yīng)用不一定是微服務(wù)架構(gòu)的。比如集群部署,它是把相同應(yīng)用復(fù)制到不同服務(wù)器上,但是邏輯功能上還是單體應(yīng)用。
4. 在開發(fā)中我們可以將分布式和集群分開嗎?
針對這個問題,我們可以根據(jù)分布式的介紹看出,其主要的功能是用來將我們的系統(tǒng)模塊化,將系統(tǒng)進(jìn)行解耦的,方便我們以后的維護(hù)和開發(fā)的。但是其并不能解決我們的并發(fā)問題,也無法保證我們的系統(tǒng)在服務(wù)器宕機(jī)后的正常運轉(zhuǎn)。
而集群恰好彌補了分布式的缺陷,集群就是多個服務(wù)器處理相同的業(yè)務(wù)。這在一方面可以解決或者說改善我們系統(tǒng)的并發(fā)問題,一方面可以解決我們服務(wù)器如果出現(xiàn)一定數(shù)量的宕機(jī)后,系統(tǒng)仍然可以正常運轉(zhuǎn)。
好的設(shè)計應(yīng)該是分布式和集群相結(jié)合,先分布式再集群。具體實現(xiàn)就是業(yè)務(wù)拆分成很多子業(yè)務(wù),然后針對每個子業(yè)務(wù)進(jìn)行集群部署。這樣每個子業(yè)務(wù)如果出了問題,整個系統(tǒng)完全不會受影響。
因此,分布式和集群是一對好基友,誰也離不開誰。
分享題目:淺談集群、分布式、微服務(wù)的異同
網(wǎng)站路徑:http://fisionsoft.com.cn/article/dhheiej.html


咨詢
建站咨詢
