更新時間:2022-06-13 來源:黑馬程序員 瀏覽量:
通常我們所使用的傳統(tǒng)單體應(yīng)用架構(gòu)都是模塊化的設(shè)計邏輯,程序在編寫完成后會被打包并部署為一個具體的應(yīng)用,而應(yīng)用的格式則依賴于相應(yīng)的應(yīng)用語言和框架。
例如,在網(wǎng)上商城系統(tǒng)中,Java Web工程通常會被打成WAR包部署在Web服務(wù)器上,而普通Java工程會以JAR包的形式包含在WAR包中。傳統(tǒng)單體應(yīng)用架構(gòu)模型(模擬電商系統(tǒng),包括用戶界面StoreFrontUI、用于檢查信用、維護(hù)庫存和發(fā)貨訂單的一些后端服務(wù)):
當(dāng)前開發(fā)工具的功能目標(biāo)是支持單片應(yīng)用程序的開發(fā),這對于一個傳統(tǒng)的單體應(yīng)用來說非常容易實現(xiàn)。
只需將應(yīng)用部署為簡單的WAR文件即可部署,并且只需要部署一個單體應(yīng)用即可。
可以通過在負(fù)載均衡器后運(yùn)行應(yīng)用程序的多個副本來伸縮應(yīng)用程序。伴隨著用戶人數(shù)的增加,一臺機(jī)器已經(jīng)滿足不了系統(tǒng)的負(fù)載,此時我們就會考慮系統(tǒng)的水平擴(kuò)展。
一個簡單的應(yīng)用會隨著時間的推移而逐漸變大,那么開發(fā)團(tuán)隊將會面臨很多問題,其中最主要問題就是這個應(yīng)用太復(fù)雜,以至于任何單個開發(fā)者都很難進(jìn)行二次開發(fā)或維護(hù),特別是那些剛加入團(tuán)隊的開發(fā)人員,應(yīng)用程序可能難以理解和修改。
雖然使用負(fù)載均衡的方式可以對項目中的服務(wù)容量進(jìn)行水平擴(kuò)展,這樣導(dǎo)致其他不需要擴(kuò)展的服務(wù)也進(jìn)行了相應(yīng)的擴(kuò)展,但這種擴(kuò)展是不需要的,因此這種方式會極大的浪費(fèi)資源。
當(dāng)一個應(yīng)用越犬時,啟動時間就會越長。開發(fā)和調(diào)試的過程中,如果有很大一部分時間都要在等待中渡過,那么必然會對開發(fā)效率有極大的影響。
傳統(tǒng)單體應(yīng)用架構(gòu)在運(yùn)行時的可靠性比較低,當(dāng)所有模塊都運(yùn)行在一個進(jìn)程中時,如果任何一個模塊中出現(xiàn)了一個Bug,可能會導(dǎo)致整個進(jìn)程崩潰,從而影響到整個應(yīng)用。
傳統(tǒng)單體應(yīng)用架構(gòu)一旦選定使用某些技術(shù),則后期的開發(fā)和擴(kuò)展將在這些技術(shù)的基礎(chǔ)上實現(xiàn)。如果需要更改某種技術(shù),則可能需要將整個應(yīng)用全部重新開發(fā),這種成本是非常大的。