構架入門

什麼是構架

構架是軟件系統的形狀。拿建築物來舉例子:數據庫

  • 範式 paradigm 是磚塊
  • 設計原則是房間
  • 組件是建築

他們共同服務於一個特定的目的,就像醫院治療病人,學校教育學生同樣。緩存

咱們爲何須要架構?

行爲 vs. 結構

每個軟件系統提供兩個不一樣的價值給利益相關者:行爲與結構。軟件開發者必須確保這兩項價值都要高網絡

因爲其工做的須要,軟件架構師更多地聚焦於系統的結構而不是特性和功能。架構

終極目標——減小每加一個新特性所須要耗費的人力成本

架構服務於軟件系統的整個生命週期,使其易於理解,開發,測試,部署和操做。 其目標是最小化每一個業務用例的人力資源成本。異步

O’Reilly 出版的《軟件架構》一書很好地介紹了這樣五種基本的構架。分佈式

1.分層架構

分層架構是被普遍採用,也是被開發者所熟知的一種架構。所以,它也是應用層面上事實上的標準。若是你不知道應該使用什麼架構,用分層架構就是不錯的選擇。 微服務

示例測試

  • TCP/IP模式:應用層 > 運輸層 > 網際層 > 網絡接口層
  • Facebook TAO網絡層 > 緩存層(follower + leader) > 數據庫層

優缺點:spa

  • 優勢
    • 易於使用
    • 職責劃分
    • 可測試性
  • 缺點
    • 龐大而僵化
      • 想要對架構進行調整、擴展或者更新就必需要改變全部層,十分棘手

2.事件驅動架構

任何一個狀態的改變都會向系統發出一個事件。系統組件之間的通訊都是經由事件完成的。操作系統

一個簡化的架構包含中介(mdiator),事件隊列(event queue)和通道(channel)。下圖所示即爲簡化的事件驅動架構:

示例

  • QT:信號(signals)和槽(slots)
  • 支付基礎設施:因爲銀行網關一般有較高的延遲,所以銀行的架構中採用了異步技術

3.微核架構(aka Plug-in Architecture)

軟件的功能被分散到一個核心和多個插件中。核心僅僅含有最基本的功能。各個插件之間互相獨立並實現共享藉口以實現不一樣的目標。

示例

  • Visual Studio Code 和 Eclipse
  • MINIX 操做系統

4.微服務架構

大型系統被解離成衆多微服務,每個都是單獨部署的單位,他們之間經過RPCs進行通訊。

uber architecture

示例

5.基於空間的架構

「基於空間的架構」這一名稱來源於「元組空間」,「元組空間「有」分佈式共享空間「的含義。基於空間的架構中沒有數據庫或同步數據庫訪問,所以該架構沒有數據庫的瓶頸問題。全部處理單元共享內存中應用數據副本。這些處理單元均可以很彈性地啓動和關閉。

示例:詳見 Wikipedia

  • 主要被使用Java的架構所採用:例如:JavaSpaces

本文首發於硅谷io

相關文章
相關標籤/搜索