微服務(wù)使用背景
隨著業(yè)務(wù)發(fā)展,,應(yīng)用規(guī)模擴(kuò)大,系統(tǒng)的一些公共服務(wù)就會(huì)抽取出來,,獨(dú)立開發(fā),,部署,,維護(hù),用來解決并發(fā),,擴(kuò)展,,維護(hù)的問題
單一(集中式)應(yīng)用架構(gòu)
一個(gè)歸檔包(例如war格式或者Jar格式)包含了應(yīng)用所有功能的應(yīng)用程序,我們通常稱之為單體應(yīng)用,。架構(gòu)單體應(yīng)用的方法論,,我們稱之為單體應(yīng)用架構(gòu)
最開始是這種傳統(tǒng)的應(yīng)用架構(gòu),針對(duì)公司業(yè)務(wù)來說,,體量沒那么大,,成本低,部署方便,。也不需要考慮高并發(fā)大流量可擴(kuò)展性什么的,,簡(jiǎn)單粗暴,解決業(yè)務(wù)需求就好,,活下去才能活的更好,。
優(yōu)點(diǎn)
項(xiàng)目架構(gòu)簡(jiǎn)單,前期開發(fā)成本低,,周期短,,小型項(xiàng)目的首選
缺點(diǎn)
- 模塊之間耦合度太高,其中一個(gè)功能升級(jí),其他的模塊都得一起升級(jí)部署。
- 開發(fā)困難,各個(gè)團(tuán)隊(duì)開發(fā)最后都要整合在一起.
- 系統(tǒng)擴(kuò)展性差
- 不能靈活進(jìn)行分布式部署
垂直應(yīng)用架構(gòu)
我理解垂直結(jié)構(gòu)指的就是分層,,就是將一個(gè)業(yè)務(wù)拆分為幾部分,,而不是一條線下來。
用戶訪問量越來越大,,機(jī)器承的響應(yīng)速度跟不上,,這個(gè)垂直應(yīng)用架構(gòu)就可以體現(xiàn)價(jià)值了。但是應(yīng)用之間耦合度高,,相互依賴嚴(yán)重
優(yōu)點(diǎn):
- 在一定程度上解耦
- 性能相比有提升,,擴(kuò)展性更快
缺點(diǎn)
- 隨著這種小的模塊越來越多,模塊之間的調(diào)用關(guān)系會(huì)越來越復(fù)雜,,不便于維護(hù)和管理
- 遠(yuǎn)程過程調(diào)用會(huì)使得代碼量會(huì)急劇增加
- 各個(gè)開發(fā)團(tuán)隊(duì)各自為戰(zhàn),,開發(fā)效率低下
- 測(cè)試工作量巨大,發(fā)布困難
微服務(wù)架構(gòu)
為了解決前面架構(gòu)存在的問題,,微服務(wù)應(yīng)用突出的特點(diǎn)在于服務(wù)治理,,每個(gè)服務(wù)獨(dú)立部署運(yùn)行。下面是執(zhí)行方案
- 核心業(yè)務(wù)抽取出來,,作為獨(dú)立的服務(wù)對(duì)外服務(wù)
- 服務(wù)模塊持續(xù)獨(dú)立部署,,減少版本交付周期
- 數(shù)據(jù)庫(kù)按服務(wù)分庫(kù)分表。大量使用緩存,提高訪問
- 系統(tǒng)間交互使用輕量級(jí)的 rest 協(xié)議,,摒棄 rpc 協(xié)議
上面的圖針對(duì)ngix的負(fù)載均衡以及數(shù)據(jù)庫(kù)的主從分庫(kù)就沒有體現(xiàn)了,,自行g(shù)et。
優(yōu)點(diǎn):
- 結(jié)構(gòu)清晰,,職責(zé)單一,,高內(nèi)聚
- 業(yè)務(wù)復(fù)用高
- 產(chǎn)品迭代周期更短
|