分布式服務(wù)框架--第一章:應(yīng)用架構(gòu)演進(jìn)

第一章:應(yīng)用架構(gòu)演進(jìn)


image.png

一.垂直應(yīng)用(典型:MVC架構(gòu))
1.基本架構(gòu)


image.png

1)view:前段視圖展示層。
2)control:中間為調(diào)度控制層,用于web請(qǐng)求轉(zhuǎn)發(fā),調(diào)度后臺(tái)業(yè)務(wù)邏輯執(zhí)行。Eg:structs

3)model:應(yīng)用模型層,代表:業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)執(zhí)行邏輯。
備注:
標(biāo)準(zhǔn)MVC不包含數(shù)據(jù)訪問(wèn)層。原生數(shù)據(jù)連接庫(kù)JDBC訪問(wèn)比較麻煩,通過(guò)ORM(Object Relation Mapping:對(duì)象關(guān)系映射)框架,比如Hibernate、Mybatis等框架進(jìn)行封裝。
2.特點(diǎn)
1)部署方式:基于MVC架構(gòu)等應(yīng)用代碼會(huì):統(tǒng)一打包成war包,部署到tomcat等服務(wù)器中。不同應(yīng)用之間通過(guò):本地API進(jìn)行調(diào)用,基本不存在跨進(jìn)程通信。
2)業(yè)務(wù)組網(wǎng):
1??:小規(guī)模:熱雙機(jī)部署,服務(wù)端監(jiān)聽(tīng)浮動(dòng)IP,通過(guò)Watch Dog檢測(cè)應(yīng)用進(jìn)程。判斷應(yīng)用進(jìn)程宕機(jī)或僵死之后,將應(yīng)用切換到備機(jī)中,然后嘗試重新拉起主機(jī)。
2??:高并發(fā),大流量:集群部署;組網(wǎng)方案:前段通過(guò)F5等負(fù)載均衡器做七層負(fù)載均衡,后段做對(duì)等集群部署。


image.png

3.缺點(diǎn):
1)復(fù)雜應(yīng)用開(kāi)發(fā)維護(hù)成本高,部署效率逐漸降低;
2)團(tuán)隊(duì)協(xié)作效率差,部分公共功能重復(fù)開(kāi)發(fā);
3)系統(tǒng)可靠性變差;
4)維護(hù)和定制困難;
5)上線周期長(zhǎng)

當(dāng)垂直應(yīng)用越來(lái)越多,應(yīng)用之間交互不可避免。解決方法:
1)將核心業(yè)務(wù)抽取出來(lái),作為獨(dú)立當(dāng)服務(wù),逐漸形成穩(wěn)定當(dāng)服務(wù)中心;
2)將公共能力API抽取出來(lái),作為公共當(dāng)服務(wù),供其他服務(wù)共享和重用;
3)應(yīng)用拆分之后按模塊獨(dú)立部署,接口調(diào)用由本地API演進(jìn)到RPC調(diào)用;
RPC框架應(yīng)運(yùn)而生

二.RPC架構(gòu)(典型:GRPC等)
RPC:Remote Process Call,遠(yuǎn)程過(guò)程調(diào)用,是一種進(jìn)程間通信方式,允許像調(diào)用本地服務(wù)一樣調(diào)用遠(yuǎn)程服務(wù)。
1.原理
RPC框架目標(biāo):讓遠(yuǎn)程過(guò)程(服務(wù))調(diào)用更加簡(jiǎn)單、透明。
做法:RPC框架負(fù)責(zé)屏蔽底層的傳輸方式(TCP OR UDP),序列化方式(XML/JSON/二進(jìn)制),通信細(xì)節(jié)。


image.png

一般有三種角色:
1)服務(wù)提供者:運(yùn)行在服務(wù)端,負(fù)責(zé)提供服務(wù)接口定義和服務(wù)實(shí)現(xiàn);
2)服務(wù)發(fā)布者:運(yùn)行在服務(wù)端,負(fù)責(zé)將本地服務(wù)發(fā)布成遠(yuǎn)程服務(wù),供其他消費(fèi)者調(diào)用;
3)本地服務(wù)代理:運(yùn)行在客戶端,通過(guò)代理調(diào)用遠(yuǎn)程服務(wù)提供者,然后將結(jié)果進(jìn)行封裝返回給本地消費(fèi)者。

rpc=socket + 動(dòng)態(tài)代理
備注:
RPC 框架為什么需要序列化?
因?yàn)榫W(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)必須是二進(jìn)制數(shù)據(jù),所以在 RPC 調(diào)用中,對(duì)入?yún)?duì)象與返回值對(duì)象進(jìn)行序列化與反序列化是一個(gè)必須的過(guò)程。

image.png

故參考網(wǎng)絡(luò)分層架構(gòu)可知:http://www.itdecent.cn/p/f21f57cf2690
網(wǎng)絡(luò)傳輸對(duì)象的過(guò)程是:

  • 先將對(duì)象信息,序列化成二進(jìn)制;
  • 然后針對(duì)二進(jìn)制,使用TCP/IP等網(wǎng)絡(luò)協(xié)議進(jìn)行傳輸;

附錄:RPC和RESTFul的區(qū)別
https://blog.csdn.net/weichi7549/article/details/107721623
簡(jiǎn)單來(lái)說(shuō):

  • RPC:面向過(guò)程編程,解決的是:像本地方法調(diào)用一樣,調(diào)用遠(yuǎn)程方法
  • RESTFUL:面向資源編程,規(guī)范服務(wù)調(diào)用接口

2.挑戰(zhàn)
未大規(guī)模服務(wù)化之前,應(yīng)用可能只是通過(guò)RPC框架,簡(jiǎn)單等暴露和引用遠(yuǎn)程服務(wù),通過(guò)配置服務(wù)等URL地址進(jìn)行遠(yuǎn)程服務(wù)調(diào)用。
1)服務(wù)越來(lái)越多時(shí):需要統(tǒng)一的服務(wù)注冊(cè)中心,動(dòng)態(tài)等注冊(cè)和發(fā)現(xiàn)服務(wù),使服務(wù)等位置透明。比如:ZK
2)隨著業(yè)務(wù)發(fā)展,服務(wù)之間依賴(lài)關(guān)系變等錯(cuò)綜復(fù)雜:需要一個(gè)分布式消息跟蹤系統(tǒng)可視化展示服務(wù)調(diào)用鏈,用于依賴(lài)分析,業(yè)務(wù)調(diào)用路徑梳理。
3)服務(wù)調(diào)用量越來(lái)越大時(shí):服務(wù)容量問(wèn)題暴露,需要容量規(guī)劃,及時(shí)擴(kuò)容與縮容。
4)服務(wù)的統(tǒng)一生命周期管理。

服務(wù)化之后,隨之而來(lái)的就是服務(wù)治理問(wèn)題。
服務(wù)框架+服務(wù)治理成為發(fā)展方向。

三.SOA服務(wù)框架(DUBBOL)
SOA:Service Oriented Architecture 面向服務(wù)架構(gòu), 是一種粗力度,松耦合的以服務(wù)為中心的架構(gòu),接口之間通過(guò)定義明確的協(xié)議和接口進(jìn)行通信。
1.服務(wù)框架
設(shè)計(jì)原則:
1)服務(wù)可復(fù)用
2)服務(wù)共享一個(gè)契約
3)服務(wù)松耦合
4)服務(wù)可組合,可編排
5)服務(wù)是自治的
6)服務(wù)是無(wú)狀態(tài)的
7)服務(wù)是可被自動(dòng)發(fā)現(xiàn)的
2.服務(wù)治理
治理內(nèi)容:
1)服務(wù)定義
2)服務(wù)生命周期管理
3)服務(wù)版本治理
4)服務(wù)注冊(cè)中心
5)服務(wù)監(jiān)控
6)運(yùn)行期服務(wù)質(zhì)量保障
7)快速故障定位
8)服務(wù)安全

SOA服務(wù)框架中對(duì)服務(wù)是粗粒度對(duì),為了最大限度利用服務(wù)化功能,對(duì)服務(wù)做進(jìn)一步細(xì)粒度對(duì)拆分,形成MSA架構(gòu)。
四.微服務(wù)架構(gòu)(MSA)
MSA:Micro Service Architecture 微服務(wù)架構(gòu)是一種服務(wù)化架構(gòu)風(fēng)格,通過(guò)將功能分散到各個(gè)離散到服務(wù)中以實(shí)現(xiàn)對(duì)解決方案對(duì)解耦。
1.微服務(wù)特征
1)原子服務(wù),專(zhuān)注做一件事情
2)高密度對(duì)部署:重要對(duì)服務(wù)可以獨(dú)立進(jìn)程部署,非核心服務(wù)可以合并打包,部署到一個(gè)進(jìn)程。
3)敏捷交付:粒度越小,越敏捷;
4)微自治:服務(wù)足夠小,功能單一,可以獨(dú)立打包,部署,升級(jí),回滾等,不依賴(lài)其他服務(wù),實(shí)現(xiàn)局部自治。
2.微服務(wù)架構(gòu)對(duì)比SOA
1)服務(wù)拆分粒度
2)服務(wù)依賴(lài)
3)服務(wù)規(guī)模
4)架構(gòu)差異
5)服務(wù)治理
6)敏捷交付
總結(jié):量變引起質(zhì)變。

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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