首頁(yè)技術(shù)文章正文

傳統(tǒng)單體架構(gòu)存在哪些問(wèn)題?

更新時(shí)間:2022-06-13 來(lái)源:黑馬程序員 瀏覽量:

傳統(tǒng)單體應(yīng)用架構(gòu)模型

通常我們所使用的傳統(tǒng)單體應(yīng)用架構(gòu)都是模塊化的設(shè)計(jì)邏輯,程序在編寫完成后會(huì)被打包并部署為一個(gè)具體的應(yīng)用,而應(yīng)用的格式則依賴于相應(yīng)的應(yīng)用語(yǔ)言和框架。

例如,在網(wǎng)上商城系統(tǒng)中,Java Web工程通常會(huì)被打成WAR包部署在Web服務(wù)器上,而普通Java工程會(huì)以JAR包的形式包含在WAR包中。

傳統(tǒng)單體應(yīng)用架構(gòu)模型(模擬電商系統(tǒng),包括用戶界面StoreFrontUI、用于檢查信用、維護(hù)庫(kù)存和發(fā)貨訂單的一些后端服務(wù)):

傳統(tǒng)單體架構(gòu)模型

傳統(tǒng)單體應(yīng)用架構(gòu)主要優(yōu)點(diǎn):

1、易于開(kāi)發(fā)

當(dāng)前開(kāi)發(fā)工具的功能目標(biāo)是支持單片應(yīng)用程序的開(kāi)發(fā),這對(duì)于一個(gè)傳統(tǒng)的單體應(yīng)用來(lái)說(shuō)非常容易實(shí)現(xiàn)。

2、部署簡(jiǎn)單

只需將應(yīng)用部署為簡(jiǎn)單的WAR文件即可部署,并且只需要部署一個(gè)單體應(yīng)用即可。

3、易于伸縮

可以通過(guò)在負(fù)載均衡器后運(yùn)行應(yīng)用程序的多個(gè)副本來(lái)伸縮應(yīng)用程序。伴隨著用戶人數(shù)的增加,一臺(tái)機(jī)器已經(jīng)滿足不了系統(tǒng)的負(fù)載,此時(shí)我們就會(huì)考慮系統(tǒng)的水平擴(kuò)展。

傳統(tǒng)單體應(yīng)用架構(gòu)主要缺點(diǎn):

1、應(yīng)用復(fù)雜度增加,更新、維護(hù)困難

一個(gè)簡(jiǎn)單的應(yīng)用會(huì)隨著時(shí)間的推移而逐漸變大,那么開(kāi)發(fā)團(tuán)隊(duì)將會(huì)面臨很多問(wèn)題,其中最主要問(wèn)題就是這個(gè)應(yīng)用太復(fù)雜,以至于任何單個(gè)開(kāi)發(fā)者都很難進(jìn)行二次開(kāi)發(fā)或維護(hù),特別是那些剛加入團(tuán)隊(duì)的開(kāi)發(fā)人員,應(yīng)用程序可能難以理解和修改。

2、易造成系統(tǒng)資源浪費(fèi)

雖然使用負(fù)載均衡的方式可以對(duì)項(xiàng)目中的服務(wù)容量進(jìn)行水平擴(kuò)展,這樣導(dǎo)致其他不需要擴(kuò)展的服務(wù)也進(jìn)行了相應(yīng)的擴(kuò)展,但這種擴(kuò)展是不需要的,因此這種方式會(huì)極大的浪費(fèi)資源。

3、影響開(kāi)發(fā)效率

當(dāng)一個(gè)應(yīng)用越犬時(shí),啟動(dòng)時(shí)間就會(huì)越長(zhǎng)。開(kāi)發(fā)和調(diào)試的過(guò)程中,如果有很大一部分時(shí)間都要在等待中渡過(guò),那么必然會(huì)對(duì)開(kāi)發(fā)效率有極大的影響。

4、應(yīng)用可靠性低

傳統(tǒng)單體應(yīng)用架構(gòu)在運(yùn)行時(shí)的可靠性比較低,當(dāng)所有模塊都運(yùn)行在一個(gè)進(jìn)程中時(shí),如果任何一個(gè)模塊中出現(xiàn)了一個(gè)Bug,可能會(huì)導(dǎo)致整個(gè)進(jìn)程崩潰,從而影響到整個(gè)應(yīng)用。

5、不利于技術(shù)的更新

傳統(tǒng)單體應(yīng)用架構(gòu)一旦選定使用某些技術(shù),則后期的開(kāi)發(fā)和擴(kuò)展將在這些技術(shù)的基礎(chǔ)上實(shí)現(xiàn)。如果需要更改某種技術(shù),則可能需要將整個(gè)應(yīng)用全部重新開(kāi)發(fā),這種成本是非常大的。


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!