當前位置:編程學習大全網 - 源碼下載 - 軟件架構入門-分層架構、事件驅動、微服務架構和雲原生架構

軟件架構入門-分層架構、事件驅動、微服務架構和雲原生架構

軟件架構(software architecture)就是軟件的基本結構。

合適的架構是軟件成功的最重要因素之壹。大型軟件公司通常有專門的架構師職位(architect),只有資深程序員才可以擔任。

O'Reilly 出版過壹本免費的小冊子《Software Architecture Patterns》(PDF), 介紹了五種最常見的軟件架構,是非常好的入門讀物。

軟件架構就是軟件的基本結構。架構的本質是管理復雜性。 如果妳覺得架構不重要,可能是妳做的事情不夠復雜,或者是妳沒有管理好復雜性。架構模式雖多,經過抽象沈澱之後,也就那麽幾種:

1. 分層架構(比較傳統的單體架構)

2. 事件驅動架構 (壹般適用於應用局部場景,用來實現異步解耦)

3. 微核架構(又稱插件架構,開發難度較高,壹般用來做工具軟件開發,如Eclipse,不太適合分布式業務場景)

4. 微服務架構(當前比較流行的服務化架構,解決單體架構面臨的問題,適合敏捷開發,快速叠代)

5. 雲架構(現在的說法是雲原生架構-Cloud Native,基於Docker、Kubernetes、Service Mesh 雲原生架構)

在原文的基礎上,我按照自己的想法,進行了小幅調整。

分層架構( layered architecture )是最常見的軟件架構,也是事實上的標準架構。如果妳不知道要用什麽架構,那就用它。

這種架構將軟件分成若幹個水平層,每壹層都有清晰的角色和分工,不需要知道其他層的細節。層與層之間通過接口通信。

雖然沒有明確約定,軟件壹定要分成多少層,但是四層的結構最常見。

有的軟件在邏輯層(business)和持久層(persistence)之間,加了壹個服務層(service),提供不同業務邏輯需要的壹些通用接口。

用戶的請求將依次通過這四層的處理,不能跳過其中任何壹層。

優點

缺點

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

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

事件驅動架構(event-driven architecture)核心組件:

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

優點

缺點

事件驅動架構在通信產品中應用得也非常廣泛,典型的如狀態機處理。 事件驅動架構不適於做頂層架構,但適合做局部實現,幾乎遍布在通信軟件的各個角落。

微核架構(microkernel architecture)又稱為"插件架構"(plug-in architecture),指的是軟件的內核相對較小,主要功能和業務邏輯都通過插件實現。

內核(core)通常只包含系統運行的最小功能。插件則是互相獨立的,插件之間的通信,應該減少到最低,避免出現互相依賴的問題。

優點

缺點

微核架構的設計和開發難度較高,這就註定它在企業產品中用得不多,雖然它的優點還不少。

微服務架構(microservices architecture)是服務導向架構(service-oriented architecture,縮寫 SOA)的升級。

每壹個服務就是壹個獨立的部署單元(separately deployed unit)。這些單元都是分布式的,互相解耦,通過遠程通信協議(比如REST、SOAP)聯系。

微服務架構分成三種實現模式。

現在開源的微服務框架比較多,如常用的有Spring Cloud、Dubbo、ServiceComb等等。

優點

缺點

雲架構(cloud architecture,現在的說法是雲原生-Cloud Native)主要解決擴展性和並發的問題,是最容易擴展的架構。

它的高擴展性,主要原因是可以基於雲上計算資源彈性伸縮。然後,業務處理能力封裝成壹個個處理單元(prcessing unit)。訪問量增加,就新建處理單元(Docker容器);訪問量減少,就關閉處理單元(Docker容器)。由於沒有中央數據庫,所以擴展性的最大瓶頸消失了。由於每個處理單元的數據都獨立分庫。

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

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

隨著Docker、Kubernetes等容器化技術的快速發展,上述關於雲架構描述有點陳舊了。當前最新的雲原生架構,以Docker+Kubernetes為核心,尤其是容器編排Kubernetes 已經成為事實上的行業標準。

雲原生架構圖的主要特征:

主要目標:

1. 讓開發人員聚焦業務邏輯的實現,其他交給容器雲平臺來完成;

2. 支持業務系統的快速叠代,支撐業務的快速變化和發展;

3. 構建以***享服務體系為核心的業務中臺;

下面是我針對某新零售企業設計的雲原生架構圖,以雲和微服務架構為基礎構建雲原生應用,這裏雲可以是公有雲、私有雲、混合雲等等。

以上是從不同的視角,對架構進行了分類。實際應用中,各種架構並不是孤立的,可以根據業務環境和業務訴求,對各種架構進行綜合和嫁接。每種架構都有其優點和缺點。優點不必多說,缺點則幾乎都是通過工具工程(比如自動化發布工具、自動化測試等等)能力的方法來規避,工具工程對軟件架構非常重要。

  • 上一篇:域名解析失敗,請檢查DNS設置dns設置linux
  • 下一篇:求翻譯~~~~~~~~
  • copyright 2024編程學習大全網