【從零開始學微服務】03.軟體架構的演化過程

2023-06-26 09:00:27

大家好,歡迎來到萬貓學社,跟我一起學,你也能成為微服務專家

目前大部分的企業系統和網際網路應用都是採用Web的形式提供服務能力,根據系統的組織方式和部署結構,我們通常把軟體架構的演化過程分為以下幾個階段:

  • 單體架構
  • 垂直架構
  • SOA架構
  • 微服務架構

單體架構

單體架構,也被成為巨石架構,就像一塊巨石一樣,系統的所有程式碼、所有邏輯、所有模組都集中在一個專案裡,並且會被部署在一個程序中。比如下面的電商系統:

雖然在電商系統被分為了表示層、業務邏輯層、資料存取層,但是它們還是在同一個專案裡。比如在業務邏輯層中,商品管理、庫存管理、訂單管理等等模組的邏輯都是在一起的,難免就會有程式碼互相耦合的地方,你中有我,我中有你。這就造成了程式碼維護的困難,比如本來是在修改商品管理的程式碼,一不注意就影響了庫存管理的邏輯,引發了bug,甚至是生產環境的事故。

優點

  • 結構簡單,所有模組都集中在一個專案中。
  • 部署簡單,只需要部署一個程序就可以。

缺點

  • 版本迭代慢,模組耦合度高,牽一髮動全身。
  • 程式碼維護困難,所有模組在一個專案裡面,被他人誤改的風險很高。

文章持續更新,微信搜尋「萬貓學社」第一時間閱讀,關注後回覆「電子書」,免費獲取12本必讀技術書籍。

垂直架構

隨著業務的發展,單體架構的系統會越來越臃腫,程式碼的越來越難以維護,所以就把系統垂直地分成了多個專案的子系統,就形成了垂直架構,也被稱為豎井式架構,或煙囪架構。比如下面的電商系統:

原來的電商系統別分為了訂單系統、物流系統和使用者系統三個獨立的子系統,子系統之間相互獨立,互相不會有影響,新業務的迭代
更加高效。不過,因為系統之間無法互相呼叫,有些模組功能在不同系統中都有實現。比如,商品管理模組在訂單系統和物流系統都有重複的實現。

優點

  • 系統相互獨立,互相不影響。
  • 新業務迭代更加高效。

缺點

  • 各個系統之間存在模組功能重複開發的情況
  • 各個系統之間相互獨立,無法進行相互呼叫,形成了「資訊孤島」。

SOA架構

SOA全稱是Service Oriented Architecture,即面向服務的架構,當垂直應用越來越多,重複的業務程式碼就會越來越多。此時可以將重複的程式碼抽取出來,形成統一的業務層作為獨立的服務。

SOA是在企業內部IT系統重複構建以及效率低下的背景下提出的,最初想法是更好的利用企業內部的各個IT系統能力,解決資訊孤島,適配異構系統,整合業務功能等方面的問題。比如下面的電商系統:

訂單系統、物流系統等功能模組都被定義成了獨立的服務,所有的服務通過企業服務匯流排(ESB)來互相連線。企業服務匯流排(ESB)承擔了傳輸協定轉換、資料格式轉換、服務路由、監控告警等功能。

優點

  • 解決了資訊孤島的問題,適配各種異構系統。
  • 提高了整個系統的可重用性和可維護性。

缺點

  • 服務的介面協定不固定,種類繁多,增加了複雜度。
  • 服務依賴,部署複雜。

文章持續更新,微信搜尋「萬貓學社」第一時間閱讀,關注後回覆「電子書」,免費獲取12本必讀技術書籍。

微服務

微服務架構在某種角度上看也是面向服務的架構,微服務和SOA架構看起來非常相似,很多理念也很類似,但本質上有很大差異。

SOA架構通常都有一個龐大、複雜的ESB匯流排,各個單體應用之間通過ESB來交換資料,ESB也承擔了很多業務邏輯轉換和處理的工作;但在微服務概念裡面,沒有ESB,有的只是輕量級的訊息通訊機制。

微服務是一種通過更細力度服務組合來構建大規模複雜系統的的架構風格,這些服務圍繞業務能力以及一系列設計標準而非特定的技術標準來組織。

總結

  • 單體架構,所有程式碼、所有邏輯、所有模組都集中在一個專案裡。
  • 垂直架構,把系統垂直地分成了多個專案的子系統。
  • SOA架構,所有的服務通過企業服務匯流排(ESB)來互相連線。
  • 微服務架構,通過更細力度服務組合來構建大規模複雜系統。

最後,感謝你這麼帥,還給我點贊

微信公眾號:萬貓學社

微信掃描二維條碼

關注後回覆「電子書」

獲取12本必讀技術書籍