1. 程式人生 > >對微服務、叢集、SOA、分散式的理解

對微服務、叢集、SOA、分散式的理解

一、微服務

1、什麼是微服務

微服務是一種架構風格,一個大型複雜軟體應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是鬆耦合的。每個微服務僅關注於完成一件任務並很好地完成該任務。在所有情況下,每個任務代表著一個小的業務能力。

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

2、通俗理解

由於業務間的邏輯越來越複雜,我們就不把這些業務全部雜糅在一起,每個業務都分開來做,這就是微服務,而微服務就是一種特殊的分散式。

3、優缺點

優點:上面的單體系統全部運行於一個程序之內,資源相互影響,新增功能可能會影響其它功能,導致維護麻煩。 而微服務一切分為不同的模組,運行於自身程序內,而且不同的服務可以使用不同的語言充分發揮優勢。

缺點:引入了分散式的複雜性,如介面一致性。 不過很多問題強大的Spring Cloud都已經提供瞭解決方案!

圖1.1:

二、SOA

1、什麼是SOA

SOA(Service-Oriented Architecture),中文全稱:面向服務的架構。

SOA是一種粗粒度、鬆耦合服務架構,服務之間通過簡單、精確定義介面進行通訊,不涉及底層程式設計介面和通訊模型。SOA可以看作是B/S模型、XML標準通用標記語言的子集)/Web Service技術之後的自然延伸。

2、通俗理解

SOA把系統分離成不同的服務,使用介面來進行資料互動,最終達到整合系統的目的。

3、優缺點

優點:

敏捷性、一致性、業務流程的改進、靈活性、資料統一、執行監控、利用操作平臺。

缺點:組織結構的改變、組織權力結構的改變、業務面臨的新挑戰、IT變得簡單之前會越來越複雜、沒有資料檢視、監控複雜性、技術不匹配。

4、SOA的三大特徵

1)獨立的功能實體

2)大資料量低頻訪問

3)基於文字的訊息傳遞

三、分散式

注:叢集是個物理形態,分散式是個工作方式。

1、什麼是分散式

分散式就是把一個大而複雜的業務計算分配到多個業務節點機器上,即多個節點機器構成一個完整的業務鏈。

一個業務分拆多個子業務,部署在不同的伺服器上。

一個系統分為很多個子系統,這些子系統相互配合完成整個的業務邏輯叫做分散式,分散式中每一個節點都可以配置叢集.。

(而叢集指的是將幾臺伺服器集中在一起,實現同一業務。)

å¾®æå¡ååå¸å¼çåºå«

        將一個大的系統劃分為多個業務模組,業務模組分別部署到不同的機器上,各個業務模組之間通過介面進行資料互動。區別分散式的方式是根據不同機器不同業務。

  上面:service A、B、C、D 分別是業務元件,通過API Geteway進行業務訪問。

  注:分散式需要做好事務管理。

例如:

2、單體應用和分散式的比較

四、叢集

注:叢集是個物理形態,分散式是個工作方式。

1、什麼是叢集

    叢集就是具有完整功能的系統群集,一個叢集節點壞了,其它節點能照常執行,這是不是像一個並聯電路?一個並聯電路節點壞了,其它節點還是能夠正常工作的。
     叢集的功能作用就是為了增加整個系統的負載和吞吐量,所以一般我們把叢集和負載均衡拿到一起來討論和研究,當然,叢集的另一個顯著功能就是做系統的容錯,為了保證系統穩健、長久的執行下去,一個叢集節點的故障不會導致整個系統完蛋,對於客戶而言是透明的,只要能正常訪問,他們都不知道您系統中或許某幾個系統節點已經罷工了,這樣就涉及到雲端計算中的彈性分配,我們能根據系統的高峰、低谷期動態增加或者減少叢集節點。

2、通俗理解

同一個業務,部署在多個伺服器上。(即:多臺伺服器部署相同應用構成一個叢集)

3、叢集的兩大特性、能力、技術

特性:可擴充套件性、高可用性

能力:負載均衡、錯誤恢復

技術:叢集地址、內部通訊

注:內部通訊是叢集能正常運轉的基礎,它使得叢集具有均衡負載和錯誤恢復的能力。 

五、補充:

1)分散式和叢集的區別:

叢集:同一個業務,部署在多個伺服器上
分散式:一個業務分拆多個子業務,部署在不同的伺服器上

2)微服務和SOA的區別:

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

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

3)微服務和分散式的區別及聯絡

1.分散式屬於微服務

2.區別及聯絡

       分散式:分散壓力。

  微服務:分散能力。

  分散式:

  不同模組部署在不同伺服器上;

  作用:分散式解決網站高併發帶來問題;

  叢集:相同的服務;

  多臺伺服器部署相同應用構成一個叢集;

  作用:通過負載均衡裝置共同對外提供服務;

  SOA[組裝服務/ESB企業服務匯流排]:

  業務系統分解為多個元件,讓每個元件都獨立提供離散,自治,可複用的服務能力;

  通過服務的組合和編排來實現上層的業務流程;

  作用:簡化維護,降低整體風險,伸縮靈活;

  微服務[找到服務/微服務閘道器open API];

  架構設計概念,各服務間隔離(分散式也是隔離),自治(分散式依賴整體組合)其它特性(單一職責,邊界,非同步通訊,獨立部署)是分散式概念的跟嚴格執行;

  SOA到微服務架構的演進過程;

  作用:各服務可獨立應用,組合服務也可系統應用(巨石應用[monolith]的簡化實現策略-平臺思想).

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

2.API閘道器:API閘道器是一個伺服器,是系統的唯一入口。從面向物件設計的角度看,它與外觀模式類似。API閘道器封裝了系統內部架構,為每個客戶端提供一個定製的API。它可能還具有其它職責,如身份驗證、監控、負載均衡、快取、請求分片與管理、靜態響應處理。API閘道器方式的核心要點是,所有的客戶端和消費端都通過統一的閘道器接入微服務,在閘道器層處理所有的非業務功能。通常,閘道器也是提供REST/HTTP的訪問API。服務端通過API-GW註冊和管理服務。

未完待續。。。。。。
參考文章:
https://blog.csdn.net/zpoison/article/details/80729052