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