如何從一個(gè)簡(jiǎn)單的網(wǎng)站架構(gòu)演進(jìn)發(fā)展成大型網(wǎng)站

2023-11-21    分類: 網(wǎng)站建設(shè)

前言

寫這篇文章的目的是為了幫助自己思考和澄清,以及如何從一個(gè)簡(jiǎn)單的網(wǎng)站架構(gòu)演進(jìn)到一個(gè)大型的網(wǎng)站架構(gòu),主要集中在技術(shù)方面

簡(jiǎn)單的網(wǎng)站

由于沒做過php,所以就以jsp為例,jsp為網(wǎng)站前端,以電子商務(wù)網(wǎng)站為例,描述一個(gè)簡(jiǎn)單的網(wǎng)站結(jié)構(gòu)

前端jsp+css+js

后端java ssh

網(wǎng)絡(luò)容器

數(shù)據(jù)庫

開發(fā)人員,一名美工,一名前端,一名 Java

部署計(jì)劃是:

一臺(tái)服務(wù)器,部署和

架構(gòu)圖如下:

應(yīng)用和數(shù)據(jù)庫的分布式部署

然后網(wǎng)站運(yùn)行了一段時(shí)間,開始盈利了,用戶數(shù)量也增加了。這時(shí)候數(shù)據(jù)庫的數(shù)據(jù)量還不是很大。

但是,越來越多的用戶訪問會(huì)占用大量的服務(wù)器內(nèi)存和cpu。數(shù)據(jù)庫和應(yīng)用程序應(yīng)該分開部署。架構(gòu)圖如下

這樣網(wǎng)站就可以運(yùn)行一段時(shí)間了

解耦開發(fā)

接下來我們來看看開發(fā)問題,但是開發(fā)和運(yùn)維往往是分不開的。由于網(wǎng)站業(yè)務(wù)的快速發(fā)展,我們必須給它添加新的功能,否則將無法發(fā)揮,功能也會(huì)越來越多的開發(fā)者變得越來越相互依賴。以前的開發(fā)模式是java程序員從jsp寫到dao,全都負(fù)責(zé),所以現(xiàn)在有5個(gè)java一起開發(fā),每個(gè)負(fù)責(zé)不同的功能,比如用戶模塊、商品模塊、訂單模塊、交易模塊等。 ,那么問題來了

1 Java程序員經(jīng)常對(duì)css做一些調(diào)整,寫了很多工作,我們使用的是

2 不一定要等到所有模塊都開發(fā)完成后再上線。在很多情況下,只需要修改一個(gè)模塊就可以上線。那么代碼寫在一個(gè)項(xiàng)目中,版本控制就變得很困難了。而且,每次修改一個(gè)模塊的功能,都可能影響到另一個(gè)模塊的功能,導(dǎo)致項(xiàng)目變得很不穩(wěn)定。這種情況對(duì)于運(yùn)行中的項(xiàng)目來說是致命的,無限加班也無濟(jì)于事。痛苦。

解決方案 1(模塊化)

這是我多年前想到的解決方案。這么多功能不能合二為一。我指的是一個(gè) java web 項(xiàng)目。至少在開發(fā)過程中必須模塊化,分離不同的功能。 通過接口調(diào)用,如用戶模塊、應(yīng)用模塊、商品模塊、訂單模塊、交易模塊等。不同的人負(fù)責(zé)開發(fā),那么模塊之間如何通信呢?我當(dāng)時(shí)的計(jì)劃是,每個(gè)后端模塊都是一個(gè)jar包項(xiàng)目。當(dāng)它們被釋放時(shí)php大型網(wǎng)站技術(shù)架構(gòu),它們被標(biāo)記為一個(gè) jar 包,供其他模塊調(diào)用。該項(xiàng)目的構(gòu)建使其從開發(fā)到部署更加自動(dòng)化?;緦?shí)現(xiàn)模塊化開發(fā),項(xiàng)目發(fā)布更加穩(wěn)定。

模塊化的缺點(diǎn)

這個(gè)想法就是從那里來的,他們也模塊化了不同的功能,但是這種形式有很多缺點(diǎn):

1 隨著時(shí)間的推移,每個(gè)模塊都在不斷更新,版本也在不斷升級(jí)。如果模塊 A 依賴于模塊 b,則 C

可以理解為A為web前置模塊,b為用戶模塊,C為訂單模塊

如下圖:

如果 b 或 C 發(fā)生變化,則 A 有 2 個(gè)選擇:

1 如果 b 和 C 沒有更新,它們?nèi)匀豢梢允褂?。結(jié)果將是不支持最新的 b 和 c 函數(shù)。

2 如果選擇更新,A需要重新添加新的b或C jar包并進(jìn)行調(diào)試和測(cè)試工作,

從接口依賴的角度來看

因?yàn)閎和C需要查數(shù)據(jù)庫,所以b和C的jar包暴露給A的api太多,沒辦法很好的控制。對(duì)于A項(xiàng)目的開發(fā)者來說,接口不清晰,幾乎所有的方法都可以調(diào)用,使得b和C的變化對(duì)上層A產(chǎn)生不可控的影響。

從系統(tǒng)性能來看

由于b和C都需要檢查數(shù)據(jù)庫,在A中以jar的形式,占用了A項(xiàng)目中所有服務(wù)器的內(nèi)存、cpu等資源,無法分布式部署。

方案二:模塊化分布式部署

那么應(yīng)該用什么方案,最好是分布式部署,通過網(wǎng)絡(luò)通信調(diào)用A和b,C

由此帶來的好處

1 A、b、C實(shí)現(xiàn)分布式部署

2 b、C提供清晰的接口供A調(diào)用,只要接口不變,b和C修改內(nèi)部業(yè)務(wù)邏輯,A不需要重新構(gòu)建和部署,實(shí)現(xiàn)大解耦,即, 修改部分系統(tǒng)功能php大型網(wǎng)站技術(shù)架構(gòu),其他模塊不受影響或受影響較小,影響范圍可控。

下一篇大型網(wǎng)站系統(tǒng)架構(gòu)演進(jìn)(二)分布式模塊間的通信

目錄大型網(wǎng)站系統(tǒng)架構(gòu)演進(jìn)

網(wǎng)頁名稱:如何從一個(gè)簡(jiǎn)單的網(wǎng)站架構(gòu)演進(jìn)發(fā)展成大型網(wǎng)站
網(wǎng)站路徑:http://muchs.cn/news39/295839.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站改版手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站排名用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)