你是否曾經思考過如何設計大型的企業級系統?在決定啓動軟件開發以前,首要的是選擇恰當的架構來指引系統的功能及質量屬性設計。所以在將軟件架構應用於設計以前,必須要了解經常使用的架構模式。數據庫
Wikipedia 的解釋:設計模式
在軟件架構中,架構模式是對特定環境下常見問題的通用且可重用的解決方案。架構模式與軟件設計模式很類似,但架構模式的層次更高,且外延更大。性能優化
這篇文章將簡述常見的 10 種架構模式的概念、用法以及其優缺點。服務器
分層模式用於對結構化設計的軟件進行層次拆解,每一個層次爲獨立的抽象,爲其上層抽象提供服務。網絡
系統一般被拆分爲如下四個層次:架構
使用場景併發
客戶端/服務器模式由兩個部分構成:一個服務器與多個客戶端。服務器組件同時爲多個客戶端組件提供服務。客戶端向服務器發啓服務請求,服務器將相應服務信息迴應給客戶端。此外,服務器持續監聽來自客戶端的請求。框架
使用場景分佈式
主/從模式由兩個部分構成:主設備與從設備。主服務組件將做業分發給多個從設備組件,並根據這些從設備反饋的結果,計算生成最終結果。微服務
使用場景
管道/過濾器模式用於構造用於生成及處理數據流的系統。每一個處理過程都封裝在 過濾器(filter) 組件之中,要處理的數據經過 管道(pips) 進行投遞。管道同時用於做爲 過濾器(filter) 間的緩衝及同步。
使用場景
代理模式用於在結構化系統中對組件解耦。系統內各組件間採用遠過程調用(remote service invocations)的方式交互。 代理(Broker) 組件充當組件間通信的協調角色。
提供服務的組件將其能力(服務以及特性)發佈給代理,客戶端均向代理請求服務,由代理將請求重定向到先前已發佈過對應服務的組件進行處理。
使用場景
對等模式中的組件稱之爲對等體(peer),對等體既做爲向其餘對等體請求服務的客戶端,同時也作爲響應其餘對等體請求的服務端。對等體能夠在運行過程當中動態地改變其角色,即,既能夠單獨作爲客戶端或服務端運行,又可同時做爲客戶端與服務端運行。
使用場景
事件總線模式應用於事件處理,主要由四個組件構成: 事件源(event source),事件偵聽者(event listener),通道(Channel)以及總線(event bus) 。 事件源將消息發佈到總線的特定通道,偵聽者訂閱相應的通道,事件源所發佈的消息經通道通告給訂閱通道的偵聽者。
使用場景
模型/視圖/控制器模式(簡稱 MVC 模式)將交互式應用程序拆分爲三個部分:
MVC 模式經過將內部信息表示、用戶信息呈現以及用戶操做接收分開的方式解耦組件,實現高效代碼重用。
使用場景
黑板模式適用於 無預知肯定解決策略 的問題,主要由三個組件構成:
全部的組件均能訪問黑板,組件可將新生成的數據對象寫入黑板,也能夠經過模式匹配從黑板中獲取知識源所生成的特定數據。
使用場景
解析器模式用於設計語言的解析程序,主要用於指定評估程序代碼行,即解析出特定語言的語句與表達式,其核心思想是爲語言的每一個符號定義相應的類。
使用場景
在此我向你們推薦一個架構學習交流羣。交流學習羣號:575745314 裏面會分享一些資深架構師錄製的視頻錄像:有Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化、分佈式架構等這些成爲架構師必備的知識體系。還能領取免費的學習資源,目前受益良多
下表格總結了各架構模式的優缺點