淺談集群、分布式、微服務的異同

2020-12-13 西部數碼資訊門戶

什麼是集群

集群是指將多臺伺服器集中在一起,每臺伺服器都實現相同的業務,做相同的事情。但是每臺伺服器並不是缺一不可,存在的作用主要是緩解並發壓力和單點故障轉移問題。我們可以利用一些廉價的符合工業標準的硬體構造高擴展、高性能、低成本、高可用的系統。

集群主要具有以下特性:

在一些大的系統中,預測最終用戶的數量和行為是非常困難的,伸縮性是指系統適應不斷增長的用戶數的能力。提高這種並發會話能力的一種最直觀的方式就是增加資源(CPU,內存,硬碟等),集群是解決這個問題的另一種方式,它允許一組伺服器組在一起,像單個伺服器一樣分擔處理一個繁重的任務,我們只需要將新的伺服器加入集群中即可,對於客戶來看,服務無論從連續性還是性能上都幾乎沒有變化,好像系統在不知不覺中完成了升級。

單一伺服器的解決方案並不是一個健壯方式,因為容易出現單點失效。像銀行、帳單處理這樣一些關鍵的應用程式是不能容忍的,哪怕是幾分鐘的死機。它們需要這樣一些服務在任何時間都可以訪問並在可預期的合理時間周期內有響應。高可用性集群的出現就是為了使集群的整體服務儘可能可用,以便考慮計算硬體和軟體的易錯性。如果高可用性集群中的主節點發生了故障,那麼這段時間內將由次節點代替它。次節點通常是主節點的鏡像,所以當它代替主節點時,它可以完全接管其身份。因此系統環境對於用戶是一致的。

負載均衡集群為企業需求提供了更實用的系統。如名稱所暗示的,該系統使負載可以在計算機集群中儘可能平均地分攤處理。該負載可能是需要均衡的應用程式處理負載或網絡流量負載。這樣的系統非常適合於運行同一組應用程式的大量用戶。每個節點都可以處理一部分負載,並且可以在節點之間動態分配負載,以實現平衡。

通常,這種設計的集群是用來開發並行編程應用程式,以解決複雜的科學問題。並行計算(或稱平行計算)是相對於串行計算來說的,並行計算能力的目的是用來提高計算速度。它實際是一個計算機集群,其處理能力與真的超級計算機相等。

什麼是分布式

分布式服務是指將多臺伺服器集中在一起,服務是分散部署在不同的機器上的。每臺伺服器都實現總體中的不同業務,做不同的事情。一個服務可能負責幾個功能,是一種面向 SOA 的架構。各分開部署的部分彼此通過各種通訊協議交互信息,並且每臺伺服器都缺一不可,如果某臺伺服器故障,則部分功能缺失,或導致整體無法運行。

分布式存在的主要作用是大幅度的提高效率,緩解伺服器的訪問和存儲壓力。區別分布式的方式是一個業務分拆多個子業務,部署在不同的伺服器上。

例如:將一個大的系統劃分為多個業務模塊,業務模塊分別部署到不同的機器上,各個業務模塊之間通過接口進行數據交互。

什麼是微服務

微服務的概念和分布式比較相似,微服務是一種架構風格。簡單來說微服務就是很小的服務,小到一個服務只對應一個單一的功能。每個微服務僅關注於完成一件任務並很好地完成該任務,這個服務可以單獨部署運行。 各個微服務之間是鬆耦合的,服務之間可以通過 RPC 來相互交互。每個微服務都是由獨立的小團隊開發、測試、部署,上線,負責它的整個生命周期。

在做架構設計時,當你估算過最大用戶量和並發量後,計算出單個應用伺服器能否滿足需求。如果用戶量只有幾百人的小應用,單體應用就能搞定,即所有應用部署在一個應用伺服器裡。如果是很大用戶量,且某些功能會被頻繁訪問,或者某些功能計算量很大,建議將應用拆解為多個子系統,各自負責各自功能,這就是微服務架構。

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

