更新時間:2025-07-28 11:38:35作者:佚名
架構(gòu)設(shè)計的地位舉足輕重,它是研發(fā)工作的核心所在,同時也是架構(gòu)師不可或缺的專業(yè)能力。接下來,我將對此進(jìn)行全方位的詳細(xì)闡述。
架構(gòu)設(shè)計
架構(gòu)設(shè)計,指的是在軟件開發(fā)的全過程中,對系統(tǒng)的整體布局、各個組件間的相互作用、模塊的劃分等諸多方面進(jìn)行精心設(shè)計和周密規(guī)劃的活動。
這一流程包括:對系統(tǒng)需求的深入剖析、設(shè)計方案的制定、技術(shù)路線的選擇、功能模塊的細(xì)分、接口規(guī)格的明確、獨立模塊的測試、以及性能的持續(xù)優(yōu)化等多個環(huán)節(jié)。
如下圖所示:
優(yōu)秀的架構(gòu)設(shè)計至關(guān)重要,它不僅確保了系統(tǒng)具備出色的可維護(hù)性、易于擴(kuò)展、穩(wěn)定可靠以及高效性能,而且在應(yīng)用建設(shè)過程中占據(jù)著至關(guān)重要的地位。
架構(gòu)設(shè)計模式
互聯(lián)網(wǎng)技術(shù)的進(jìn)步推動了軟件架構(gòu)的演變,從單一架構(gòu)逐步發(fā)展到分布式架構(gòu),再到如今基礎(chǔ)設(shè)施的革新,我們正步入云原生時代。
在云原生時代,軟件架構(gòu)的范疇已不再僅限于單體或分布式模式,而是更加傾向于實現(xiàn)應(yīng)用程序與云計算環(huán)境的完美融合。
整體上架構(gòu)設(shè)計模式,主要分為如下幾類:
1、單體架構(gòu)
單體架構(gòu),又稱單一架構(gòu),是軟件工程領(lǐng)域里一種歷史悠久的設(shè)計模式。在這種模式中,整個軟件系統(tǒng)被整合成一個整體架構(gòu)英語的英文,形成了一個統(tǒng)一且獨立的應(yīng)用程序。
在單體架構(gòu)下,所有功能模塊與組件均匯聚于單一代碼庫,且共同部署于一致運行環(huán)境之中。
如下圖所示:
單體架構(gòu)的布局簡潔明了,非常適合用于小型應(yīng)用或處于起步階段的項目。
隨著應(yīng)用規(guī)模的不斷增大以及業(yè)務(wù)復(fù)雜性的不斷提升,單體架構(gòu)開始顯現(xiàn)出諸如性能限制、擴(kuò)展性不佳、高度耦合等種種問題。
當(dāng)單體架構(gòu)的局限逐漸暴露,我們往往需要考慮轉(zhuǎn)向分布式架構(gòu),或是采納云原生架構(gòu)來應(yīng)對這些挑戰(zhàn)。
2、分層架構(gòu)
分層架構(gòu),亦稱作水平分層架構(gòu)或分層式架構(gòu),是軟件領(lǐng)域內(nèi)一種普遍采用的架構(gòu)模式。
在分層架構(gòu)中,軟件系統(tǒng)被劃分為多個水平層次(或稱為層)。
各個層級都承擔(dān)著獨特的職能與義務(wù),同時,層級間的溝通是單方向的,上級層級能夠調(diào)用下級層級提供的功能。
最常見的就是是四層結(jié)構(gòu),如下圖所示:
表示層主要承擔(dān)著與用戶溝通的職責(zé),負(fù)責(zé)向用戶展示數(shù)據(jù)信息,并接收用戶的操作指令。這一層涵蓋了用戶界面設(shè)計、頁面呈現(xiàn)效果以及用戶輸入信息的處理等多個方面。
應(yīng)用層,作為系統(tǒng)的核心層級,承擔(dān)著實現(xiàn)業(yè)務(wù)邏輯與流程的重任,涵蓋了應(yīng)用程序的核心功能與業(yè)務(wù)規(guī)則,并負(fù)責(zé)協(xié)調(diào)不同子系統(tǒng)間的交流與互動。
領(lǐng)域?qū)?,它涵蓋了系統(tǒng)的領(lǐng)域模型與業(yè)務(wù)實體,主要負(fù)責(zé)執(zhí)行系統(tǒng)的業(yè)務(wù)流程,這一層不僅囊括了系統(tǒng)的關(guān)鍵業(yè)務(wù)規(guī)則,還包含了數(shù)據(jù)處理的核心邏輯。
數(shù)據(jù)訪問層,即DAL,其主要職責(zé)是與數(shù)據(jù)存儲系統(tǒng)進(jìn)行溝通,涵蓋了諸如對數(shù)據(jù)庫進(jìn)行讀取和寫入操作、以及數(shù)據(jù)模型與數(shù)據(jù)庫之間的映射轉(zhuǎn)換等關(guān)鍵功能。
由于各個層級彼此獨立,功能復(fù)用變得更為簡便,從而顯著提升了系統(tǒng)的可重用性及開發(fā)效能。
3.事件驅(qū)動架構(gòu)
事件驅(qū)動架構(gòu),簡稱EDA,它是一種軟件設(shè)計的模式,在這種模式中,系統(tǒng)內(nèi)各個組成部分通過發(fā)送和接收事件來實現(xiàn)信息的交流和協(xié)作。
事件驅(qū)動的架構(gòu)模式,依托于事件發(fā)布與訂閱的機制,有效實現(xiàn)了組件間的松散連接,從而使得功能的拓展和系統(tǒng)的升級變得更加簡便易行。
事件驅(qū)動架構(gòu)通常,包括以下幾個關(guān)鍵組件:
分別是:
適用于那些必須實現(xiàn)功能如解耦、異步交互以及實時處理的系統(tǒng),事件驅(qū)動架構(gòu)展現(xiàn)其適用性。
尤其適用于那些結(jié)構(gòu)復(fù)雜、分布廣泛且對實時性有較高要求的場景,例如大規(guī)模數(shù)據(jù)信息的處理、實時的狀態(tài)監(jiān)控以及分布式系統(tǒng)的整合等方面。
4.MVC架構(gòu)
MVC架構(gòu)模式是軟件領(lǐng)域內(nèi)廣泛采用的架構(gòu)風(fēng)格,它適用于開發(fā)各種交互性強的應(yīng)用軟件,比如Web應(yīng)用以及桌面應(yīng)用。
MVC架構(gòu)將應(yīng)用程序劃分為三個關(guān)鍵部分,分別是Model(模型)、View(視圖)以及Controller(控制器)。
如下圖所示:
應(yīng)用場景:
MVC架構(gòu)在構(gòu)建Web應(yīng)用程序方面得到了廣泛的應(yīng)用,它已成為眾多流行Web框架和平臺設(shè)計理念的核心。
5.微服務(wù)架構(gòu)
微服務(wù)架構(gòu),它將應(yīng)用程序拆解為若干獨立的小型服務(wù),這些服務(wù)各自獨立運作,且每一項服務(wù)都致力于實現(xiàn)某一特定的業(yè)務(wù)操作。
如下圖所示:
微服務(wù)架構(gòu),會涉及到如下組件:
1、服務(wù)注冊與發(fā)現(xiàn)(Service Discovery)
服務(wù)注冊與發(fā)現(xiàn)組件,其功能在于登記并揭示微服務(wù)的具體位置及其實例詳情。
2、API 網(wǎng)關(guān)(API Gateway)
API網(wǎng)關(guān)充當(dāng)著接入門戶的角色,它負(fù)責(zé)接收來自客戶端的請求,并將這些請求正確地導(dǎo)向相應(yīng)的微服務(wù)。
API網(wǎng)關(guān)具備處理請求路由、執(zhí)行負(fù)載均衡、進(jìn)行安全認(rèn)證以及轉(zhuǎn)換請求等能力,同時向客戶端提供一個統(tǒng)一的接入點。
3、負(fù)載均衡(Load Balancer)
負(fù)載均衡組件主要功能是將客戶端的請求分配至多個服務(wù)實例,從而確保請求的均衡負(fù)載以及系統(tǒng)的穩(wěn)定性和可靠性。
負(fù)載均衡的實現(xiàn)可以采用多種策略來分配請求,例如采用輪詢、隨機分配或根據(jù)權(quán)重進(jìn)行分發(fā)等多種方式。
4、配置中心(Configuration Center)
配置中心承擔(dān)著對微服務(wù)配置信息的集中式管理職責(zé),這包括但不限于數(shù)據(jù)庫連接設(shè)置、服務(wù)端口的指定以及日志記錄的級別設(shè)定等關(guān)鍵信息。
5、服務(wù)監(jiān)控與管理
服務(wù)監(jiān)控與管理模塊,主要負(fù)責(zé)對微服務(wù)的運行狀況及性能數(shù)據(jù)實施監(jiān)控與調(diào)控,具備搜集服務(wù)日志、性能指標(biāo)及追蹤信息的職能。
6.云架構(gòu)
云架構(gòu),亦稱云計算架構(gòu),涉及如何融合各類技術(shù)和服務(wù),旨在云環(huán)境中搭建應(yīng)用程序與系統(tǒng)。
云架構(gòu)的設(shè)計必須綜合考慮,諸如IaaS、PaaS、SaaS等云服務(wù)模型。
如下圖所示:
基礎(chǔ)設(shè)施即服務(wù),簡稱IaaS。
IaaS平臺供應(yīng)了基本的計算、存儲和網(wǎng)絡(luò)設(shè)施貝語網(wǎng)校,用戶得以借助虛擬化手段利用這些設(shè)施,自行搭建應(yīng)用程序及環(huán)境。
PaaS,即平臺即服務(wù),是一種服務(wù)模式。
PaaS平臺為應(yīng)用程序的開發(fā)與部署提供了必要的基礎(chǔ)設(shè)施和輔助工具,涵蓋了諸如開發(fā)軟件、數(shù)據(jù)庫管理系統(tǒng)、消息傳遞服務(wù)以及Web服務(wù)器的多種資源。
用戶在PaaS平臺上能夠進(jìn)行應(yīng)用程序的開發(fā)、測試以及部署,同時無需關(guān)注底層的基礎(chǔ)設(shè)施細(xì)節(jié)。
3、SaaS,即軟件即服務(wù)模式
SaaS模式下的應(yīng)用程序服務(wù)依托于云端,用戶僅需借助互聯(lián)網(wǎng)即可訪問并操作這些應(yīng)用,整個過程無需進(jìn)行軟件的安裝、設(shè)置或維護(hù)。
這類SaaS應(yīng)用涵蓋諸多領(lǐng)域,諸如電子郵件服務(wù)(例如Gmail)、辦公軟件套裝(比如Google Docs、Microsoft Office 365)以及客戶關(guān)系管理系統(tǒng)(如Salesforce)等。
總體而言,IaaS、PaaS以及SaaS構(gòu)成了云計算服務(wù)的主要類別,它們各自提供了不同層次的云端服務(wù)功能。
架構(gòu)設(shè)計六大原則
架構(gòu)設(shè)計都會涉及到原則,以下是常見的6大設(shè)計原則:
1.單一職責(zé)原則
每個模塊或組件都應(yīng)承擔(dān)唯一職責(zé),以此確保系統(tǒng)結(jié)構(gòu)清晰、易于把握,并有效降低代碼的復(fù)雜性。
2.接口隔離原則
接口隔離法則,這一原則指導(dǎo)我們?nèi)绾芜M(jìn)行接口的設(shè)計,以及如何合理劃分接口,從而使系統(tǒng)在靈活性、可擴(kuò)展性和維護(hù)性方面得到顯著提升。
接口隔離原則的核心思想是:
客戶端不應(yīng)該強制依賴于,它不需要的接口。
接口設(shè)計應(yīng)簡潔高效,針對客戶端的具體要求進(jìn)行優(yōu)化,避免冗余功能的提供。
遵循接口隔離原則,能夠有效減少系統(tǒng)組件間的緊密聯(lián)系,從而增強系統(tǒng)的適應(yīng)性和維護(hù)便捷性。
3.依賴倒置原則
依賴倒置原則,簡稱DIP,是面向?qū)ο笤O(shè)計領(lǐng)域的一項核心原則。
依賴倒置原則,它指導(dǎo)著如何設(shè)計軟件組件之間的依賴關(guān)系。
主要會涉及到:
4.里氏替換原則
里氏替換原則規(guī)定,子類對象需能替代父類對象使用,同時確保系統(tǒng)運作的準(zhǔn)確性不受影響。
換言之,子類需維持與父類相同的行為特性,并且在其父類得以應(yīng)用的任何場景中,均能確保以子類實例進(jìn)行安全替換。
5.開閉原則
開閉原則,這一原則指導(dǎo)我們設(shè)計軟件系統(tǒng),旨在確保系統(tǒng)易于擴(kuò)展,同時又能有效避免修改。
軟件實體,諸如類、模塊、函數(shù)等,理應(yīng)接納擴(kuò)展架構(gòu)英語的英文,卻應(yīng)拒絕修改。
換言之,軟件系統(tǒng)的構(gòu)建需確保即便不對現(xiàn)有代碼進(jìn)行改動,也能實現(xiàn)功能的拓展。
6.迪米特法則
迪米特法則亦稱作最少了解原則,此原則強調(diào)對象間的交流應(yīng)力求簡潔,且各對象不宜與不熟悉的對象直接進(jìn)行信息交換。
以上