- 微服務(wù)架構(gòu)原理與開(kāi)發(fā)實(shí)戰(zhàn)
- 張剛編著
- 691字
- 2024-01-22 18:20:43
1.3.1 單體式架構(gòu)概述
單體式架構(gòu)又稱為單應(yīng)用架構(gòu)或單體架構(gòu),也就是系統(tǒng)所有的功能,前端頁(yè)面也好,后端服務(wù)也好,所有的功能模塊都在同一個(gè)工程上開(kāi)發(fā),最終將所有模塊、所有功能都打包在一起,放在一個(gè)進(jìn)程上運(yùn)行。例如,很多企業(yè)的Java Web項(xiàng)目就是將應(yīng)用程序打成WAR包,然后部署在一個(gè)Web容器中運(yùn)行。
總結(jié)起來(lái)就是8個(gè)字:一包在手,天下我有。現(xiàn)在回想一下在1.2.1節(jié)中SOA的例子,如果換單體式架構(gòu)又會(huì)是什么樣的呢?在單應(yīng)用模式下,它的架構(gòu)如圖1.5所示。

圖1.5 單體式架構(gòu)
由圖1.5可見(jiàn),所有的功能都在一個(gè)WAR包內(nèi),部署在Web容器(通常是TOMCAT)中運(yùn)行,在資源允許的情況下,可以任意地水平擴(kuò)展多個(gè)Web容器,客戶端(通常是瀏覽器)通過(guò)代理服務(wù)器(通常是Nginx)定義一些負(fù)載策略,反向代理集群的節(jié)點(diǎn),達(dá)到負(fù)載均衡的目的。
這樣的模式問(wèn)題是顯而易見(jiàn)的,系統(tǒng)中沒(méi)有明確的邊界和職責(zé)劃分,所有代碼都雜糅在一起,隨著系統(tǒng)越做越大,代碼量越來(lái)越多,重復(fù)的代碼隨處可見(jiàn),模塊之間調(diào)用邏輯雜亂無(wú)章,代碼質(zhì)量越來(lái)越難以管理,最終導(dǎo)致無(wú)論任何人也無(wú)法在這套系統(tǒng)上添加任何功能,這套系統(tǒng)讓人聞風(fēng)色變,都不愿意在其中修改任何邏輯。
單體式架構(gòu)模式是筆者接觸最早的模式,雖然現(xiàn)在看來(lái),其設(shè)計(jì)有些不可思議,但不得不承認(rèn),單體式架構(gòu)是在微服務(wù)之前最流行、運(yùn)用最廣泛的模式。直到今天,仍然有很多公司和項(xiàng)目在采用這種模式。
然而,任何軟件系統(tǒng)都沒(méi)有經(jīng)久不衰的解決方案,也沒(méi)有一開(kāi)始就很完美的設(shè)計(jì),就像人們打游戲,沒(méi)有萬(wàn)能的裝備組合,也沒(méi)有一開(kāi)始就很完美的打法,都是隨著經(jīng)驗(yàn)的不斷積累,隨著對(duì)游戲理解的不斷加深,才發(fā)明了各種裝備組合,各種團(tuán)戰(zhàn)戰(zhàn)術(shù)。軟件設(shè)計(jì)的發(fā)展和創(chuàng)造往往也是同樣的思路。
- Java Web程序開(kāi)發(fā)范例寶典
- 物聯(lián)網(wǎng)射頻識(shí)別(RFID)技術(shù)與應(yīng)用
- 大前端三劍客:Vue+React+Flutter
- DevOps原理與實(shí)踐
- 敏捷軟件開(kāi)發(fā)(珍藏版)
- 網(wǎng)絡(luò)空間測(cè)繪技術(shù)與實(shí)踐:讓互聯(lián)網(wǎng)情報(bào)服務(wù)于網(wǎng)絡(luò)安全
- DevOps:企業(yè)級(jí)CI/CD實(shí)戰(zhàn)
- ODPS權(quán)威指南 阿里大數(shù)據(jù)平臺(tái)應(yīng)用開(kāi)發(fā)實(shí)踐
- 鑄魂:軟件定義制造
- 解決方案架構(gòu)師修煉之道(原書(shū)第2版)
- Scrum敏捷軟件開(kāi)發(fā)
- C語(yǔ)言點(diǎn)滴
- 大話軟件工程:需求分析與軟件設(shè)計(jì)
- 持續(xù)交付2.0:業(yè)務(wù)引領(lǐng)的DevOps精要(增訂本)
- TensorFlow+Android經(jīng)典模型從理論到實(shí)戰(zhàn)(微課視頻版)