99er久久国产精品先锋_亚洲丰满少妇撒尿BBo_老外和中国女人毛片免费视频_思思热在线视频网站_av无码不卡高清_国产 激情 自拍_激情综合色婷婷激情丁香_少妇与子乱A级全毛片_男人捅女人的软件_日本欧美日韩

...

解讀 5 種軟件架構(gòu)模式

2022-02-08

解讀 5 種軟件架構(gòu)模式

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

在我發(fā)現(xiàn) Mark Richards 的 Software Architecture Patterns(《軟件架構(gòu)模式》,暫無中譯本)一書之前,這個問題就一直存在。在此,我將與你分享這本書的最重要部分和架構(gòu)模式。(要了解更多信息,我強烈建議你閱讀這本書或他的報告

為什么作為軟件工程師,至少要學習基本的架構(gòu)模式?

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

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

  • 分層架構(gòu)

 

  • 驅(qū)動架構(gòu)

 

  • 微內(nèi)核架構(gòu)(或插件架構(gòu))

 

  • 微服務(wù)架構(gòu)

 

  • 基于空間的架構(gòu)(或云架構(gòu)模式)

 

1. 分層架構(gòu)

它是單體應(yīng)用最常見的架構(gòu)。該模式的基本思想是將應(yīng)用程序的邏輯劃分為若干層,每層都封裝了特定的角色。例如,持久層將負責應(yīng)用程序與數(shù)據(jù)庫引擎之間的通信。

圖 1:分層架構(gòu)模式

2. 事件驅(qū)動架構(gòu)

這種模式背后的思想是將應(yīng)用邏輯解耦為單一用途的事件處理組件,以異步方式接收和處理事件。這是一種廣受歡迎的分布式異步架構(gòu)模型,它以高可擴展性和適應(yīng)性而聞名。

圖 2:事件驅(qū)動架構(gòu)代理拓撲

3. 微內(nèi)核架構(gòu)

微內(nèi)核架構(gòu),也被稱為插件架構(gòu),這種設(shè)計模式包含兩大部分:核心系統(tǒng)和插件模塊(或擴展)。Web 瀏覽器就是一個很好的例子,它相當于核心系統(tǒng),可以讓你無限地安裝擴展(或者插件)。

圖 3:微內(nèi)核架構(gòu)

4. 微服務(wù)架構(gòu)

微服務(wù)架構(gòu)由單獨部署的服務(wù)組成,每個服務(wù)最好都有一個單一的責任。這些服務(wù)彼此之間是相互獨立的,當其中一個服務(wù)出現(xiàn)故障時,其他服務(wù)不會因此中斷。

圖 4:微服務(wù)架構(gòu)

5. 基于空間的架構(gòu)

基于空間的模式背后的主要思想是分布式共享內(nèi)存,以緩解經(jīng)常發(fā)生在數(shù)據(jù)庫層面的問題。它的假設(shè)是,通過使用內(nèi)存數(shù)據(jù)處理大部分操作,這樣我們就可以避免在數(shù)據(jù)庫中進行額外的操作,從而避免未來可能由此產(chǎn)生的任何問題(例如,如果你的用戶活動數(shù)據(jù)實體發(fā)生了變化,你不需要改變一堆代碼來持久化和從數(shù)據(jù)庫中檢索這些數(shù)據(jù))。

基本的方法是將應(yīng)用程序分離成處理單元(可以根據(jù)需求自動擴大和縮?。?,數(shù)據(jù)將在這些單元之間進行復(fù)制和處理,無需持久化到中央數(shù)據(jù)庫(雖然當系統(tǒng)發(fā)生故障時,也會有本地存儲)。

圖 5:基于空間的架構(gòu)

你可以在我的 GitHub 賬戶中找到其中一些架構(gòu)模式的最簡單例子。以下是鏈接:

 

 

 

作者介紹:

Orkhan Huseynli,軟件工程師。

原文鏈接:

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


來源:InfoQ