架構(gòu)的演進
單體架構(gòu)

所有的功能都集中在一個應(yīng)用中,統(tǒng)一開發(fā),統(tǒng)一部署,all in one。
優(yōu)點
成本低
周期短
維護方便
缺點
性能低,并發(fā)量低
單點容錯率低
隨著需求的迭代,項目越來越臃腫
無法對不同模塊功能進行針對性的優(yōu)化
無法對不同的模塊進行針對性的水平拓展,有的模塊并發(fā)量高,有的模塊并發(fā)量低,單體應(yīng)用只能整體進行擴展
垂直應(yīng)用架構(gòu)

把單體應(yīng)用拆分成互不相干幾個應(yīng)用,比如一個電商系統(tǒng)可以拆分成:電商系統(tǒng)、后臺管理系統(tǒng)等
優(yōu)點
可針對不同的系統(tǒng)功能進行針對性的優(yōu)化
方便水平拓展,并發(fā)量高的模塊多副本集群化部署
容錯,單一系統(tǒng)出錯不影響其他的系統(tǒng)
缺點
重復(fù)開發(fā)
服務(wù)之間交互復(fù)雜
分布式架構(gòu)

當(dāng)垂直應(yīng)用越來越多,重復(fù)的業(yè)務(wù)代碼將越來越多。分布式架構(gòu)就是把一個服務(wù)拆分成控制層服務(wù)和服務(wù)層服務(wù),控制層只需要處理和業(yè)務(wù)的交互,業(yè)務(wù)邏輯都是調(diào)用服務(wù)層來實現(xiàn)。
優(yōu)點
系統(tǒng)模塊重用度高
開發(fā)和發(fā)布速度快
系統(tǒng)擴展性高
缺點
分布式事務(wù)復(fù)雜
系統(tǒng)吞吐量變大,但是響應(yīng)時間變長
服務(wù)調(diào)度困難復(fù)雜
SOA架構(gòu)

當(dāng)拆分的服務(wù)越來越多,分布式架構(gòu)中各服務(wù)間的依賴關(guān)系越來越復(fù)雜,某一個服務(wù)的變更可能導(dǎo)致多個依賴服務(wù)的不可用。SOA架構(gòu)就是引入了一個ESB(企業(yè)服務(wù)總線),讓ESB統(tǒng)一做消息的轉(zhuǎn)換和路由工作,讓不同的服務(wù)互聯(lián)互通。
優(yōu)點
標準網(wǎng)絡(luò)協(xié)議
減少服務(wù)間的依賴
缺點
微服務(wù)架構(gòu)

微服務(wù)是SOA一個離經(jīng)叛道的繼任者。
微服務(wù)就是將以上架構(gòu)中的服務(wù)分隔成更小細粒度的服務(wù),服務(wù)組件化。
優(yōu)點
技術(shù)選型靈活,不同的服務(wù)可根據(jù)具體的需求技術(shù)選型
可擴展性高
缺點
部署成本高
服務(wù)間通信成本高,對網(wǎng)絡(luò)穩(wěn)定性要求高
SOA架構(gòu) VS 微服務(wù)架構(gòu)
| SOA | 微服務(wù) | |
|---|---|---|
| 服務(wù)粒度 | 粗粒度 | 細粒度 |
| 業(yè)務(wù)劃分方式 | 水平多層 | 縱向業(yè)務(wù)劃分 |
| 部署方式 | 整體部署 | 獨立部署 |
| 通信方式 | 使用重量級通信方式,ESB充當(dāng)服務(wù)之間通信的角色 | 使用輕量級通信方式,如HTTP RESTful |
| 服務(wù)交付 | 交付慢 | 交付快 |
| 應(yīng)用場景 | 龐大、復(fù)雜、異構(gòu)的企業(yè)級系統(tǒng) | 快速、輕量級、基于 Web 的互聯(lián)網(wǎng)系統(tǒng) |
概念
集群:很多一樣的服務(wù),干同樣的事。
分布式:不一樣的服務(wù),合起來干一件事。