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

Java中可以使用哪些系統(tǒng)架構(gòu)?怎樣選擇?

更新時(shí)間:2023-07-06 來源:黑馬程序員 瀏覽量:

架構(gòu),又名軟件架構(gòu),是有關(guān)軟件整體結(jié)構(gòu)與組件的抽象描述,用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì)。

Java企業(yè)級(jí)的應(yīng)用根據(jù)業(yè)務(wù)的復(fù)雜程度,通常使用的系統(tǒng)架構(gòu)有應(yīng)用架構(gòu)、垂直應(yīng)用架構(gòu)、面向服務(wù)的架構(gòu)(Service-Oriented Architecture,SOA)、微服務(wù)架構(gòu)等。

項(xiàng)目架構(gòu)的選擇在項(xiàng)目準(zhǔn)備過程中占據(jù)著重要的位置,除此之外技術(shù)架構(gòu)的選擇也是項(xiàng)目準(zhǔn)備過程中必不可少的一個(gè)環(huán)節(jié),接下來將針對(duì)項(xiàng)目架構(gòu)和技術(shù)架構(gòu)的選擇進(jìn)行詳細(xì)講解。

單體應(yīng)用架構(gòu)

單體應(yīng)用架構(gòu)是把所有業(yè)務(wù)場景的表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層放在一個(gè)工程中,經(jīng)過編譯打包,部署在一臺(tái)服務(wù)器上。

1688624746400_單體架構(gòu).png

單體應(yīng)用架構(gòu)開發(fā)的進(jìn)銷存系統(tǒng)

優(yōu)點(diǎn):項(xiàng)目架構(gòu)簡單,技術(shù)結(jié)構(gòu)單六,前期用人成本低,適合小型系統(tǒng)的開發(fā)。

缺點(diǎn):隨著業(yè)務(wù)復(fù)雜度的增加,功能越來越多,代碼量越來越大,會(huì)導(dǎo)致代碼可讀性、可維護(hù)性和可擴(kuò)展性下降。由于系統(tǒng)過大且關(guān)聯(lián)較多,任何一個(gè)ug都有可能導(dǎo)致整個(gè)系統(tǒng)宕機(jī)。

垂直應(yīng)用架構(gòu)

垂直應(yīng)用架構(gòu)將單體應(yīng)用拆分成若干個(gè)獨(dú)立的小應(yīng)用,每個(gè)小應(yīng)用獨(dú)立的部署到不同的服務(wù)器上,以提升效率。

 

1688624887248_進(jìn)銷存系統(tǒng).png

垂直應(yīng)用架構(gòu)開發(fā)的進(jìn)銷存系統(tǒng)

優(yōu)點(diǎn):通過垂直拆分實(shí)現(xiàn)流量分擔(dān),減輕服務(wù)器壓力;可以針對(duì)不同的應(yīng)用進(jìn)行優(yōu)化,方便水平擴(kuò)展,容錯(cuò)率提高。

缺點(diǎn):當(dāng)垂直應(yīng)用越多,應(yīng)用之間可能發(fā)生相互調(diào)用,不同應(yīng)用之間可能出現(xiàn)數(shù)據(jù)、代碼、功能冗余。

SOA

SOA是面向服務(wù)的架構(gòu),它將應(yīng)用程序的不同功能單元(簡稱服務(wù))進(jìn)行拆分,并通過這些服務(wù)之間定義的接口和協(xié)議將其聯(lián)系起來。

 

1688625413535_soa.png

SOA開發(fā)的進(jìn)銷存系統(tǒng)

優(yōu)點(diǎn):將公共的功能抽取為服務(wù),提高開發(fā)效率;各個(gè)服務(wù)之間耦合度低,可讀性和可維護(hù)性比較好。

缺點(diǎn):抽取服務(wù)的粒度較大,服務(wù)提供方與調(diào)用方接口耦合度較高。

微服務(wù)架構(gòu)

微服務(wù)架構(gòu)是SOA架構(gòu)的升級(jí),每一個(gè)服務(wù)就是一個(gè)獨(dú)立的部署單元,服務(wù)之間的耦合性很低。

 

1688625616479_微服務(wù).png

微服務(wù)架構(gòu)開發(fā)的進(jìn)銷存系統(tǒng)

優(yōu)點(diǎn):開發(fā)模式更加靈活;微服務(wù)的.獨(dú)立打包、部署和升級(jí),使小團(tuán)隊(duì)的交付周期將縮短,運(yùn)維成本下降。

缺點(diǎn):對(duì)技術(shù)要求較高;微服務(wù)過多會(huì)造成服務(wù)管理成本提高,不利于系統(tǒng)維護(hù),服務(wù)拆分粒度過細(xì)也會(huì)導(dǎo)致、系統(tǒng)變得凌亂和笨重。

在開發(fā)時(shí)通常會(huì)根據(jù)不同的需求將項(xiàng)目拆分為多個(gè)層次處理,開發(fā)者可以根據(jù)不同的需求由其相對(duì)應(yīng)的技術(shù)棧提供解決方案。


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