成為架構(gòu)師,必須掌握 10 種常見的架構(gòu)模式!
公眾號關(guān)注“杰哥的IT之旅”,
選擇“星標(biāo)”,重磅干貨,第一時間送達(dá)!

想知道如何設(shè)計大型企業(yè)級的系統(tǒng)嗎?在開始主要的代碼開發(fā)之前,我們必須選擇一種合適的體系架構(gòu),它將為我們提供所需的功能和質(zhì)量屬性。因此,在將它們應(yīng)用到我們的設(shè)計之前,應(yīng)該先了解不同的體系結(jié)構(gòu)。


-? ? ?什么是架構(gòu)模式? ? ?-
架構(gòu)模式是在給定上下文中解決軟件架構(gòu)中常見問題的通用、可重用的解決方案。架構(gòu)模式類似于軟件設(shè)計模式,但范圍更廣。

-? ? ?分層模式? ? ?-
一般信息系統(tǒng)中最常見的4層劃分如下:
Presentation layer?表示層(也就是UI層) Application layer 應(yīng)用層(也就是服務(wù)層) Business logic layer 業(yè)務(wù)邏輯層(也就是領(lǐng)域?qū)樱?/span> Data access layer 數(shù)據(jù)訪問層(也就是數(shù)據(jù)持久層)
應(yīng)用
一般桌面應(yīng)用程序 電子商務(wù)Web應(yīng)用程序


-? ? ?客戶端-服務(wù)器模式? ? ?-
應(yīng)用
在線應(yīng)用程序,如電子郵件、文件共享和銀行業(yè)務(wù)等


-? ? ?主從模式? ? ?-
在數(shù)據(jù)庫復(fù)制中,主數(shù)據(jù)庫被視作權(quán)威數(shù)據(jù)源,而從數(shù)據(jù)庫與其保持同步 連接到計算機系統(tǒng)總線上的外圍設(shè)備(主驅(qū)動器和從驅(qū)動器)


-? ? ?管道過濾模式? ? ?-
應(yīng)用
編譯器。依次使用不同的過濾器執(zhí)行詞法分析、解析、語法分析和代碼生成 生物信息學(xué)中的工作流程


-? ? ?Broker模式? ? ?-
服務(wù)器將它們的功能(服務(wù)和特征等)發(fā)布到代理,客戶端向代理請求服務(wù),然后代理根據(jù)其注冊表將客戶端請求轉(zhuǎn)發(fā)給合適的服務(wù)。
應(yīng)用
消息代理軟件,如?Apache ActiveMQ,?Apache Kafka,?RabbitMQ?和?JBoss Messaging.


-? ? ?P2P模式? ? ?-
應(yīng)用
文件共享網(wǎng)絡(luò),如Gnutella?和?G2 多媒體協(xié)議,如P2PTV?和?PDTP 基于加密貨幣的產(chǎn)品,如比特幣和區(qū)塊鏈


-? ? ?事物總線模式? ? ?-
應(yīng)用
安卓開發(fā) 通知服務(wù)


-? ? ?MVC模式? ? ?-
模型——包含核心功能和數(shù)據(jù) 視圖——向用戶顯示信息(可以定義多個視圖) 控制器——處理用戶的輸入
應(yīng)用
主流編程語言的互聯(lián)網(wǎng)應(yīng)用架構(gòu) 網(wǎng)絡(luò)框架,如Django?和?Rails.


-? ? ?黑板模式? ? ?-
黑板—— 一個結(jié)構(gòu)化的全局內(nèi)存,包含解決方案領(lǐng)域的對象 知識源——具有自身含義的專業(yè)模塊 控制組件——選擇、配置和執(zhí)行模塊
應(yīng)用
語音識別 車輛識別與跟蹤 蛋白質(zhì)結(jié)構(gòu)鑒定 聲吶信號解釋


-? ? ?解釋器模式? ? ?-
應(yīng)用
數(shù)據(jù)庫查詢語言,如SQL 用于描述通信協(xié)議的語言


-? ? ?架構(gòu)模式對比? ? ?-
| 模式 | 優(yōu)點 | 缺點 |
分層結(jié)果更容易進(jìn)行標(biāo)準(zhǔn)化,因為可以清晰地定義每個層級 層級內(nèi)的修改不會影響其它層 | 某些場景下,需要跳過其中一些分層 | |
因為不同客戶端有不同形式,進(jìn)程間通信會造成很大負(fù)載 | ||
主從模塊間的通信延遲可能是一個問題,尤其在實時系統(tǒng)中。 | ||
容易添加過濾器,系統(tǒng)很容易擴展; 過濾器可重用,可以通過重新組合已有的過濾器來創(chuàng)建不同的管道流。 | 從一個過濾器傳遞到另一個時,存在數(shù)據(jù)轉(zhuǎn)換的負(fù)載 | |
對任意節(jié)點的失敗都有高度穩(wěn)定性; 在資源和計算能力方面具有高度可伸縮性 | 很難保證安全; 性能取決于節(jié)點的數(shù)量 | |
對于高度分布式應(yīng)用很有效 | ||
很容易擴展數(shù)據(jù)空間中的結(jié)構(gòu) | 可能需要同步機制和訪問控制 | |
有利于終端用戶的可編程性; 增強了靈活性,因為替換一個解釋程序很容易 |
(完)
作者:Vijini Mallawaarachchi
原文:https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013
如果您覺得這篇文章對您有點用的話,麻煩您為本文來個四連:轉(zhuǎn)發(fā)分享、點贊、點在看、留言,因為這將是我寫作與分享更多優(yōu)質(zhì)文章的最強動力!
本公眾號全部博文已整理成一個目錄,請在公眾號后臺回復(fù)「
m」獲取!
推薦閱讀:
1、程序員必知的 7 種軟件架構(gòu)模式
2、支付寶的架構(gòu)到底有多牛逼?
3、微信支付軟件架構(gòu),這也太牛逼了!
4、今日頭條的技術(shù)架構(gòu)到底有多牛逼?
5、螞蟻金服的技術(shù)架構(gòu)到底有多牛逼?
6、一文讀懂「分布式架構(gòu)」
7、如何畫出一張合格的技術(shù)架構(gòu)圖?
8、如何畫出優(yōu)秀的架構(gòu)圖?
9、從 Nginx 優(yōu)秀的核心架構(gòu)設(shè)計,揭秘其為何能支持高并發(fā)?
10、就是要讓你搞懂Nginx,這篇就夠了!
關(guān)注微信公眾號「杰哥的IT之旅」,后臺回復(fù)「1024」查看更多內(nèi)容,回復(fù)「加群」備注:地區(qū)-職業(yè)方向-昵稱?即可加入讀者交流群。 點個[在看],是對杰哥最大的支持!
評論
圖片
表情

