1. 程式人生 > >Web開發來一發(六)SOA和微服務

Web開發來一發(六)SOA和微服務

1、服務演進

架構演進可以看這個圖:https://blog.csdn.net/a724888/article/details/80753251

1)單體應用

當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。 此時,用於簡化增刪改查工作量的 資料訪問框架(ORM) 是關鍵。

2)垂直應用架構

當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,將應用拆成互不相干的幾個應用,以提升效率。 此時,用於加速前端頁面開發的 Web框架(MVC) 是關鍵。

3)分散式服務架構

當垂直應用越來越多,應用之間互動不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。 此時,用於提高業務複用及整合的 分散式服務框架(RPC) 是關鍵。

4)流動計算架構

當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個排程中心基於訪問壓力實時管理叢集容量,提高叢集利用率。 此時,用於提高機器利用率的 資源排程和治理中心(SOA) 是關鍵。

2、SOA簡介

參考:https://blog.csdn.net/zdyueguanyun/article/details/60135059

SOA全英文是Service-Oriented Architecture,即面向服務程式設計,是一種架構思路。系統中其中包含多個服務,服務之間通過相互依賴最終提供一系列完整的功能,各個服務通常以獨立的形式部署執行,服務之間通過網路進行呼叫。

提到SOA就要提到ESB(企業服務匯流排),ESB 就是一根管道,用來連線各個服務節點。ESB的存在是為了整合基於不同協議的不同服務,ESB 做了訊息的轉化、解釋以及路由的工作,以此來讓不同的服務互聯互通。

SOA和ESB的關係:SOA的實現是依賴與ESB的。

3、微服務簡介

參考:https://www.cnblogs.com/wintersun/p/6219259.html

微服務是指開發一個單個小型的但有業務功能的服務,每個服務都有自己的處理和輕量通訊機制,可以部署在單個或多個伺服器上。微服務也指一種種鬆耦合的、有一定的有界上下文的面向服務架構。

微服務是元件化、鬆耦合、自治、去中心化的,微服務和SOA的區別在於,服務粒度更細,一個應用可能由幾十上百個微服務例項。那麼這些服務直接是怎麼關聯的呢?一種思路是引入一個類中心化的服務管理中心,還有一種思路是服務歸類分層,這個問題可以參考:

https://baijiahao.baidu.com/s?id=1571898753665699&wfr=spider&for=pc

微服務特點:

  • 一組小的服務 
    服務粒度要小,而每個服務是針對一個單一職責的業務能力的封裝,專注做好一件事情。

  • 獨立部署執行和擴充套件 
    每個服務能夠獨立被部署並執行在一個程序內。這種執行和部署方式能夠賦予系統靈活的程式碼組織方式和釋出節奏,使得快速交付和應對變化成為可能。

  • 獨立開發和演化 
    技術選型靈活,不受遺留系統技術約束。合適的業務問題選擇合適的技術可以獨立演化。服務與服務之間採取與語言無關的API進行整合。相對單體架構,微服務架構是更面向業務創新的一種架構模式。

  • 獨立團隊和自治 
    團隊對服務的整個生命週期負責,工作在獨立的上下文中,自己決策自己治理,而不需要統一的指揮中心。團隊和團隊之間通過鬆散的社群部落進行銜接。