系統架構

1、基本概念

系統架構 = 業務架構 + 軟件架構

業務架構
從業務需求的角度出發,理清物理結構圖和邏輯結構圖,劃分出每一個子模塊。肯定爲何要這麼劃分,各個子模塊之間如何交互,每一個子模塊具備哪些接口。html

軟件架構
從解決技術上討論採用什麼樣的技術,如何分層,採用哪些好的技術特性,採用這些技術特性會爲咱們的工做帶來哪些好處,爲何要這麼作。算法

2、架構目標

1. 可靠性

系統可靠性通常是指在規定的時間內和規定的工況下,系統完成規定功能的能力/機率。

軟件差錯是軟件開發各階段潛入的人爲錯誤。數據庫

  1. 需求錯誤。 如用戶提出的需求不完整,用戶需求的變動未及時消化,軟件開發者和用戶對需求的理解不一致等。
  2. 設計錯誤。 如處理的結構和算法錯誤,缺少對特殊狀況和錯誤處理的考慮等。
  3. 編碼錯誤。 如語法錯誤,變量初始化錯誤等。
  4. 測試錯誤。 如數據準備錯誤,測試用例錯誤等。
  5. 文檔錯誤。 如文檔不齊全,文檔相關內容不一致,文檔版本不一致,缺少完整性等。

2. 安全性

計算機系統安全性包含兩部份內容:一是保證系統正常運行,避免各類非故意的錯誤與損壞;二是防止系統及數據被非法利用或破壞。

因爲應用系統中可能涉及資金、客戶信息等重要、敏感的數據,爲此需採起有效的手段確保應用系統安全。編程

  • 嚴禁原則
  • 必須原則
  • 儘量原則

3. 可伸縮性

軟件必須可以在用戶的使用率、用戶的數目增長很快的狀況下,保持合理的性能。只有這樣,才能適應用戶市場擴展的可能性。

4. 可擴展性

在新技術出現的時候,一個軟件系統應該當容許導入新技術,從而對現有系統進行功能和性能的擴展。

5. 可定製化

一樣的一套軟件,能夠根據客戶羣的不一樣和市場需求的變化進行調整。

6. 可維護性

軟件系統的維護包括兩方面:一是排除現有的錯誤,二是將新的軟件需求反映到現有系統中去。一個易於維護的系統能夠有效地下降技術支持的花費。

7. 客戶體驗

軟件系統必須易於使用。

8. 市場時機

軟件用戶要面臨同行競爭,軟件提供商也要面臨同行競爭。以最快的熟讀爭奪市場先機很是重要。

3、常見軟件架構模式

clipboard.png

1. 分層模式

該模式用於構建可分解爲多組子任務的程序,每一個子任務都在某個抽象層,每一個層對上一個更高層提供服務。

通常信息系統中最多見的4層體系以下安全

  • 表示層(也叫 UI 層)
  • 應用層(也叫服務層)
  • 業務邏輯層(也叫領域層)
  • 數據訪問層(也叫持久層)

應用場景服務器

  • 通常桌面程序
  • 電子商務網頁程序
  • TCP/IP 協議棧

clipboard.png

2. 客戶端-服務器模式

該模式也叫C/S模式,由兩部分構成:單個服務器和多個客戶端。服務器組件對多個客戶端組件提供服務。客戶端向服務器請求服務,服務端提供對應服務給這些客戶端。此外,服務器端繼續監聽客戶端請求。

應用場景網絡

  • 在線應用,好比電子郵件、文檔分享和銀行業務
  • 軟件升級系統

clipboard.png

3. 主從模式

該模式由兩部分構成:主節點和多個子節點。主節點組件向多個獨立的從節點組件分派任務,並根據從節點返回結果計算出最終結果。

應用場景架構

  • 數據庫複製,主數據庫被視爲權威來源並同步到從數據庫
  • 鏈接到計算系統的外圍設備(主從驅動)
  • 負載均衡系統(我的理解)

clipboard.png

4. 管道-過濾器模式

該模式用於構建生產和處理數據流的系統。每一個處理步驟封裝在一個過濾組件中。待處理的數據被傳送到管道之中,這些管道可用於緩衝或者同步。

應用場景負載均衡

  • 編譯器,鏈接的過濾器執行詞義分析,語法分析,語義分析和代碼生成
  • 生物資料學科的工做流
  • Gstreamer、DirectMusic

clipboard.png

5. 代理模式

該模式用於構建組件解耦的分佈式系統。這些組件經過遠程調用彼此交互。代理組件負責多個組建的通訊協調,服務器向代理公開他們的功能(服務和特性);客戶端從代理中獲取服務,而後代理重定向客戶端到註冊服務庫中一個合適的服務。

應用場景框架

  • 消息隊列軟件,好比 Apache ActiveMQ、Apache Kafka、RabbitMQ 和 JBoss Messaging

clipboard.png

6. 點對點模式

該模式中各獨立組件都叫對等點。對等點既能夠做爲客戶端從其餘對等點獲取服務,也可做爲服務端向其餘對等點提供服務。對等點可做爲客戶端、或者服務端、或者二者,而且在不一樣時間切換角色。

應用場景

  • 文件分享網絡,好比 Gnutella、G二、電驢、迅雷
  • 多媒體協議,好比 P2PTV 和 PDTP
  • 私媒體程序,好比 Spotify

clipboard.png

7. 事件總線模式

該模式主要處理事件,有4個主要組件:事件源、事件監聽器、頻道和事件總線。事件源發佈消息到事件總線上的某個頻道,監聽器訂閱某個頻道,並得知在已訂閱頻道中發佈的消息。

應用場景

  • Android 開發
  • 通知服務
  • DBus

clipboard.png

模型-視圖-控制器模式

該模式也叫 MVC 模式,劃分交互程序爲3個部分:模型-包含核心功能和數據,視圖-顯示信息給用戶(多個視圖可被定義),控制器-處理用戶輸入。它經過分割用戶信息的內部陳述和呈現、接受方式來實現,解耦組件並容許高效的代碼複用。

應用場景

  • 主流編程語言的萬維網程序架構
  • 網頁框架,好比 Django 和 Rails
  • 最經典的莫過於 MFC

clipboard.png

9. 黑板模式

該模式對沒有肯定性方案策略的問題頗有用。黑板模式由三個主要組件構成:黑板-包含解決空間對象的結構化全局內存,知識源-擁有自表示的專門模塊,控制組件-選擇、配置和執行模塊。全部組件均可訪問黑板,可生成新的數據對象並添加到黑板中。在黑板中,可根據已有知識源的匹配規則,尋找某些類型的數據。

應用場景

  • 語音識別
  • 車輛識別和跟蹤
  • 蛋白質結構鑑定
  • 聲納信號解釋

clipboard.png

10. 解釋器模式

該模式用於設計解釋特定語言編寫的程序的組件。該組件主要指定怎麼去評估程序代碼行,也就是所謂的用某種語言寫的語句或者表達式,基本點在於給語言符號分類。

應用場景

  • 數據庫查詢語言,好比 SQL
  • 用於描述通訊協議的語言

clipboard.png

4、中英文對照表

中文 英文
架構 Architecture
架構師 Software architect
可靠性 Reliable
安全性 Secure
可伸縮性 Scalable
可定製化 Customizable
可擴展性 Extensible
可維護性 Maintainable
客戶體驗 Customer Experience
市場時機 Time to Market

5、參考連接

相關文章
相關標籤/搜索