SOA和微服務(應用和數據的垂直拆分及水平拆分)


引出問題

互聯網發展迅猛,互聯網系統也由原來的單機服務逐步的演化為分布式服務,同樣,服務架構也由原來的單體架構逐步演化為如今的分布式架構,由此衍生出許多架構類型。今天就談談微服務架構和傳統的SOA架構到底有什么區別。

近年來微服務火遍中小型企業,似乎看起來SOA已經成為將要過時的技術,事實是真的這樣子嗎?

重要概念

當單體架構滿足不了日益增長的客戶需求時,就要將數據庫和應用程序等拆分開,也就是將一個應用程序部署到多台服務器上。通常服務和數據的拆分,分成垂直拆分和水平拆分。

同步分層的架構和異步分層架構只差了一個消息隊列(MQ),異步操作雖然可以增強用戶的體驗,但是其弱一致性會帶來許多數據不一致的問題(這個問題在后續博文中會做出解釋和解決方案,關注我喲~)。

垂直拆分

對業務的不同進行分類,不同的業務划分到不同的應用和數據庫中。這種拆分往往是根據系統的改造,將原來的功能模塊按照更加細粒度的拆分成多個弱耦合的服務。

水平拆分

數據庫層面的水平拆分,就是將一個數據表中的數據按照某種規則分化到不同的數據庫中,也就是分庫分表。

應用層面的水平拆分,最經典的就是將整個應用分層。數據庫訪問層和業務邏輯層拆分、網關層和業務邏輯層拆分等等。

同步分層架構

 

 

異步分層架構

 

 

SOA是什么?

(鋪墊了這么多,終於到正題了)

面向服務的架構(SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)進行拆分,並通過這些服務之間定義良好的接口和協議聯系起來。(這是百度的解釋)

SOA其實是按照業務進行垂直方向的拆分的,每個服務其實還是單機,對ESB依賴嚴重。

 

 

微服務是什么?

微服務的終極目的就是為了項目的快速迭代和持續交付。

微服務架構既進行垂直拆分,又進行了水平拆分。

 

 

數據庫拆分

數據庫拆分也分為垂直拆分和水平拆分。

垂直拆分比較容易理解,就是按照業務進行拆分;水平拆分就比較難了,其實一般的能不用水平拆分就不用水平拆分。

這里我推薦一個專門用來做分布式的數據庫,TiDB。(在后續博文中會介紹它的使用和應用場景,關注我喲~)

 

分布式AKF拆分原則:

https://www.cnblogs.com/-wenli/p/13584796.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM