微服務(wù)架構(gòu)的BFF和網(wǎng)關(guān)技術(shù)分析_第1頁(yè)
微服務(wù)架構(gòu)的BFF和網(wǎng)關(guān)技術(shù)分析_第2頁(yè)
微服務(wù)架構(gòu)的BFF和網(wǎng)關(guān)技術(shù)分析_第3頁(yè)
微服務(wù)架構(gòu)的BFF和網(wǎng)關(guān)技術(shù)分析_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余4頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 微服務(wù)架構(gòu)的BFF和網(wǎng)關(guān)技術(shù)分析 1、介紹BFF(Backend for Frontend)和網(wǎng)關(guān)Gateway是微服務(wù)架構(gòu)中的兩個(gè)重要概念,這兩個(gè)概念相對(duì)比較新,有些開(kāi)發(fā)人員甚至是架構(gòu)師都不甚理解。本文用假想的公司案例+圖示的方式,解釋BFF和網(wǎng)關(guān)是什么,它們是怎么演化出來(lái)的。希望對(duì)架構(gòu)師設(shè)計(jì)和落地微服務(wù)架構(gòu)有所啟發(fā)。2、服務(wù)化架構(gòu)V1我們先把時(shí)間推回到大致2011年左右。假設(shè)有一家有一定業(yè)務(wù)體量的電商公司CoolShop,在這個(gè)時(shí)間點(diǎn)它已經(jīng)完成單塊應(yīng)用的解構(gòu)拆分,內(nèi)部SOA服務(wù)化已經(jīng)初步完成。這個(gè)時(shí)候它的無(wú)線(xiàn)應(yīng)用還沒(méi)有起步,前端用戶(hù)體驗(yàn)層主要是傳統(tǒng)的服務(wù)端Web應(yīng)用,總體服務(wù)化架構(gòu)V1如

2、下圖所示。3、服務(wù)化架構(gòu)V2時(shí)間轉(zhuǎn)眼來(lái)到2012年初,國(guó)內(nèi)的無(wú)線(xiàn)應(yīng)用開(kāi)始起風(fēng),CoolShop公司也緊跟市場(chǎng)趨勢(shì),研發(fā)自己的無(wú)線(xiàn)原生App。為了能盡快上線(xiàn),公司的架構(gòu)師提出如下V2架構(gòu),讓App直接調(diào)用內(nèi)部的服務(wù):這個(gè)架構(gòu)有如下問(wèn)題:無(wú)線(xiàn)App和內(nèi)部微服務(wù)強(qiáng)耦合,任何一邊的變化都可能對(duì)另外一邊造成影響。無(wú)線(xiàn)App需要知道內(nèi)部服務(wù)的地址等細(xì)節(jié)。無(wú)線(xiàn)App端需要開(kāi)發(fā)大量的聚合裁剪和適配邏輯:聚合:某一個(gè)功能需要同時(shí)調(diào)用幾個(gè)后端API進(jìn)行組合,比如首頁(yè)需要顯示分類(lèi)和產(chǎn)品細(xì)節(jié),就要同時(shí)調(diào)用分類(lèi)API和產(chǎn)品API,不能一次調(diào)用完成。裁剪:后端服務(wù)返回的Payload一般比較通用,App需要根據(jù)設(shè)備類(lèi)型進(jìn)

3、行裁剪,比如手機(jī)屏幕小,需要多裁掉一些不必要的內(nèi)容,Pad的屏幕比較大,可以少裁掉一些內(nèi)容。適配:一種常見(jiàn)的適配場(chǎng)景是格式轉(zhuǎn)換,比如有些后臺(tái)服務(wù)比較老,只支持老的SOAP/XML格式,不支持新的JSON格式,則無(wú)線(xiàn)App需要適配處理不同數(shù)據(jù)格式。隨著設(shè)備類(lèi)型的增多(iPhone/Android/iPad/WindowsPhone),聚合裁剪和適配邏輯的開(kāi)發(fā)會(huì)造成設(shè)備端的大量重復(fù)勞動(dòng)。3、服務(wù)化架構(gòu)V2.1V2架構(gòu)問(wèn)題太多,沒(méi)有開(kāi)發(fā)實(shí)施。為解決上述問(wèn)題,架構(gòu)師經(jīng)過(guò)思考決定在外部設(shè)備和內(nèi)部微服務(wù)之間引入一個(gè)新的角色Mobile BFF。所謂BFF其實(shí)是Backend for Frontend的簡(jiǎn)稱(chēng)

