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

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

前言

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

簡單的網(wǎng)站

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

前端jsp+css+js

后端java ssh

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

數(shù)據(jù)庫

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

部署計劃是:

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

架構(gòu)圖如下:

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

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

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

這樣網(wǎng)站就可以運行一段時間了

解耦開發(fā)

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

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

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

解決方案 1(模塊化)

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

模塊化的缺點

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

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

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

如下圖:

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

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

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

從接口依賴的角度來看

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

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

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

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

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

由此帶來的好處

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

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

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

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

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

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

廣告

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

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