天天看點

解讀 5 種軟體架構模式

作者 | Orkhan Huseynli

譯者 | Sambodhi

策劃 | 辛曉亮

當一些人開始涉足軟體工程領域,總有一天他會需要學習軟體架構模式的基本知識。在我第一次接觸程式設計的時候,我并不知道如何才能了解到現有的架構模型,這樣就不會過于詳盡,也不會讓人感到混亂,而是非常抽象和簡單的了解。

在我發現 Mark Richards 的 Software Architecture Patterns(《軟體架構模式》,暫無中譯本)一書之前,這個問題就一直存在。在此,我将與你分享這本書的最重要部分和架構模式。(要了解更多資訊,我強烈建議你閱讀這本書或他的報告https://www.oreilly.com/content/software-architecture-patterns/)

1

為什麼作為軟體工程師,至少要學習基本的架構模式?

我肯定有許多文章可以解答這個問題,但是我會告訴你一些原因。首先,如果你了解架構模式,你将更容易遵循架構師的要求。其次,了解這些模式可以幫助你在代碼中作出決策:比如,如果你的應用設計是基于事件驅動的微服務,作為一名軟體工程師,如果你注意到現有服務中邏輯的複雜性和責任的增加,你就必須把你的代碼解耦到一個單獨的服務中。(不懂的話,就跟着文中的内容走,這種模式在本文中已經做了一個簡要的說明。)

Mark Richards 在他著的書中,描述了 5 種模式:

分層架構

驅動架構

微核心架構(或插件架構)

微服務架構

基于空間的架構(或雲架構模式)

1. 分層架構

它是單體應用最常見的架構。該模式的基本思想是将應用程式的邏輯劃分為若幹層,每層都封裝了特定的角色。例如,持久層将負責應用程式與資料庫引擎之間的通信。

解讀 5 種軟體架構模式

圖 1:分層架構模式

2. 事件驅動架構

這種模式背後的思想是将應用邏輯解耦為單一用途的事件處理元件,以異步方式接收和處理事件。這是一種廣受歡迎的分布式異步架構模型,它以高可擴充性和适應性而聞名。

解讀 5 種軟體架構模式

圖 2:事件驅動架構代理拓撲

3. 微核心架構

微核心架構,也被稱為插件架構,這種設計模式包含兩大部分:核心系統和插件子產品(或擴充)。Web 浏覽器就是一個很好的例子,它相當于核心系統,可以讓你無限地安裝擴充(或者插件)。

解讀 5 種軟體架構模式

圖 3:微核心架構

4. 微服務架構

微服務架構由單獨部署的服務組成,每個服務最好都有一個單一的責任。這些服務彼此之間是互相獨立的,當其中一個服務出現故障時,其他服務不會是以中斷。

解讀 5 種軟體架構模式

圖 4:微服務架構

5. 基于空間的架構

基于空間的模式背後的主要思想是分布式共享記憶體,以緩解經常發生在資料庫層面的問題。它的假設是,通過使用記憶體資料處理大部分操作,這樣我們就可以避免在資料庫中進行額外的操作,進而避免未來可能由此産生的任何問題(例如,如果你的使用者活動資料實體發生了變化,你不需要改變一堆代碼來持久化和從資料庫中檢索這些資料)。

基本的方法是将應用程式分離成處理單元(可以根據需求自動擴大和縮小),資料将在這些單元之間進行複制和處理,無需持久化到中央資料庫(雖然當系統發生故障時,也會有本地存儲)。

解讀 5 種軟體架構模式

圖 5:基于空間的架構

你可以在我的 GitHub 賬戶中找到其中一些架構模式的最簡單例子。以下是連結:

分層模式(使用 Java)

https://github.com/OrkhanHuseynli/recording-job

微核心或插件模式(使用 Go 或 Golang)

https://github.com/OrkhanHuseynli/plugins_design_in_go

微服務模式(使用 Go)

https://github.com/OrkhanHuseynli/microservices_template_golang

作者介紹:

Orkhan Huseynli,軟體工程師。

https://orkhanscience.medium.com/software-architecture-patterns-5-mins-read-e9e3c8eb47d2

繼續閱讀