軟件架構(gòu)突出體現(xiàn)系統(tǒng)的所有高級(jí)組件以及它們之間的交互過(guò)程。而軟件設(shè)計(jì)是一種代碼級(jí)設(shè)計(jì),側(cè)重于將應(yīng)用程序業(yè)務(wù)邏輯分布到具有其特定目的的各個(gè)模塊中,如何有助于構(gòu)建和管理應(yīng)用程序的業(yè)務(wù)邏輯。
Web 應(yīng)用程序架構(gòu)圖
用戶代理
用戶代理主要是幫助用戶與服務(wù)器交互的工具。用戶主要使用 瀏覽器(如Google Chrome、Firefox、微軟Edge、Safari 以及 Android 和 IOS 平臺(tái)上的應(yīng)用程序)與服務(wù)器交互。用戶代理向服務(wù)器發(fā)送請(qǐng)求并接收響應(yīng),然后顯示界面給用戶。
域名系統(tǒng)
域名服務(wù)器就像網(wǎng)站的通訊簿。每當(dāng)用戶使用瀏覽器向 Web 地址發(fā)送請(qǐng)求時(shí),瀏覽器在發(fā)送請(qǐng)求之前利用 DNS 查找 Web 服務(wù)器的真實(shí)地址(IP 地址),以便讓瀏覽器找出網(wǎng)站所在的服務(wù)器,將 HTTP 請(qǐng)求發(fā)送到正確的位置。
負(fù)載均衡
負(fù)載均衡設(shè)備主要處理水平擴(kuò)展。它將傳入請(qǐng)求定向到多個(gè)服務(wù)器之一,然后負(fù)載均衡設(shè)備再將從這些服務(wù)器接收到的響應(yīng)發(fā)送給用戶。
通常,Web 應(yīng)用程序服務(wù)器以相互鏡像的多個(gè)副本形式存在,以提供一致性和高可用性。負(fù)載均衡器設(shè)備之間用算法分配任務(wù)。它與服務(wù)器結(jié)合自動(dòng)縮放,可以工作得很好。
虛擬機(jī)
在計(jì)算中,虛擬機(jī)( VM ) 是計(jì)算機(jī)系統(tǒng)的虛擬化/仿真。虛擬機(jī)基于計(jì)算機(jī)體系結(jié)構(gòu)并提供物理計(jì)算機(jī)的功能。它們的實(shí)現(xiàn)包括專門(mén)的硬件、軟件或組合。
Web服務(wù)器
Web 服務(wù)器處理用戶的請(qǐng)求并將包含數(shù)據(jù)(HTML、JSON、XML 等文檔)的響應(yīng)包發(fā)送回瀏覽器。托管在虛擬機(jī)上的 Web 服務(wù)器利用 VM 提供的計(jì)算能力來(lái)執(zhí)行任務(wù)。Web 服務(wù)器通常是指后端基礎(chǔ)設(shè)施,例如數(shù)據(jù)庫(kù)、緩存服務(wù)器、消息隊(duì)列等。
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)提供用于組織、添加、搜索、更新、刪除和對(duì)數(shù)據(jù)執(zhí)行計(jì)算的工具。通常有關(guān)系型數(shù)據(jù)庫(kù)——MySQL、PostgreSQL、Microsoft SQL Server、Oracle 數(shù)據(jù)庫(kù)、Microsoft Access 等,非關(guān)系型數(shù)據(jù)庫(kù)——MongoDB、Dynamo DB 等。
緩存服務(wù)
緩存服務(wù)為數(shù)據(jù)提供存儲(chǔ),允許存儲(chǔ)和搜索數(shù)據(jù)。緩存允許開(kāi)發(fā)者參考先前的計(jì)算結(jié)果以加快速度。緩存可以在各種技術(shù)層中應(yīng)用,包括操作系統(tǒng)、網(wǎng)絡(luò)層(包括內(nèi)容交付網(wǎng)絡(luò) (CDN) 和 DNS)、Web 應(yīng)用程序和數(shù)據(jù)庫(kù)等。
客戶端 — HTTP 緩存標(biāo)頭、瀏覽器
DNS — DNS 服務(wù)器
Web — HTTP 緩存標(biāo)頭、CDN、反向代理、Web 加速器、鍵/值存儲(chǔ)
應(yīng)用程序 — 鍵/值數(shù)據(jù)存儲(chǔ)、本地緩存
數(shù)據(jù)庫(kù) — 數(shù)據(jù)庫(kù)緩存、緩沖區(qū)、鍵/值數(shù)據(jù)存儲(chǔ)
內(nèi)容交付網(wǎng)絡(luò)(CDN)
內(nèi)容交付網(wǎng)絡(luò)或內(nèi)容分發(fā)網(wǎng)絡(luò) (CDN) 是代理服務(wù)器及其數(shù)據(jù)中心的地理分布網(wǎng)絡(luò)。目標(biāo)是通過(guò)相對(duì)于最終用戶在空間上分配服務(wù)來(lái)提供高可用性和性能。CDN 服務(wù)于大部分互聯(lián)網(wǎng)內(nèi)容,包括 Web 對(duì)象(文本、圖形和腳本)、可下載對(duì)象(媒體文件、軟件、文檔)、應(yīng)用程序(電子商務(wù)、門(mén)戶)、直播流媒體、點(diǎn)播流媒體以及社交媒體網(wǎng)站。
外部存儲(chǔ)
外部存儲(chǔ)用于存儲(chǔ)資產(chǎn),包括圖像、視頻、文檔和其他大文件。在很多情況下,也會(huì)對(duì)這些文件進(jìn)行操作。示例 — 視頻網(wǎng)站自動(dòng)轉(zhuǎn)換用戶上傳的多種分辨率的視頻。微博將用戶圖像和視頻轉(zhuǎn)換為適合移動(dòng)設(shè)備的格式。由于將這些數(shù)據(jù)存儲(chǔ)在 VM 本地磁盤(pán)上可能成本高昂,且會(huì)消耗大量計(jì)算資源,因此它們通常存儲(chǔ)在外部存儲(chǔ)中。云存儲(chǔ)是最受歡迎的選項(xiàng)之一。
云存儲(chǔ)是一種云計(jì)算模型,它通過(guò)將數(shù)據(jù)存儲(chǔ)作為服務(wù)進(jìn)行管理和運(yùn)營(yíng)的云計(jì)算提供商將數(shù)據(jù)存儲(chǔ)在互聯(lián)網(wǎng)上。它以即時(shí)容量和成本按需交付,無(wú)需購(gòu)買(mǎi)和自己管理數(shù)據(jù)存儲(chǔ)基礎(chǔ)設(shè)施。
Web服務(wù)
Web 服務(wù)提供了一個(gè)通用平臺(tái),允許基于各種編程語(yǔ)言構(gòu)建的應(yīng)用程序能夠相互通信。
Web 服務(wù)使用 SOAP(簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)在應(yīng)用程序之間發(fā)送 XML 數(shù)據(jù)。數(shù)據(jù)通過(guò) HTTP 請(qǐng)求發(fā)送。從 Web 服務(wù)發(fā)送到應(yīng)用程序的數(shù)據(jù)稱為 SOAP 消息。SOAP 消息是一個(gè) XML 文檔。由于文檔是用 XML 編寫(xiě)的,因此調(diào)用 Web 服務(wù)的客戶端應(yīng)用程序可以用任何編程語(yǔ)言編寫(xiě)。
主要有兩種類型的 Web 服務(wù):
簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議或 SOAP Web 服務(wù)。
具象狀態(tài)傳輸或 REST Web 服務(wù)。
數(shù)據(jù)倉(cāng)庫(kù)
數(shù)據(jù)倉(cāng)庫(kù)是用于報(bào)告和數(shù)據(jù)分析的系統(tǒng),被認(rèn)為是商業(yè)智能的核心組件。每個(gè)現(xiàn)代應(yīng)用程序都會(huì)收集、存儲(chǔ)和分析數(shù)據(jù)。DW 是來(lái)自一個(gè)或多個(gè)不同來(lái)源的集成數(shù)據(jù)的中央存儲(chǔ)庫(kù)。它們將當(dāng)前和歷史數(shù)據(jù)存儲(chǔ)在一個(gè)地方,用于執(zhí)行商業(yè)智能和為企業(yè)創(chuàng)建分析報(bào)告。
用于構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)的兩種主要方法是提取、轉(zhuǎn)換、加載 (ETL) 和提取、加載、轉(zhuǎn)換 (ELT)。
這三個(gè)必需的過(guò)程分別是——
提?。簭亩鄠€(gè)來(lái)源提取數(shù)據(jù)。
轉(zhuǎn)換 : 對(duì)數(shù)據(jù)進(jìn)行清洗、邊距和分類的轉(zhuǎn)換。
加載:將數(shù)據(jù)加載到存儲(chǔ)中以進(jìn)行數(shù)據(jù)倉(cāng)庫(kù)。
Web 應(yīng)用程序組件模型
Web 應(yīng)用程序組件只有三種模型。它與用于 Web 應(yīng)用程序的服務(wù)和數(shù)據(jù)庫(kù)的數(shù)量密切相關(guān)。他們來(lái)了:
一臺(tái)Web服務(wù)器,一臺(tái)數(shù)據(jù)庫(kù)
多個(gè)Web服務(wù)器,一個(gè)數(shù)據(jù)庫(kù)
多個(gè) Web 服務(wù)器、多個(gè)數(shù)據(jù)庫(kù)
應(yīng)用服務(wù)
這三種所謂的“單體”模型是由于其服務(wù)器的剛性和穩(wěn)定性。相比之下,應(yīng)用服務(wù)(微服務(wù)和無(wú)服務(wù)器)則是敏捷的,它們簡(jiǎn)化了升級(jí)和擴(kuò)展,可以將 Web 服務(wù)器拆分為更小的部分:微服務(wù)中的“服務(wù)”和無(wú)服務(wù)器中的“功能”。因此,使用它們中的每一個(gè)獨(dú)立地修改和縮放會(huì)更容易。
Web 應(yīng)用程序架構(gòu)最佳實(shí)踐
構(gòu)建可靠應(yīng)用程序架構(gòu)的主要標(biāo)準(zhǔn):
高效的
靈活的
可重復(fù)使用
易于測(cè)試
始終如一地成功解決問(wèn)題
結(jié)構(gòu)良好且易于理解的代碼
在開(kāi)發(fā)過(guò)程中可擴(kuò)展
有快速的響應(yīng)時(shí)間
非碎片化
沒(méi)有單點(diǎn)故障
簡(jiǎn)單
有首選安全標(biāo)準(zhǔn)
(責(zé)任編輯:代碼如詩(shī)) |