4、,中文翻譯是為前端而開(kāi)發(fā)的后端,它主要由前端團(tuán)隊(duì)開(kāi)發(fā)(后端微服務(wù)一般由后端團(tuán)隊(duì)開(kāi)發(fā))。BFF可以認(rèn)為是一種適配服務(wù),將后端的微服務(wù)進(jìn)行適配(主要包括聚合裁剪和格式適配等邏輯),向無(wú)線(xiàn)端設(shè)備暴露友好和統(tǒng)一的API,方便無(wú)線(xiàn)設(shè)備接入訪(fǎng)問(wèn)后端服務(wù)。新的V2.1架構(gòu)如下圖:這個(gè)架構(gòu)的優(yōu)勢(shì)是:無(wú)線(xiàn)App和內(nèi)部微服務(wù)不耦合,通過(guò)引入BFF這層間接,使得兩邊可以獨(dú)立變化:后端如果發(fā)生變化,通過(guò)BFF屏蔽,前端設(shè)備可以做到不受影響。前端如果發(fā)生變化,通過(guò)BFF屏蔽,后端微服務(wù)可以暫不變化。當(dāng)無(wú)線(xiàn)App有新的需求時(shí),通過(guò)BFF的屏蔽,可以減少前后端團(tuán)隊(duì)的溝通協(xié)調(diào)開(kāi)銷(xiāo),很多需求由前端團(tuán)隊(duì)在BFF上就可以自己搞定。

5、無(wú)線(xiàn)App只需要知道Mobile BFF的地址,并且服務(wù)接口是統(tǒng)一的,不需要知道內(nèi)部復(fù)雜微服務(wù)的地址和細(xì)節(jié)。聚合裁剪和適配邏輯在Mobile BFF上實(shí)現(xiàn),無(wú)線(xiàn)App端可以大大簡(jiǎn)化瘦身。4、服務(wù)化架構(gòu)V3V2.1架構(gòu)比較成功,實(shí)施落地以后支持了CoolShop公司早期無(wú)線(xiàn)業(yè)務(wù)的成長(zhǎng)。隨著業(yè)務(wù)量進(jìn)一步增長(zhǎng),投入無(wú)線(xiàn)研發(fā)的團(tuán)隊(duì)也不斷增加,V2.1架構(gòu)也逐漸暴露出如下問(wèn)題:剛開(kāi)始只有一個(gè)Mobile BFF,是個(gè)單塊,但是無(wú)線(xiàn)研發(fā)團(tuán)隊(duì)在不斷增加,分別對(duì)應(yīng)多條業(yè)務(wù)線(xiàn)。根據(jù)康威法則,單塊的無(wú)線(xiàn)BFF和多團(tuán)隊(duì)之間就出現(xiàn)不匹配問(wèn)題,團(tuán)隊(duì)之間溝通協(xié)調(diào)成本高,交付效率低下。Mobile BFF里頭不僅有各個(gè)業(yè)務(wù)

6、線(xiàn)的聚合/裁剪/適配和業(yè)務(wù)邏輯,還引入了很多跨橫切面邏輯,比如安全認(rèn)證,日志監(jiān)控,限流熔斷等。隨著時(shí)間的推移,代碼變得越來(lái)越復(fù)雜,技術(shù)債越堆越多,開(kāi)發(fā)效率不斷下降,缺陷數(shù)量不斷增加。Mobile BFF集群是個(gè)失敗單點(diǎn)(Single Point of Failure),嚴(yán)重代碼缺陷或者流量洪峰可能引發(fā)集群宕機(jī),所有無(wú)線(xiàn)應(yīng)用都不可用。為了解決上述問(wèn)題,架構(gòu)師經(jīng)過(guò)思考決定在外部設(shè)備和內(nèi)部BFF之間再引入一個(gè)新的角色API Gateway,新的架構(gòu)V3如下圖所示:新的架構(gòu)V3有如下調(diào)整:BFF按團(tuán)隊(duì)或業(yè)務(wù)線(xiàn)進(jìn)行解耦拆分,拆分成若干個(gè)BFF微服務(wù),每個(gè)業(yè)務(wù)線(xiàn)可以并行開(kāi)發(fā)和交付各自負(fù)責(zé)的BFF微服務(wù)。網(wǎng)

7、關(guān)(一般由獨(dú)立框架團(tuán)隊(duì)負(fù)責(zé)運(yùn)維)專(zhuān)注跨橫切面(Cross-Cutting Concerns)的功能,包括:路由,將來(lái)自無(wú)線(xiàn)設(shè)備的請(qǐng)求路由到后端的某個(gè)微服務(wù)BFF集群。認(rèn)證,對(duì)涉及敏感數(shù)據(jù)的API訪(fǎng)問(wèn)進(jìn)行集中認(rèn)證鑒權(quán)。監(jiān)控,對(duì)API調(diào)用進(jìn)行性能監(jiān)控。限流熔斷,當(dāng)出現(xiàn)流量洪峰,或者后端BFF/微服務(wù)出現(xiàn)延遲或故障,網(wǎng)關(guān)能夠主動(dòng)進(jìn)行限流熔斷,保護(hù)后端服務(wù),并保持前端用戶(hù)體驗(yàn)可以接受。安全防爬,收集訪(fǎng)問(wèn)日志,通過(guò)后臺(tái)分析出惡意行為,并阻斷惡意請(qǐng)求。網(wǎng)關(guān)在無(wú)線(xiàn)設(shè)備和BFF之間又引入了一層間接,讓兩邊可以獨(dú)立變化,特別是當(dāng)后臺(tái)BFF在升級(jí)或遷移時(shí),可以做到用戶(hù)端應(yīng)用不受影響。在新的V3架構(gòu)中,網(wǎng)關(guān)承擔(dān)了重