微服務相比分布式服務來說,它的粒度更小,服務之間耦合度更低。由於每個微服務都由獨立的小團隊負責,因此它敏捷性更高。分布式服務最後都會向微服務架構演化,這是一種趨勢。不過服務微服務化後帶來的挑戰也是顯而易見的,例如服務粒度小,數量大,後期運維難度會增大。

集群、分布式、微服務的異同及聯繫

1. 分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。

例如:如果一個任務由 10 個子任務組成,每個子任務單獨執行需 1 小時,則在一臺伺服器上執行該任務需 10 小時。

  • 採用分布式方案,提供 10 臺伺服器,每臺伺服器只負責處理一個子任務,不考慮子任務間的依賴關係,執行完這個任務只需一個小時。(這種工作模式的一個典型代表就是 Hadoop 的 Map/Reduce 分布式計算模型)
  • 採用集群方案,同樣提供 10 臺伺服器,每臺伺服器都能獨立處理這個任務。假設有 10 個任務同時到達,10 個伺服器將同時工作,1 小時後,10 個任務同時完成。這樣整體來看,還是 1 小時內完成一個任務。

註:分布式需要做好事務管理。

2. 集群模式是不同伺服器部署同一套服務對外訪問,實現服務的負載均衡。區別集群的方式是根據部署多臺伺服器業務是否相同,分布式中的每一個節點,都可以做集群。而集群並不一定就是分布式的。

舉例:就比如新浪網訪問的人多了,他可以做一個群集。前面放一個響應伺服器,後面幾臺伺服器完成同一業務。如果有業務訪問的時候,響應伺服器看哪臺伺服器的負載不是很重,就將任務調度給哪一臺去完成。

而分布式,從窄意上理解也跟集群差不多。但是它的組織比較鬆散,不像集群有一個組織性,一臺伺服器垮了,其它的伺服器可以頂上來。分布式的每一個節點都完成不同的業務,一個節點垮了那這個業務就不可訪問了。

註:集群模式需要做好 Session 共享,確保在不同伺服器切換的過程中不會因為沒有獲取到 Session 而引起服務終止。

3. 分布式與微服務的關係

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

生產環境下的微服務肯定是分布式部署的,分布式部署的應用不一定是微服務架構的。比如集群部署,它是把相同應用複製到不同伺服器上,但是邏輯功能上還是單體應用。

4. 在開發中我們可以將分布式和集群分開嗎?

針對這個問題,我們可以根據分布式的介紹看出,其主要的功能是用來將我們的系統模塊化,將系統進行解耦的,方便我們以後的維護和開發的。但是其並不能解決我們的並發問題,也無法保證我們的系統在伺服器宕機後的正常運轉。

而集群恰好彌補了分布式的缺陷,集群就是多個伺服器處理相同的業務。這在一方面可以解決或者說改善我們系統的並發問題,一方面可以解決我們伺服器如果出現一定數量的宕機後,系統仍然可以正常運轉。

好的設計應該是分布式和集群相結合,先分布式再集群。具體實現就是業務拆分成很多子業務,然後針對每個子業務進行集群部署。這樣每個子業務如果出了問題,整個系統完全不會受影響。

因此,分布式和集群是一對好基友,誰也離不開誰。(作者:Mike)

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請儘快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯繫客服。電話:028-62778877-8261;郵箱:jenny@west.cn。本站原創內容未經允許不得轉載,或轉載時需註明出處::西部數碼資訊門戶 » 淺談集群、分布式、微服務的異同

