index:
[toc]
- 傳統(tǒng)垂直應(yīng)用架構(gòu)
- RPC架構(gòu)
- SOA服務(wù)化架構(gòu)
- 微服務(wù)架構(gòu)
傳統(tǒng)垂直應(yīng)用架構(gòu)
MVC垂直架構(gòu)
分三層:
- 前端視圖展示層(view):不執(zhí)行實(shí)際的業(yè)務(wù)邏輯,也不改變數(shù)據(jù)模式。
- 中間為調(diào)度控制層(control):前端Web請(qǐng)求的分發(fā),調(diào)度后臺(tái)的業(yè)務(wù)邏輯執(zhí)行。
- 第三層為應(yīng)用模型層(Model):應(yīng)用程序的主體部分,代表業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)執(zhí)行邏輯。
垂直應(yīng)用架構(gòu)弊端
- 復(fù)雜應(yīng)用的開發(fā)維護(hù)成本變高,部署效率逐漸降低。
- 團(tuán)隊(duì)協(xié)作效率差,部分公共功能重復(fù)開發(fā),代碼重復(fù)率高。
- 系統(tǒng)可靠性變差。單點(diǎn)故障對(duì)系統(tǒng)影響較大。
- 新功能上線周期長(zhǎng)。
RPC架構(gòu)
RPC(Remote Procedure Call)是一種進(jìn)程間通信方式,允許像本地調(diào)用一樣調(diào)用遠(yuǎn)程服務(wù)。
RPC框架的目標(biāo)就是讓遠(yuǎn)程調(diào)用更加簡(jiǎn)單、透明,屏蔽底層的傳輸方式、序列化方式等通信細(xì)節(jié)。
RPC框架實(shí)現(xiàn)的幾個(gè)核心技術(shù)點(diǎn):
1. 遠(yuǎn)程服務(wù)提供者需要以某種形式提供服務(wù)調(diào)用相關(guān)信息,包括但不限于服務(wù)接口定義、數(shù)據(jù)結(jié)構(gòu)等。
2. 遠(yuǎn)程代理對(duì)象:服務(wù)調(diào)用者調(diào)用的服務(wù)實(shí)際是遠(yuǎn)程服務(wù)的本地代理。
3. 通信:RPC框架與具體的協(xié)議無關(guān)。
4. 序列化。
RPC框架面臨的挑戰(zhàn):
1. 當(dāng)服務(wù)越來越多后,需要一個(gè)服務(wù)注冊(cè)中心,動(dòng)態(tài)的注冊(cè)和發(fā)現(xiàn)服務(wù),使服務(wù)的位置透明。
2. 服務(wù)依賴關(guān)系錯(cuò)綜復(fù)雜,需要分布式消息跟蹤系統(tǒng)可視化展示服務(wù)調(diào)用鏈,用于依賴分析、業(yè)務(wù)調(diào)用路徑梳理等。
3. 服務(wù)容量問題:需要上線多少服務(wù)可以滿足要求。
4. 服務(wù)生命周期管理等服務(wù)治理有關(guān)問題。
SOA服務(wù)化架構(gòu)
SOA是一種粗粒度、松耦合的以服務(wù)為中心的架構(gòu),接口之間通過定義明確的協(xié)議和接口進(jìn)行通信。
SOA面向服務(wù)設(shè)計(jì)原則:
1. 服務(wù)可復(fù)用。
2. 服務(wù)共享一個(gè)標(biāo)準(zhǔn)契約:為了與服務(wù)提供者交互,消費(fèi)者需要導(dǎo)入服務(wù)提供者的服務(wù)契約。
3. 服務(wù)是松耦合的:服務(wù)被設(shè)計(jì)為功能相對(duì)獨(dú)立,盡量不依賴其他服務(wù)。
4. 服務(wù)是底層邏輯的抽象。
5. 服務(wù)是可組合、可編排的:多個(gè)服務(wù)可能被編排組合成一個(gè)新服務(wù)。
6. 服務(wù)是自治的:邏輯由服務(wù)所控制,并有一個(gè)清晰的邊界,不依賴于其他服務(wù)。
7. 服務(wù)是無狀態(tài)的:服務(wù)應(yīng)盡可能設(shè)計(jì)為無狀態(tài)。
8. 服務(wù)是可被自動(dòng)發(fā)現(xiàn)。服務(wù)上線后,允許被其他消費(fèi)者自動(dòng)發(fā)現(xiàn);下線后,允許消費(fèi)者接收下線通知。
SOA服務(wù)治理:
1. 服務(wù)定義。
2. 服務(wù)生命周期管理。
3. 服務(wù)版本治理。
4. 服務(wù)注冊(cè)中心。
5. 服務(wù)監(jiān)控。
6. 運(yùn)行期服務(wù)質(zhì)量保障。
7. 快速的故障定界定位手段。
8. 服務(wù)安全。
微服務(wù)架構(gòu)
微服務(wù)架構(gòu)特征:
1. 原子服務(wù),專注于做一件事。
2. 高密度部署。
3. 敏捷交付。
4. 微治理。
微服務(wù)架構(gòu)與SOA對(duì)比:
1. 服務(wù)拆分粒度:SOA主要解決異構(gòu)應(yīng)用的服務(wù)化;微服務(wù)強(qiáng)調(diào)服務(wù)拆分盡可能小,最好是獨(dú)立的原子服務(wù)。但拆分粒度大小沒有具體理論說明。
2.\ 服務(wù)規(guī)模:微服務(wù)拆分粒度較小,服務(wù)數(shù)量會(huì)急劇增加,對(duì)服務(wù)治理和運(yùn)維帶來新的挑戰(zhàn)。
3.\ 架構(gòu)差異:SOA通常是用ESB實(shí)現(xiàn)服務(wù)間通信,而微服務(wù)若使用ESB的話,ESB會(huì)是架構(gòu)的系統(tǒng)瓶頸,所以一般實(shí)現(xiàn)P2P的虛擬總線替換。
4. 服務(wù)治理:微服務(wù)服務(wù)治理難度更大。
5. 敏捷交付:微服務(wù)由于服務(wù)粒度較小,單個(gè)服務(wù)可以由幾個(gè)人的小團(tuán)隊(duì)單獨(dú)設(shè)計(jì)、開發(fā)、測(cè)試、部署、維護(hù)、下線,運(yùn)維整個(gè)生命周期支撐,實(shí)現(xiàn)真正的DevOps。