软件架构演进
傳統(tǒng)架構(gòu)到分布式架構(gòu)詳解?
軟件架構(gòu)演進(jìn)
軟件架構(gòu)的發(fā)展經(jīng)歷了從單體架構(gòu)、垂直架構(gòu)、SOA架構(gòu)到微服務(wù)架構(gòu)的過程,博客里寫到了這四種架構(gòu)的特點以及優(yōu)缺點分析,個人學(xué)習(xí)之用,僅供參考!
1.1.1 單體架構(gòu)
特點:
1、所有的功能集成在一個項目工程中。
2、所有的功能打一個war包部署到服務(wù)器。
3、應(yīng)用與數(shù)據(jù)庫分開部署。
4、通過部署應(yīng)用集群和數(shù)據(jù)庫集群來提高系統(tǒng)的性能。
優(yōu)點:
1、項目架構(gòu)簡單,前期開發(fā)成本低,周期短,小型項目的首選。
缺點:
1、全部功能集成在一個工程中,對于大型項目不易開發(fā)、擴(kuò)展及維護(hù)。
2、系統(tǒng)性能擴(kuò)展只能通過擴(kuò)展集群結(jié)點,成本高、有瓶頸。
3、技術(shù)棧受限。
1.1.2 垂直架構(gòu)
特點
當(dāng)訪問量逐漸增大,單一應(yīng)用增加機(jī)器帶來的加速度越來越小,將應(yīng)用拆成互不相干的幾個應(yīng)用,以提升效率。
此時,用于加速前端頁面開發(fā)的 Web框架(MVC) 是關(guān)鍵。
優(yōu)點:
1、項目架構(gòu)簡單,前期開發(fā)成本低,周期短,小型項目的首選。
2、通過垂直拆分,原來的單體項目不至于無限擴(kuò)大。
3、不同的項目可采用不同的技術(shù)。
缺點:
1、全部功能集成在一個工程中,對于大型項目不易開發(fā)、擴(kuò)展及維護(hù)。
2、系統(tǒng)性能擴(kuò)展只能通過擴(kuò)展集群結(jié)點,成本高、有瓶頸。
1.1.3 SOA架構(gòu)
面向服務(wù)架構(gòu),如dubbo
優(yōu)點:
把模塊拆分,使用接口通信,降低模塊之間的耦合度
把項目拆分成若干個子項目,不同的團(tuán)隊負(fù)責(zé)不同的子項目
增加功能時只需要在增加一個子項目,調(diào)用其它系統(tǒng)的接口就可以
可以靈活的進(jìn)行分布式部署
缺點:
系統(tǒng)之間交互需要使用遠(yuǎn)程通信,接口開發(fā)增加工作量
1.1.4 微服務(wù)架構(gòu)
特點:
1、將系統(tǒng)服務(wù)層完全獨立出來,并將服務(wù)層抽取為一個一個的微服務(wù)。
2、微服務(wù)遵循單一原則。
3、微服務(wù)之間采用RESTful等輕量協(xié)議傳輸。
優(yōu)點:
1、服務(wù)拆分粒度更細(xì),有利于資源重復(fù)利用,提高開發(fā)效率。
2、可以更加精準(zhǔn)的制定每個服務(wù)的優(yōu)化方案,提高系統(tǒng)可維護(hù)性。
3、微服務(wù)架構(gòu)采用去中心化思想,服務(wù)之間采用RESTful等輕量協(xié)議通信,相比ESB更輕量。
4、適用于互聯(lián)網(wǎng)時代,產(chǎn)品迭代周期更短。
缺點:
1、微服務(wù)過多,服務(wù)治理成本高,不利于系統(tǒng)維護(hù)。
2、分布式系統(tǒng)開發(fā)的技術(shù)成本高(容錯、分布式事務(wù)等),對團(tuán)隊挑戰(zhàn)大。
要解決的技術(shù)難點:
1、這么多服務(wù),怎么找?
通過zookeeper做服務(wù)注冊信息的分布式管理。當(dāng)服務(wù)上線時,服務(wù)提供者將自己的服務(wù)信息注冊到ZK,并通過心跳維持長鏈接,實時更新鏈接信息。服務(wù)調(diào)用者通過ZK尋址,根據(jù)可定制算法,找到一個服務(wù),還可以將服務(wù)信息緩存在本地以提高性能。當(dāng)服務(wù)下線時,ZK會發(fā)通知給服務(wù)客戶端。?
???????????????
主流的注冊中心:zookeeper、Eureka、consul、etcd
2、服務(wù)之間如何通信?
因為所有的微服務(wù)都是獨立的Java進(jìn)程跑在獨立的虛擬機(jī)上,所以服務(wù)間的通信就是IPC(inter process communication),已經(jīng)有很多成熟的方案。比如基于HTTP的REST或者Thrift
3、這么多服務(wù),服務(wù)掛了怎么辦?
重試機(jī)制
熔斷機(jī)制
限流/降級
負(fù)載均衡
轉(zhuǎn)載于:https://www.cnblogs.com/linjiqin/p/10074004.html
總結(jié)
- 上一篇: lol卡兹克和锐雯哪个好
- 下一篇: odoo10 继承(扩展)、模块数据