1. 程式人生 > 其它 >分散式和微服務的區別

分散式和微服務的區別

簡單的說,微服務是架構設計方式,分散式是系統部署方式,兩者概念不同。(微服務重在解耦合,使每個模組都獨立。分散式重在資源共享與加快計算機計算速度。)

微服務是啥?

這裡不引用書本上的複雜概論了,簡單來說微服務就是很小的服務,小到一個服務只對應一個單一的功能,只做一件事。這個服務可以單獨部署執行,服務之間可以通過RPC來相互互動,每個微服務都是由獨立的小團隊開發,測試,部署,上線,負責它的整個生命週期。

微服務架構又是啥?

    在做架構設計的時候,先做邏輯架構,再做物理架構,當你拿到需求後,估算過最大使用者量和併發量後,計算單個應用伺服器能否滿足需求,
如果使用者量只有幾百人的小應用,單體應用就能搞定,即所有應用部署在一個應用伺服器裡
如果是很大使用者量,且某些功能會被頻繁訪問,或者某些功能計算量很大,

建議將應用拆解為多個子系統,各自負責各自功能,這就是微服務架構。

那麼分散式又是啥

    分散式服務顧名思義服務是分散部署在不同的機器上的,一個服務可能負責幾個功能,是一種面向SOA架構的,
服務之間也是通過rpc來互動或者是webservice來互動的。邏輯架構設計完後就該做物理架構設計,系統應用部署
在超過一臺伺服器或虛擬機器上,且各分開部署的部分彼此通過各種通訊協議互動資訊,就可算作分散式部署,生產環
境下的微服務肯定是分散式部署的,分散式部署的應用不一定是微服務架構的,比如叢集部署,它是把相同應用複製
到不同伺服器上,但是邏輯功能上還是單體應用。

SOA架構和微服務架構的區別

1.SOA架構和微服務架構的區別

首先SOA和微服務架構一個層面的東西,而對於ESB和微服務閘道器是一個層面的東西,一個談到是架構風格和方法,一個談的是實現工具或元件。

1.SOA(Service Oriented Architecture)“面向服務的架構”:他是一種設計方法,其中包含多個服務, 服務之間通過相互依賴最終提供一系列的功能。一個服務 通常以獨立的形式存在於作業系統程序中。各個服務之間 通過網路呼叫。

2.微服務架構:其實和 SOA 架構類似,微服務是在 SOA 上做的昇華,微服務架構強調的一個重點是“業務需要徹底的元件化和服務化”,原有的單個業務系統會拆分為多個可以獨立開發、設計、執行的小應用。這些小應用之間通過服務完成互動和整合。

  微服務架構 = 80%的SOA服務架構思想 + 100%的元件化架構思想 + 80%的領域建模思想

2.ESB和微服務API閘道器

1.ESB(企業服務匯流排),簡單 來說 ESB 就是一根管道,用來連線各個服務節點。為了集 成不同系統,不同協議的服務,ESB 做了訊息的轉化解釋和路由工作,讓不同的服務互聯互通;

2.API閘道器:API閘道器是一個伺服器,是系統的唯一入口。從面向物件設計的角度看,它與外觀模式類似。API閘道器封裝了系統內部架構,為每個客戶端提供一個定製的API。

它可能還具有其它職責,如身份驗證、監控、負載均衡、快取、請求分片與管理、靜態響應處理。

API閘道器方式的核心要點是,所有的客戶端和消費端都通過統一的閘道器接入微服務,在閘道器層處理所有的非業務功能。通常,閘道器也是提供REST/HTTP的訪問API。服務端通過API-GW註冊和管理服務。

3.SOA架構特點:

系統整合:站在系統的角度,解決企業系統間的通訊問 題,把原先散亂、無規劃的系統間的網狀結構,梳理成 規整、可治理的系統間星形結構,這一步往往需要引入 一些產品,比如 ESB、以及技術規範、服務管理規範;這一步解決的核心問題是【有序】

系統的服務化:站在功能的角度,把業務邏輯抽象成 可複用、可組裝的服務,通過服務的編排實現業務的 快速再生,目的:把原先固有的業務功能轉變為通用 的業務服務,實現業務邏輯的快速複用;這一步解決 的核心問題是【複用】

業務的服務化:站在企業的角度,把企業職能抽象成 可複用、可組裝的服務;把原先職能化的企業架構轉變為服務化的企業架構,進一步提升企業的對外服務能力;“前面兩步都是從技術層面來解決系統呼叫、系統功能複用的問題”。第三步,則是以業務驅動把一個業務單元封裝成一項服務。這一步解決的核心問題是【高效】

4.微服務架構特點:

1.通過服務實現元件化

  • 開發者不再需要協調其它服務部署對本服務的影響。

2.按業務能力來劃分服務和開發團隊

  • 開發者可以自由選擇開發技術,提供 API 服務

3.去中心化

  • 每個微服務有自己私有的資料庫持久化業務資料
  • 每個微服務只能訪問自己的資料庫,而不能訪問其它服務的資料庫
  • 某些業務場景下,需要在一個事務中更新多個數據庫。這種情況也不能直接訪問其它微服務的資料庫,而是通過對於微服務進行操作。
  • 資料的去中心化,進一步降低了微服務之間的耦合度,不同服務可以採用不同的資料庫技術(SQL、NoSQL等)。在複雜的業務場景下,如果包含多個微服務,通常在客戶端或者中間層(閘道器)處理。

4.基礎設施自動化(devops、自動化部署)

  Java EE部署架構,通過展現層打包WARs,業務層劃分到JARs最後部署為EAR一個大包,而微服務則打開了這個黑盒子,把應用拆分成為一個一個的單個服務,應用Docker技術,不依賴任何伺服器和資料模型,是一個全棧應用,可以通過自動化方式獨立部署,每個服務執行在自己的程序中,通過輕量的通訊機制聯絡,經常是基於HTTP資源API,這些服務基於業務能力構建,能實現集中化管理(因為服務太多啦,不集中管理就無法DevOps啦)。

5.主要區別:

個人學習筆記,記錄日常學習,便於查閱及加深,僅為方便個人使用。