8、要的角色,它是解耦拆分和后續(xù)升級(jí)遷移的利器。在網(wǎng)關(guān)的配合下,單塊BFF實(shí)現(xiàn)了解耦拆分,各業(yè)務(wù)線(xiàn)團(tuán)隊(duì)可以獨(dú)立開(kāi)發(fā)和交付各自的微服務(wù),研發(fā)效率大大提升。另外,把跨橫切面邏輯從BFF剝離到網(wǎng)關(guān)上去以后,BFF的開(kāi)發(fā)人員可以更加專(zhuān)注業(yè)務(wù)邏輯交付,實(shí)現(xiàn)了架構(gòu)上的關(guān)注分離(Separation of Concerns)。5、服務(wù)化架構(gòu)V4業(yè)務(wù)在不斷發(fā)展,技術(shù)架構(gòu)也需要不斷的調(diào)整來(lái)應(yīng)對(duì)需求的變化。近年,CoolShop公司技術(shù)團(tuán)隊(duì)又迎來(lái)了新的業(yè)務(wù)和技術(shù)需求,主要是:開(kāi)放內(nèi)部的業(yè)務(wù)能力,建設(shè)CoolShop Open API平臺(tái)。借助第三方社區(qū)開(kāi)發(fā)者的力量,在CoolShop平臺(tái)上進(jìn)行創(chuàng)新,進(jìn)一步拓寬Cool

9、Shop的應(yīng)用和業(yè)務(wù)形態(tài)。廢棄傳統(tǒng)的服務(wù)端Web應(yīng)用模式,引入前后分離架構(gòu),前端采用H5單頁(yè)等技術(shù)給用戶(hù)提供更好的體驗(yàn)。為滿(mǎn)足業(yè)務(wù)需求,架構(gòu)師對(duì)服務(wù)化架構(gòu)又進(jìn)行了拓展升級(jí),新的V4新架構(gòu)如下圖所示:V4整體思路和V3類(lèi)似,只是拓展了新的接入渠道:引入面向第三方開(kāi)放API的BFF層和配套的網(wǎng)關(guān),支持第三方開(kāi)發(fā)者在CoolShop Open API平臺(tái)上開(kāi)發(fā)應(yīng)用。引入面向H5應(yīng)用的BFF層和配套的網(wǎng)關(guān),支持前后分離和H5單頁(yè)應(yīng)用模式。V4是一個(gè)比較完整的現(xiàn)代微服務(wù)架構(gòu),從外到內(nèi)依次分為:端用戶(hù)體驗(yàn)層-網(wǎng)關(guān)層-BFF層-微服務(wù)層。整個(gè)架構(gòu)層次清晰,職責(zé)分明,是一種靈活的能夠支持業(yè)務(wù)不斷創(chuàng)新的演化式架構(gòu)。6、結(jié)論在微服務(wù)架構(gòu)中,BFF(Backend for Frontend)也稱(chēng)聚合層或者適配層,它主要承接一個(gè)適配角色:將內(nèi)部復(fù)雜的微服務(wù),適配成對(duì)各種不同用戶(hù)體驗(yàn)(無(wú)線(xiàn)/Web/H5/第三方等)友好和統(tǒng)一的API。聚合裁剪適配是BFF的主要職責(zé)。在微服務(wù)架構(gòu)中,網(wǎng)關(guān)專(zhuān)注解決跨橫切面邏輯,包括路由、安全、監(jiān)控和限流熔斷等。網(wǎng)關(guān)一方面是拆分解耦的利器,同時(shí)讓開(kāi)發(fā)人員可以專(zhuān)注業(yè)務(wù)邏輯的實(shí)現(xiàn),達(dá)成架構(gòu)上的關(guān)注分離。端用戶(hù)體驗(yàn)層-網(wǎng)關(guān)層-BFF層-微服務(wù)層,是現(xiàn)代微服務(wù)架構(gòu)的典型分層方式,這個(gè)架構(gòu)能夠靈活應(yīng)對(duì)業(yè)務(wù)需求的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論