软件架构的演进
軟件架構(gòu)的發(fā)展經(jīng)歷了從單體架構(gòu)、垂直架構(gòu)、SOA架構(gòu)到微服務(wù)架構(gòu)的過程。
1.單體架構(gòu)
單體架構(gòu) Web應(yīng)用程序發(fā)展的早期,大部分web工程師將所有的功能模塊打包到一起并放在一個(gè)web容器中運(yùn)行,所有功能 模塊使用同一個(gè)數(shù)據(jù)庫。 下圖是一個(gè)單體架構(gòu)的電商系統(tǒng):
特點(diǎn):
1、所有的功能集成在一個(gè)項(xiàng)目工程中。
2、所有的功能打在一個(gè)war包部署到服務(wù)器。
3、通過部署應(yīng)用集群和數(shù)據(jù)庫集群來提高系統(tǒng)的性能。
優(yōu)點(diǎn):
1、項(xiàng)目架構(gòu)簡單,前期開發(fā)成本低,周期短,小型項(xiàng)目的首選。
2、開發(fā)效率高,模塊之間交互采用本地方法調(diào)用。
3、容易部署,運(yùn)維成本小,直接打包為一個(gè)完整的包,拷貝到web容器的某個(gè)目錄下即可運(yùn)行。
4、容易測試:IDE都是為開發(fā)單個(gè)應(yīng)用設(shè)計(jì)的、容易測試——在本地就可以啟動(dòng)完整的系統(tǒng)。
缺點(diǎn):
1、全部功能集成在一個(gè)工程中,對(duì)于大型項(xiàng)目不易開發(fā)、擴(kuò)展及維護(hù)。
2、版本迭代速度逐漸變慢,修改一個(gè)地方就要將整個(gè)應(yīng)用全部編譯、部署、啟動(dòng),開發(fā)及測試周期過長。
3、無法按需伸縮,通過集群的方式來實(shí)現(xiàn)水平擴(kuò)展,無法針對(duì)某業(yè)務(wù)按需伸縮。
2.分布式架構(gòu)
分布式架構(gòu) ,針對(duì)單體架構(gòu)的不足,為了適應(yīng)大型項(xiàng)目的開發(fā)需求,許多公司將一個(gè)單體系統(tǒng)按業(yè)務(wù)垂直拆分為若干系統(tǒng),系統(tǒng)之間通過網(wǎng)絡(luò)交互來完成用戶的業(yè)務(wù)處理,每個(gè)系統(tǒng)可分布式部署,這種架構(gòu)稱為分布式架構(gòu)。
特點(diǎn):
1、按業(yè)務(wù)垂直拆分成一個(gè)一個(gè)的單體系統(tǒng),此架構(gòu)也稱為垂直架構(gòu)。
2、系統(tǒng)與系統(tǒng)之間的存在數(shù)據(jù)冗余,耦合性較大,如上圖中三個(gè)項(xiàng)目都存在客戶信息。
3、系統(tǒng)之間的接口多為實(shí)現(xiàn)數(shù)據(jù)同步,如上圖中三個(gè)項(xiàng)目要同步客戶信息。
優(yōu)點(diǎn):
1、通過垂直拆分,每個(gè)子系統(tǒng)變成小型系統(tǒng),功能簡單,前期開發(fā)成本低,周期短。
2、每個(gè)子系統(tǒng)可按需伸縮。
3、每個(gè)子系統(tǒng)可采用不同的技術(shù)。
缺點(diǎn):
1、子系統(tǒng)之間存在數(shù)據(jù)冗余、功能冗余,耦合性高。
2、按需伸縮粒度不夠,對(duì)同一個(gè)子系統(tǒng)中的不同的業(yè)務(wù)無法實(shí)現(xiàn),比如訂單管理和用戶管理。
3.SOA架構(gòu)
SOA是一種面向服務(wù)的架構(gòu),基于分布式架構(gòu),它將不同業(yè)務(wù)功能按服務(wù)進(jìn)行拆分,并通過這些服務(wù)之間定義良好 的接口和協(xié)議聯(lián)系起來。
特點(diǎn):
1、基于SOA的架構(gòu)思想,將重復(fù)公用的功能抽取為組件,以服務(wù)的方式向各各系統(tǒng)提供服務(wù)。
2、各各系統(tǒng)與服務(wù)之間采用webservice、rpc等方式進(jìn)行通信。
3、ESB企業(yè)服務(wù)總線作為系統(tǒng)與服務(wù)之間通信的橋梁。
優(yōu) 點(diǎn):
1、將重復(fù)的功能抽取為服務(wù),提高開發(fā)效率,提高系統(tǒng)的可重用性、可維護(hù)性。
2、可以針對(duì)不同服務(wù)的特 點(diǎn)按需伸縮。
3、采用ESB減少系統(tǒng)中的接口耦合。
缺點(diǎn):
1、系統(tǒng)與服務(wù)的界限模糊,會(huì)導(dǎo)致抽取的服務(wù)的粒度 過大,系統(tǒng)與服務(wù)之間耦合性高。
2、雖然使用了ESB,但是服務(wù)的接口協(xié)議不固定,種類繁多,不利于系統(tǒng)維 護(hù)。
4.微服務(wù)架構(gòu)
微服務(wù)架構(gòu)基于SOA架構(gòu)的思想,為了滿足移動(dòng)互聯(lián)網(wǎng)對(duì)大型項(xiàng)目及多客戶端的需求,對(duì)服務(wù)層進(jìn)行細(xì)粒度的拆分,所拆分的 每個(gè)服務(wù)只完成某個(gè)特定的業(yè)務(wù)功能,比如訂單服務(wù)只實(shí)現(xiàn)訂單相關(guān)的業(yè)務(wù),用戶服務(wù)實(shí)現(xiàn)用戶管理相關(guān)的業(yè)務(wù)等 等,服務(wù)的粒度很小,所以稱為微服務(wù)架構(gòu)。
特點(diǎn):
1、服務(wù)層按業(yè)務(wù)拆分為一個(gè)一個(gè)的微服務(wù)。
2、微服務(wù)的職責(zé)單一。
3、微服務(wù)之間采用RESTful、RPC等輕量級(jí)協(xié)議傳輸。
4、有利于采用前后端分離架構(gòu)。
優(yōu)點(diǎn):
1、服務(wù)拆分粒度更細(xì),有利于資源重復(fù)利用,提高開發(fā)效率。
2、可以更加精準(zhǔn)的制定每個(gè)服務(wù)的優(yōu)化方案,按需伸縮。
3、適用于互聯(lián)網(wǎng)時(shí)代,產(chǎn)品迭代周期更短。
缺點(diǎn):
1、開發(fā)的復(fù)雜性增加,因?yàn)橐粋€(gè)業(yè)務(wù)流程需要多個(gè)微服務(wù)通過網(wǎng)絡(luò)交互來完成。
2、微服務(wù)過多,服務(wù)治理成本高,不利于系統(tǒng)維護(hù)。
總結(jié)
- 上一篇: java处理日期
- 下一篇: @Configurattion注解的作用