五大常用軟體架構分析方案

2020-12-13 騰訊網

一、分層架構

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

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

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

表現層(presentation):用戶界面,負責視覺和用戶互動

業務層(business):實現業務邏輯

持久層(persistence):提供數據,SQL 語句就放在這一層

資料庫(database) :保存數據

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

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

優點

結構簡單,容易理解和開發

不同技能的程式設計師可以分工,負責不同的層,天然適合大多數軟體公司的組織架構

每一層都可以獨立測試,其他層的接口通過模擬解決

缺點

一旦環境變化,需要代碼調整或增加功能時,通常比較麻煩和費時

部署比較麻煩,即使只修改一個小地方,往往需要整個軟體重新部署,不容易做持續發布

軟體升級時,可能需要整個服務暫停

擴展性差。用戶請求大量增加時,必須依次擴展每一層,由於每一層內部是耦合的,擴展會很困難

二、事件驅動架構

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

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

事件隊列(event queue):接收事件的入口

分發器(event mediator):將不同的事件分發到不同的業務邏輯單元

事件通道(event channel):分發器與處理器之間的聯繫渠道

事件處理器(event processor):實現業務邏輯,處理完成後會發出事件,觸發下一步操作

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

優點

分布式的異步架構,事件處理器之間高度解耦,軟體的擴展性好

適用性廣,各種類型的項目都可以用

性能較好,因為事件的異步本質,軟體不易產生堵塞

事件處理器可以獨立地加載和卸載,容易部署

缺點

涉及異步編程(要考慮遠程通信、失去響應等情況),開發相對複雜

難以支持原子性操作,因為事件通過會涉及多個處理器,很難回滾

分布式和異步特性導致這個架構較難測試

三、微核架構

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

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

優點

良好的功能延伸性(extensibility),需要什麼功能,開發一個插件即可

功能之間是隔離的,插件可以獨立的加載和卸載,使得它比較容易部署,

可定製性高,適應不同的開發需要

可以漸進式地開發,逐步增加功能

缺點

擴展性(scalability)差,內核通常是一個獨立單元,不容易做成分布式

開發難度相對較高,因為涉及到插件與內核的通信,以及內部的插件登記機制

四、微服務架構

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

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

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

RESTful API 模式:服務通過 API 提供,雲服務就屬於這一類

RESTful 應用模式:服務通過傳統的網絡協議或者應用協議提供,背後通常是一個多功能的應用程式,常見於企業內部

集中消息模式:採用消息代理(message broker),可以實現消息隊列、負載均衡、統一日誌和異常處理,缺點是會出現單點失敗,消息代理可能要做成集群

優點

擴展性好,各個服務之間低耦合

容易部署,軟體從單一可部署單元,被拆成了多個服務,每個服務都是可部署單元

容易開發,每個組件都可以進行持續集成式的開發,可以做到實時部署,不間斷地升級

易於測試,可以單獨測試每一個服務

缺點

由於強調互相獨立和低耦合,服務可能會拆分得很細。這導致系統依賴大量的微服務,變得很凌亂和笨重,性能也會不佳。

一旦服務之間需要通信(即一個服務要用到另一個服務),整個架構就會變得複雜。典型的例子就是一些通用的 Utility 類,一種解決方案是把它們拷貝到每一個服務中去,用冗餘換取架構的簡單性。

分布式的本質使得這種架構很難實現原子性操作,交易回滾會比較困難。

五、雲架構

雲結構(cloud architecture)主要解決擴展性和並發的問題,是最容易擴展的架構。

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

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

處理單元:實現業務邏輯

虛擬中間件:負責通信、保持sessions、數據複製、分布式處理、處理單元的部署。

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

消息中間件(Messaging Grid):管理用戶請求和session,當一個請求進來以後,決定分配給哪一個處理單元。

數據中間件(Data Grid):將數據複製到每一個處理單元,即數據同步。保證某個處理單元都得到同樣的數據。

處理中間件(Processing Grid):可選,如果一個請求涉及不同類型的處理單元,該中間件負責協調處理單元

部署中間件(Deployment Manager):負責處理單元的啟動和關閉,監控負載和響應時間,當負載增加,就新啟動處理單元,負載減少,就關閉處理單元。

優點

高負載,高擴展性

動態部署

缺點

實現複雜,成本較高

主要適合網站類應用,不合適大量數據吞吐的大型資料庫應用

較難測試

