SOA和微服務之間的區別(應用和數據的垂直拆分水平拆分)

目錄

引出問題

重要概念

垂直拆分

水平拆分

同步分層架構

異步分層架構

SOA是什麼?

微服務是什麼?

數據庫拆分

寫在最後


引出問題

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

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

重要概念

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

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

垂直拆分

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

水平拆分

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

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

同步分層架構

異步分層架構

SOA是什麼?

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

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

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

微服務是什麼?

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

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

數據庫拆分

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

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

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

寫在最後

寫文章目的就是交流分享,如有問題還請指正,本人郵箱[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章