架構師之路(四)之十二個架構模式

       軟件架構模式,誕生於軟件開發的最大難題——需求變更。由於需求變更,導致了大量項目因爲超出預算的人力、時間而歸於失敗。軟件開發成本有限的,但需求變更似乎是無限的,這成爲了一個非常難解決的問題。

   在軟件界多年的架構設計工作之後,人們總結出一些經驗,這些經驗被成爲“架構模式”。架構模式包含了“名稱”“適應場景”“模塊定義”“模塊關係”這幾個部分。

  • 分層模式

   這種模式也稱爲多層體系架構模式。分層架構(layered architecture)是最常見的軟件架構,也是事實上的標準架構。這種架構將軟件分成若干個水平層,每一層都有清晰的角色和分工,不需要知道其他層的細節。層與層之間通過接口通信。雖然沒有明確約定,軟件一定要分成多少層,但是四層的結構最常見。

  1. 表示層(也稱爲UI層)
  2. 應用層(也稱爲服務層)
  3. 業務邏輯層(也稱爲領域層)
  4. 數據訪問層(也稱爲持久化層)

  • 客戶端-服務器模式

   這種模式由兩部分組成:一個服務器和多個客戶端。服務器組件將爲多個客戶端組件提供服務。客戶端從服務器請求服務,服務器爲這些客戶端提供相關服務。此外,服務器持續偵聽客戶機請求。

  • 主備模式

   這種模式由兩方組成;主設備和從設備。主設備組件在相同的從設備組件中分配工作,並計算最終結果,這些結果是由從設備返回的結果。

  • 管道-過濾器模式

   此模式可用於構造生成和處理數據流的系統。每個處理步驟都封裝在一個過濾器組件內。要處理的數據是通過管道傳遞的。這些管道可以用於緩衝或用於同步。

  • 事件驅動模式

   事件(event)是狀態發生變化時,軟件發出的通知。

事件驅動架構(event-driven architecture)就是通過事件進行通信的軟件架構。它分成四個部分。

http://www.ruanyifeng.com/blogimg/asset/2016/bg2016090304.png

  1. 事件隊列(event queue):接收事件的入口
  2. 分發器(event mediator):將不同的事件分發到不同的業務邏輯單元
  3. 事件通道(event channel):分發器與處理器之間的聯繫渠道
  4. 事件處理器(event processor):實現業務邏輯,處理完成後會發出事件,觸發下一步操作

對於簡單的項目,事件隊列、分發器和事件通道,可以合爲一體,整個軟件就分成事件代理和事件處理器兩部分。

http://www.ruanyifeng.com/blogimg/asset/2016/bg2016090305.png

  • 微核模式

微核架構(microkernel architecture)又稱爲"插件架構"(plug-in architecture),指的是軟件的內核相對較小,主要功能和業務邏輯都通過插件實現。內核(core)通常只包含系統運行的最小功能。插件則是互相獨立的,插件之間的通信,應該減少到最低,避免出現互相依賴的問題。

http://www.ruanyifeng.com/blogimg/asset/2016/bg2016090306.png

  • 點對點模式

   在這種模式中,單個組件被稱爲對等點。對等點可以作爲客戶端,從其他對等點請求服務,作爲服務器,爲其他對等點提供服務。對等點可以充當客戶端或服務器或兩者的角色,並且可以隨時間動態地更改其角色。

  • 事件總線模式

   這種模式主要是處理事件,包括4個主要組件:事件源、事件監聽器、通道和事件總線。消息源將消息發佈到事件總線上的特定通道上。偵聽器訂閱特定的通道。偵聽器會被通知消息,這些消息被髮布到它們之前訂閱的一個通道上。

  • 模型-視圖-控制器模式

   這種模式,也稱爲MVC模式,把一個交互式應用程序劃分爲3個部分,

  1. 模型:包含核心功能和數據
  2. 視圖:將信息顯示給用戶(可以定義多個視圖)
  3. 控制器:處理用戶輸入的信息

這樣做是爲了將信息的內部表示與信息的呈現方式分離開來,並接受用戶的請求。它分離了組件,並允許有效的代碼重用。

  • 黑板模式

   這種模式對於沒有確定解決方案策略的問題是有用的。黑板模式由3個主要組成部分組成。

  1. 黑板——包含來自解決方案空間的對象的結構化全局內存
  2. 知識源——專門的模塊和它們自己的表示
  3. 控制組件——選擇、配置和執行模塊

所有的組件都可以訪問黑板。組件可以生成添加到黑板上的新數據對象。組件在黑板上查找特定類型的數據,並通過與現有知識源的模式匹配來查找這些數據。

  • 解釋器模式

   這個模式用於設計一個解釋用專用語言編寫的程序的組件。它主要指定如何評估程序的行數,即以特定的語言編寫的句子或表達式。其基本思想是爲每種語言的符號都有一個分類。

  • 雲架構

   雲結構(cloud architecture)主要解決擴展性和併發的問題,是最容易擴展的架構。它的高擴展性,主要原因是沒使用中央數據庫,而是把數據都複製到內存中,變成可複製的內存數據單元。然後,業務處理能力封裝成一個個處理單元(prcessing unit)。訪問量增加,就新建處理單元;訪問量減少,就關閉處理單元。由於沒有中央數據庫,所以擴展性的最大瓶頸消失了。由於每個處理單元的數據都在內存裏,最好要進行數據持久化。

這個模式主要分成兩部分:處理單元(processing unit)和虛擬中間件(virtualized middleware)。

  1. 處理單元:實現業務邏輯
  2. 虛擬中間件:負責通信、保持sessions、數據複製、分佈式處理、處理單元的部署。

http://www.ruanyifeng.com/blogimg/asset/2016/bg2016090311.png

虛擬中間件又包含四個組件:

  1. 消息中間件(Messaging Grid):管理用戶請求和session,當一個請求進來以後,決定分配給哪一個處理單元。
  2. 數據中間件(Data Grid):將數據複製到每一個處理單元,即數據同步。保證某個處理單元都得到同樣的數據。
  3. 處理中間件(Processing Grid):可選,如果一個請求涉及不同類型的處理單元,該中間件負責協調處理單元
  4. 部署中間件(Deployment Manager):負責處理單元的啓動和關閉,監控負載和響應時間,當負載增加,就新啓動處理單元,負載減少,就關閉處理單元。

   除了上述12種架構模式外,還有SOA架構模式、微服務架構模式等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章