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