相關焦點

  • ...解決方案,大型企業IT架構走向「中臺化」,智能數據分析/AI智能...
    中信建投:未來三年智能化和AI為中國企業級服務帶來深遠影響;① 中信建投指出,2021年中國企業級軟體收入增長將回到10%以上,智能化、大數據和雲化將繼續是企業IT支出重點;② 未來三年企業級服務市場主要變化趨勢:產品形態,IT產品繼續「軟硬解耦」趨勢,軟體產品走向「雲原生」架構;③ 解決方案,大型企業IT架構走向「中臺化」,智能數據分析/AI智能將為企業提供智能運營支撐
  • SWE.2軟體架構設計
    ,識別哪些軟體需求應該分配給軟體的哪些要素,並根據已定義的標準評估軟體架構設計。 最佳實踐:SWE.2.BP1:開發軟體架構設計。開發並編制軟體架構設計,該設計指定了與功能和非功能軟體需求相關的軟體要素。[outcome1] 注1:軟體被分解為跨越適當的層次級別的要素,直到詳細設計中描述的軟體組件(軟體架構設計的最低層次的要素)。
  • SWE.2的軟體架構設計
    ,識別哪些軟體需求應該分配給軟體的哪些要素,並根據已定義的標準評估軟體架構設計。 最佳實踐:SWE.2.BP1:開發軟體架構設計。開發並編制軟體架構設計,該設計指定了與功能和非功能軟體需求相關的軟體要素。[outcome1] 注1:軟體被分解為跨越適當的層次級別的要素,直到詳細設計中描述的軟體組件(軟體架構設計的最低層次的要素)。 SWE.2.BP2:分配軟體需求。將軟體需求分配到軟體架構設計的要素中。
  • 主流超融合基礎架構產品與技術比較分析 - 基礎設施_CIO時代網...
    對於數據共享當前很多超融合架構產品都可以提供相應解決方案的!   4.超融合的應用範圍?   是不是超融合大多適用於大數據分析上,主要是在線分析型應用和資料庫?   解答:首先,超融合系統適用於IT環境的所有應用類型。
  • 軟體項目實訓及課程設計指導——系統設計中的系統架構設計示例
    由於J2EE技術規範為開發複雜的、分布式企業級的應用系統定義了一套體系結構和技術規範,它不僅提供了一套完整的基於標準化模塊的功能服務組件,而且也提供了對企業應用系統的標準縱向分層設計方案。如下示圖為在J2EE技術平臺下的軟體應用系統的典型分層設計方案,在該分層設計中的系統各個層之間只存在單向依賴關係,從而較好地實現了各個層的封裝和彼此間的隔離。
  • 軟體項目實訓及課程設計指導——軟體系統設計中的系統架構設計示例
    UML包視圖體現出軟體系統架構設計的最終結果。 由於J2EE技術規範為開發複雜的、分布式企業級的應用系統定義了一套體系結構和技術規範,它不僅提供了一套完整的基於標準化模塊的功能服務組件,而且也提供了對企業應用系統的標準縱向分層設計方案。如下示圖為在J2EE技術平臺下的軟體應用系統的典型分層設計方案,在該分層設計中的系統各個層之間只存在單向依賴關係,從而較好地實現了各個層的封裝和彼此間的隔離。
  • 圖表繪製與處理的常用軟體
    我列出了常用的七款學術論文繪圖軟體如表1-2-1所示。Origin自1991年問世以來,由於其操作簡便,功能開放,很快就成為國際流行的分析軟體之一,是公認的快速、靈活、易學的工程製圖軟體。Origin 2017版本增加了許多顏色主題方案,可以大大改進圖表的美觀程度。
  • 乾貨|BIM從業者常用軟體合集
    6、NavigatorBentley Navigator模型審查和協同工作軟體。在三維模型中通過更加清晰可見的信息,更加深入了解您的項目與運營。設計階段:通過碰撞檢測提供及時的問題解決方案,幫助確保業務間的協調。
  • 如何設計一款優秀的軟體架構
    在軟體架構設計方面而言,也是類似的道理:遵循自然規律以明確大的方向,使用優秀的實操戰術,再根據實際情況落地。這是個快餐年代,幾乎所有人都只做一件事 -「取勢」。幾乎沒有多少人會去理解一個Servlet的工作原理,去理解一次HTTP請求的完整流程,因為有超多框架幫你屏蔽了這裡的細節。
  • 如何保證軟體應用系統架構設計結果的可擴展性和可重用性(上篇)
    軟體項目實訓及課程設計指導——如何保證軟體應用系統架構設計結果的可擴展性和可重用性(上篇)1、良好的可重用性軟體系統架構設計結果的主要體現可重用性的軟體應用系統的系統架構設計結果主要體現在如下兩個方面——本項目的系統架構設計的結果是可重用的和在本項目的系統架構設計中重用成熟的系統架構設計方案
  • 軟體項目實訓及課程設計指導——如何實現面向對象的系統架構設計
    軟體項目實訓及課程設計指導——如何實現面向對象的系統架構設計1、什麼是面向對象的軟體應用系統的架構設計從軟體應用系統的架構設計師的角度來看,所謂的軟體應用系統的系統架構就是一套構建軟體應用系統的整體結構的各種設計準則
  • 架構中臺設計圖
    程序框圖的設計是在處理流程圖的基礎上,通過對輸入輸出數據和處理過程的詳細分析,將計算機的主要運行步驟和內容標識出來。 軟體開發周期 軟體生命周期(Software Life Cycle,SLC)是軟體的產生直到報廢或停止使用的生命周期。
  • 【招聘】光大銀行信用卡中心招雲平臺、安全、資料庫、架構等多個...
    架構師職位描述:(1)負責系統架構的優化,協助團隊解決開發過程的技術難題;(2)負責項目技術方案的架構設計與評審,協助項目經理進行技術決策,並評估風險;(3)負責項目的技術選型,預估技術風險,評測性能指標;(4)積極主動跟蹤行業技術趨勢,負責關鍵技術的攻關;(5)負責制定開發規範
  • 人力資源常用的軟體排名,推薦選擇綜合指數最高的
    人力資源常用的軟體排名,當然對於筆者來說也是推薦綜合指數最高的,今天也和大家一起來分享一下。一、i人事受歡迎指數:☆☆☆☆☆領先的一站式人力資源解決方案供應商力德國際出品,從以人為本角度出發進行研發。據了解,人事軟體i人事設計、研發、實施人員均具有人力資源工作背景,擁有更透徹的對「人」的理解。
  • 中望軟體與韓國FOV公司合作,打造高效的電極設計解決方案
    近日,中望軟體與韓國FOV公司達成戰略合作,聯手打造「中望3D平臺+Electrode Focus」解決方案。該解決方案針對模具設計的特點和要求提供了專業的電極工作流程與專業工具,能夠幫助工程師高效地處理複雜的模具電極設計,從而提高工作效率。 中望軟體是國內領先的CAD軟體供應商,旗下產品中望3D是自主研發的、集「曲面造型,實體建模,模具設計,裝配,鈑金,工程圖,2-5軸加工」等功能於一體,能覆蓋產品設計開發全流程的三維CAD/CAM軟體。
  • 架構師最常使用的5種架構模式及其適用場景分析
    您可以採用幾種架構來實現應用程式?目前大多數程序都使用下面提到的五種架構之一。 在本文中,我將五種軟體架構模式的優缺點以及適合場景提煉出來作為快速參考。你可以在單個系統中使用多個架構模式,它們的組合既是計算機科學,也是一門藝術。
  • 對比解讀五種主流大數據架構的數據分析能力
    隨著大數據技術的發展,數據挖掘、數據探索等專有名詞的曝光度越來越高,但是在類似於Hadoop系列的大數據分析系統大行其道之前,數據分析工作已經歷了長足的發展,尤其是以BI系統為主的數據分析,已經有了非常成熟和穩定的技術方案和生態系統,對於BI系統來說,大概的架構圖如下:
  • 未來企業數據中心整體解決方案分析
    樂嘉裕表示目前企業最大的問題其實是由於目前的IT技術設施局限性造成的,往往有一些好的架構設計沒有辦法進行實施。針對這種情況他表示,只有通過雲才能解決這個問題。雲能實現最快的部署,能實現快速優化。他稱雲實際上是一個整體的解決方案,可以幫助企業進行定製化的操作,幫助企業業務迅速轉型。
  • HR常用的人力資源系統軟體有哪些?
    HR在日常工作中多多少少都會用到相關的人力資源系統軟體,除了能提高辦公效率也能適當的減輕工作壓力。人力資源的工作內容主要分為人力資源規劃、人員招聘與配置、培訓開發與實施、績效考核與實施、薪酬福利、人事管理、職業生涯管理和員工關係管理八大模塊。可見人力資源系統軟體對於HR的重要性!
  • 2020年的13個優秀企業架構工具
    人們需要了解有關這些優秀企業架構(EA)工具的更多信息,以及它們是否為組織提供了合適的解決方案。13個優秀企業架構工具1.Enterprise Studio與幾種流行的企業架構(EA)框架集成,包括TOGAF、Zachman、ArchiMate、IAF、PEAF、DYA和Tapscott。該平臺幫助組織跨業務單元建模、可視化、分析和記錄企業架構。使用該平臺,組織可以直接從Microsoft Office應用程式導入數據,還支持自動數據收集。3.