服務(wù)化應(yīng)用架構(gòu)演進(jìn)

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)

分三層:

  1. 前端視圖展示層(view):不執(zhí)行實(shí)際的業(yè)務(wù)邏輯,也不改變數(shù)據(jù)模式。
  2. 中間為調(diào)度控制層(control):前端Web請(qǐng)求的分發(fā),調(diào)度后臺(tái)的業(yè)務(wù)邏輯執(zhí)行。
  3. 第三層為應(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。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容