1、單體架構(gòu)
在早期的web應(yīng)用程序中夷磕,絕大部分的項(xiàng)目都采用這種架構(gòu)帮匾,將所有的服務(wù)器端功能模塊打包成一個(gè)Monnolith(巨石型)應(yīng)用查描。
優(yōu)勢:容易搭建開發(fā)環(huán)境耗溜、方便測試和部署
缺陷:進(jìn)行局部改動就要重新部署组力,編譯時(shí)間過長。技術(shù)棧也不易于擴(kuò)展抖拴,只能不斷的在原有基礎(chǔ)上進(jìn)行局部優(yōu)化燎字。,比如說應(yīng)用的某部分場景需要處理高并發(fā)阿宅,使用Go會比較適合候衍,但是單體架構(gòu)并不支持多語言技術(shù)棧,只能繼續(xù)在原來的技術(shù)上尋求合適的了家夺。
2、垂直分層架構(gòu)
隨著訪問量逐漸增大伐弹,單體架構(gòu)只能通過增加機(jī)器的方式來提高性能拉馋,但是作用會越來越小,無論從成本還是難度上都會形成舉步維艱的境況惨好,性價(jià)比越來越低煌茴。這時(shí)候,往往會演化為垂直架構(gòu)日川。
垂直架構(gòu)就是彼此存在依賴關(guān)系的組件組成的架構(gòu)蔓腐,MVC就是一種常見的三層架構(gòu)模式:數(shù)據(jù)訪問層、服務(wù)層龄句、Web層
優(yōu)勢:架構(gòu)簡單回论,前期開發(fā)成本低散罕、周期短,通過拆分傀蓉,原來的單體項(xiàng)目不至于無限擴(kuò)大欧漱。
缺點(diǎn):同樣存在全部功能集成在一個(gè)工程中的問題,不易開發(fā)葬燎、擴(kuò)展以及維護(hù)误甚,只能通過擴(kuò)展機(jī)器,增加集群節(jié)點(diǎn)來實(shí)現(xiàn)性能提升谱净,成本可想而知窑邦。
3、SOA 面向服務(wù)架構(gòu)
當(dāng)垂直架構(gòu)拆分的應(yīng)用越來越多壕探,就會出現(xiàn)多個(gè)應(yīng)用都會依賴的業(yè)務(wù)邏輯組件冈钦, 這時(shí)候,就需要將這些可以通用的組件獨(dú)立出來浩蓉,并定義好服務(wù)間交互的接口派继,向外提供呢李,讓其他服務(wù)調(diào)用捻艳。所以SOA面向服務(wù)架構(gòu)就應(yīng)運(yùn)而生驾窟,它帶來了模塊化開發(fā)、分布式擴(kuò)展部署和服務(wù)接口定義等概念认轨。
優(yōu)勢:提高開發(fā)效率绅络,提高系統(tǒng)的可復(fù)用性和可維護(hù)性,采用ESB(服務(wù)總線)減少系統(tǒng)中的接口耦合嘁字,可借助現(xiàn)有的應(yīng)用來組合產(chǎn)生新服務(wù)恩急,提供給企業(yè)更好的靈活性來構(gòu)建應(yīng)用程序和業(yè)務(wù)流程
缺點(diǎn):可能也不能稱為缺點(diǎn),只是有它不適用的場景纪蜒。SOA比較適用于大型軟件服務(wù)企業(yè)對外提供服務(wù)的場景衷恭,但是對一般業(yè)務(wù)場景并不適用,因?yàn)樗囊惶锥x纯续、注冊和調(diào)用流程都需要較為繁瑣的編碼或者配置實(shí)現(xiàn)随珠,并且業(yè)務(wù)總線也容易導(dǎo)致系統(tǒng)的單點(diǎn)風(fēng)險(xiǎn)并拖累整體性能。
4猬错、微服務(wù)架構(gòu)
這種架構(gòu)窗看,就比較適合中小型企業(yè),這些企業(yè)沒有能力也無需構(gòu)建SOA所依賴的ESB倦炒。它的理念显沈,就是業(yè)務(wù)系統(tǒng)徹底地組件化和服務(wù)化,形成多個(gè)可以獨(dú)立開發(fā)逢唤、獨(dú)立部署和獨(dú)立維護(hù)的服務(wù)或者應(yīng)用的集合拉讯,以應(yīng)對更快的需求變成和更短的開發(fā)迭代周期涤浇。
微服務(wù)提倡將大型復(fù)雜軟件應(yīng)用拆分成多個(gè)微服務(wù)。每個(gè)微服務(wù)可單獨(dú)部署遂唧,各個(gè)服務(wù)之間是松耦合的芙代。每個(gè)服務(wù)僅僅關(guān)注完成單一職責(zé)。一般情況下盖彭,每個(gè)職責(zé)就代表一個(gè)小的高內(nèi)聚的業(yè)務(wù)能力纹烹。
微服務(wù)不僅僅代表著技術(shù)架構(gòu)的變化,它還需要每一個(gè)開發(fā)團(tuán)隊(duì)形成適合微服務(wù)開發(fā)的組織架構(gòu)和溝通方式召边。這也是微服務(wù)架構(gòu)可以減少不必要的溝通铺呵,提升溝通效率、開發(fā)效率的關(guān)鍵原因
微服務(wù)繼承了SOA的很多優(yōu)點(diǎn)和理念隧熙,片挂,但是不能簡單的說一種架構(gòu)比另一種架構(gòu)更好。主要是區(qū)別在應(yīng)用場景贞盯,微服務(wù)更適合于較小和良好的分割式Web業(yè)務(wù)系統(tǒng)音念。微服務(wù)專注于以自治的方式來產(chǎn)生價(jià)值。SOA嘗試將應(yīng)用集成躏敢,微服務(wù)關(guān)注的則是完全分離闷愤,著重于分散管理、代碼復(fù)用和自動化執(zhí)行件余。