相關焦點

  • 3分鐘讀懂何為分布式、微服務和集群!
    一、分布式小馬正在經營一個在線購物網站,名叫TT貓,有商品管理、訂單管理、用戶管理、支付管理、購物車等模塊,每個模塊部署到獨立的雲服務主機。
  • 華為自爆宇宙級:基於SpringBoot+Cloud微服務分布式架構實戰手冊
    通過學習前半部分的內容,你可以基本搭建Consul集群、多個微服務、微服務間通信、負載均衡、斷路器的分布式基本結構,後半部分的內容主要介紹如何編寫微服務業務代碼,包括Spring Boot、 MySQL、 Redis、 緩存一致性、事務、異步線程池、分布式消息通信、分布式任務調度管理及FastDFS分布式文件管理。
  • SpringCloud:分布式微服務架構
    概念微服務是一種架構風格,它是一種將一個單一應用程式開發為一組小型服務的方法,每個服務運行在自己的進程中,服務間通信採用輕量級通信機制(通常採用http)。特徵每個微服務可獨立運行在自己的進程中。一系列獨立運行的微服務共同構建起整個系統。每個服務為獨立的業務開發,一個微服務只關注某個特定的功能。
  • 2021升級版微服務教程—為什麼會有微服務?什麼是SpringCloud?
    分析升級的方向:資料庫 和 應用代碼要放在不同的伺服器上 增加應用負載能力【集群】 於是增加負載均衡。2.負載均衡分布式:一個系統 通過多臺伺服器 協同完成系統功能集群:同一個系統放在了多臺伺服器上 且每個伺服器上內容相同 複製了多份image-20200317145056653 負載均衡的問題 成本 Session 增加負載均衡之後,應用伺服器不再是系統的瓶頸了,可以靈活的隨著訪問量增大的同時增加應用伺服器集群的數量
  • 美團T9都說太「強」了,以微服務分布式的實戰詳解SpringCloud
    隨著微服務架構的興起,國內的IT企業特別是網際網路公司近年來都逐步引入了微服務技術並使其在實踐中落地,實施微服務架構最流行的方案非SpringCloud莫屬。從企業的真實需求出發,理論結合實際,深入講解SpringCloud微服務和分布式系統的知識。
  • 分布式系統架構與雲原生—阿里雲《雲原生架構白皮書》導讀
    通常來說,對於信息系統的架構方式的進化和改變即是伴隨著接入數據和所提供的業務由少變多的過程,目前為止信息系統的架構經歷了單機架構、集群架構、分布式架構、分布式多活數據中心架構幾個階段,同時伴隨著業務系統架構一同演變的還有各種外圍系統和存儲系統,比如關係資料庫的分庫分表改造、從本地緩存過渡到分布式緩存等。
  • NutzWk 5.2.6 發布,Java 微服務分布式開發框架
    項目介紹:NutzWk 是有五年多歷史的Java Web開源開發框架,其5.x 是Java 微服務分布式版本
  • 7家公司拿了5個offer,無非就是問源碼、分布式微服務這些
    微服務相關面試題  1.前後端分離是如何做的?微服務哪些框架?  2.說說 RPC的實現原理、說說Dubbo的實現原理  3.微服務架構有哪些優勢?微服務有哪些特點?  4.設計微服務的最佳實踐是什麼?  5.微服務架構如何運作?  6.微服務架構的優缺點是什麼?  7.單片,SOA和微服務架構有什麼區別?  8.SOA和微服務架構之間的主要區別是什麼?
  • 集群_負載均衡_分布式的區別是什麼
    打開APP 集群_負載均衡_分布式的區別是什麼 發表於 2017-12-21 11:16:36 「集群」的概念,還可從另一角度來認識,即與機電式(縱橫制式)交換機類比,把有線的中繼視為無線信道,把交換機的標誌器視為集群系統的控制器,當中繼為全利用度時,就可認為是集群的信道。集群系統控制器能把有限的信道動態地、自動地最佳分配給系統的所有用戶,這實際上就是信道全利用度或我們經常使用的術語「信道共用」。
  • 微服務 SpringCloud Alibaba Seata處理分布式事務
    一、分布式事務問題什麼是分布式事務?一次業務操作需要跨多個數據源或需要跨多個系統進行遠程調用,就會產生分布式事務問題。例如,在微服務分布式架構中,一次網上購買操作涉及到,訂單系統,支付系統,積分系統,庫存系統,物流系統。一個業務邏輯,分別對應不同的系統,不同的數據源,其中一環出現問題,需要全部回退,這就是分布式事務要解決的問題。
  • 構建 Netflix 分布式追蹤(tracing)體系
    (1) https://netflixtechblog.com/edgar-solving-mysteries-faster-with-observability-e1a76302c71f分布式跟蹤:提供大規模服務中故障排查的上下文在使用 Edgar 之前,工程師必須從 Netflix 的各種微服務中篩選出大量的元數據和日誌
  • 專家博客:探討分布式系統與集群的區別
    【IT168 技術】簡單說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。  例如:如果一個任務由10個子任務組成,每個子任務單獨執行需1小時,則在一臺伺服器上執行改任務需10小時。
  • 巨杉金融級分布式資料庫SequoiaDB 3.2發布,特性全面強化
    作為一款金融級分布式關係型資料庫,巨杉資料庫連續兩年入選 Gartner 資料庫報告,在超過50家大型商業銀行的核心生產系統規模使用,其中單集群最大物理節點數達到135個,單集群最大存儲容量達2.1  PB,集群管理最大記錄數1318 億條,在容災安全性方面能做到RPO = 0 , RTO小於15秒。分布式資料庫是資料庫領域的一大創新,與傳統集中式資料庫有很大差別。
  • 集群和分布式,你知道其中的區別嗎?
    經常聽到MySql集群、Redis集群、分布式系統等概念,但是,很少有機會深究,到底什麼集群,什麼是分布式?在概念上這倆個詞很接近,難道不需要區分?其實,非常有必要區分這兩個概念,幫助我們對計算機的理論有更深入的理解。今天,我就嘗試去解釋一下這兩個概念。
  • 微服務架構的分布式容錯 · SOSP 2019
    S 模型與微服務架構微服務架構的複雜性來源於服務之間的大量交互以及網絡請求的不確定性,調用路徑上的任何服務超時或者宕機都可能影響用戶請求的處理,服務的宕機也可能會造成用戶無法感知請求的結果、系統處於異常狀態並無法回滾等問題。
  • 演講實錄|基於雲原生的敏態微服務全生命周期支撐平臺
    「雲原生」引爆億萬級蒼穹,「分布式雲」啟動新商業引擎,「分布式存儲」開創未來新篇。伴隨著5G商用時代的到來,在新一輪技術革命的關口,CDN+邊緣計算迎來新階段,分布式雲將加速這一變革的發生。2020年12月17日至18日,「Distributed Cloud | 2020全球分布式雲大會」在深圳正式拉開帷幕。
  • 什麼是集群,分布式,一直都沒有弄明白
    什麼是集群,分布式,一直都沒有弄明白文|洪生鵬什麼是集群、分布式,對於這些概念,剛開始接觸的時候,不知有沒有人像我一樣,有種有點可望不可及的感覺,很難理解。下面我們簡單對這兩個概念闡述下:什麼是集群維基百科是這樣描述的計算機集群簡稱集群是一種計算機系統,它通過一組鬆散集成的計算機軟體和/或硬體連接起來高度緊密地協作完成計算工作。
  • 我的天,你們公司的「微服務」簡直就是反人類……
    另外 Dubbo 也提供服務治理功能:Dubbo 提供了集群容錯的能力,在管理後臺可以快速的摘除失敗的服務。從我們上面提到的一整套微服務應該提供的功能看,Dubbo 只是提供了服務註冊與服務發現的功能。不可否認在這一項功能中,Dubbo 做的是非常優秀的。
  • Kong 0.13.1 發布, 分布式微服務抽象層
    完整更新內容請查閱更新日誌Kong 是一個雲原生、快速、可擴展和分布式的微服務抽象層(也稱為 API 網關),通過插件擴展功能。Kong 有兩個主要組件:基於 nginx 的伺服器,用來接收 API 請求的 Kong Server;以及用來存儲操作數據的 Apache Cassandra 。
  • 如何理解分布式與集群,二者區別是什麼?
    分布式是指不同的業務分布在不同的地方,集群指的是將幾臺伺服器集中在一起,實現同一業務。(這就是運用集群原理)後期:用戶訪問量不斷增加,響應速度變慢,伺服器又崩了,在不考慮增加伺服器帶寬、內存和CPU的情況下如何解決這個問題?先解決響應速度變慢,用戶頻繁調用資料庫,在客戶端與資料庫之間,使用redis緩存。