微服务架构:BFF和网关是如何演化出来的?
題圖 from pixabay.com
1、介紹
BFF(Backend for Frontend)和網關Gateway是微服務架構中的兩個重要概念,這兩個概念相對比較新,有些開發人員甚至是架構師都不甚理解。
本文用假想的公司案例+圖示的方式,解釋BFF和網關是什么,它們是怎么演化出來的。希望對架構師設計和落地微服務架構有所啟發。
2、服務化架構V1
我們先把時間推回到大致2011年左右。假設有一家有一定業務體量的電商公司CoolShop,在這個時間點它已經完成單塊應用的解構拆分,內部SOA服務化已經初步完成。這個時候它的無線應用還沒有起步,前端用戶體驗層主要是傳統的服務端Web應用,總體服務化架構V1如下圖所示。
3、服務化架構V2
時間轉眼來到2012年初,國內的無線應用開始起風,CoolShop公司也緊跟市場趨勢,研發自己的無線原生App。為了能盡快上線,公司的架構師提出如下V2架構,讓App直接調用內部的服務:
這個架構有如下問題:
- 聚合:某一個功能需要同時調用幾個后端API進行組合,比如首頁需要顯示分類和產品細節,就要同時調用分類API和產品API,不能一次調用完成。
- 裁剪:后端服務返回的Payload一般比較通用,App需要根據設備類型進行裁剪,比如手機屏幕小,需要多裁掉一些不必要的內容,Pad的屏幕比較大,可以少裁掉一些內容。
- 適配:一種常見的適配場景是格式轉換,比如有些后臺服務比較老,只支持老的SOAP/XML格式,不支持新的JSON格式,則無線App需要適配處理不同數據格式。
3、服務化架構V2.1
V2架構問題太多,沒有開發實施。為解決上述問題,架構師經過思考決定在外部設備和內部微服務之間引入一個新的角色~Mobile BFF。
所謂BFF其實是Backend for Frontend的簡稱,中文翻譯是為前端而開發的后端,它主要由前端團隊開發(后端微服務一般由后端團隊開發)。BFF可以認為是一種適配服務,將后端的微服務進行適配(主要包括聚合裁剪和格式適配等邏輯),向無線端設備暴露友好和統一的API,方便無線設備接入訪問后端服務。
新的V2.1架構如下圖:
這個架構的優勢是:
- 后端如果發生變化,通過BFF屏蔽,前端設備可以做到不受影響。
- 前端如果發生變化,通過BFF屏蔽,后端微服務可以暫不變化。
- 當無線App有新的需求時,通過BFF的屏蔽,可以減少前后端團隊的溝通協調開銷,很多需求由前端團隊在BFF上就可以自己搞定。
4、服務化架構V3
V2.1架構比較成功,實施落地以后支持了CoolShop公司早期無線業務的成長。隨著業務量進一步增長,投入無線研發的團隊也不斷增加,V2.1架構也逐漸暴露出如下問題:
為了解決上述問題,架構師經過思考決定在外部設備和內部BFF之間再引入一個新的角色~API Gateway,新的架構V3如下圖所示:
新的架構V3有如下調整:
- 路由,將來自無線設備的請求路由到后端的某個微服務BFF集群。
- 認證,對涉及敏感數據的API訪問進行集中認證鑒權。
- 監控,對API調用進行性能監控。
- 限流熔斷,當出現流量洪峰,或者后端BFF/微服務出現延遲或故障,網關能夠主動進行限流熔斷,保護后端服務,并保持前端用戶體驗可以接受。
- 安全防爬,收集訪問日志,通過后臺分析出惡意行為,并阻斷惡意請求。
在新的V3架構中,網關承擔了重要的角色,它是解耦拆分和后續升級遷移的利器。在網關的配合下,單塊BFF實現了解耦拆分,各業務線團隊可以獨立開發和交付各自的微服務,研發效率大大提升。另外,把跨橫切面邏輯從BFF剝離到網關上去以后,BFF的開發人員可以更加專注業務邏輯交付,實現了架構上的關注分離(Separation of Concerns)。
5、服務化架構V4
業務在不斷發展,技術架構也需要不斷的調整來應對需求的變化。近年,CoolShop公司技術團隊又迎來了新的業務和技術需求,主要是:
為滿足業務需求,架構師對服務化架構又進行了拓展升級,新的V4新架構如下圖所示:
V4整體思路和V3類似,只是拓展了新的接入渠道:
V4是一個比較完整的現代微服務架構,從外到內依次分為:端用戶體驗層->網關層->BFF層->微服務層。整個架構層次清晰,職責分明,是一種靈活的能夠支持業務不斷創新的演化式架構。
6、結論
?
· END ·
來源:https://www.sohu.com/a/236506677_673711
總結
以上是生活随笔為你收集整理的微服务架构:BFF和网关是如何演化出来的?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 恒瑞医药dr是什么意思
- 下一篇: 苹果万亿市值缩水 真的已经到达瓶颈了吗