BFF架构学习

1.什么是BFF?

BFF是服务于前端的后端,全称Backend For Frontend。BFF的位置在与客户端与服务端中间,起到一个中间件的作用。

2.BFF干什么?

让我们看下结构分布图如下:

解析此图可以简单看出:BFF将服务端的接口数据汇聚一块,然后经过整理加工传给前端。这样前端就可以直接调用一个接口就能直接获取数据。而后端也不至于为前端的需要而将业务代码汇聚到一块。方便了前后端开发。BFF向下是服务端各种微服务,向上则是为客户端提供接口服务。后端为BFF层的前端提供的 RPC 接口, BFF 层则直接调用服务端 RPC 接口拿到数据,按需加工数据,来完成整个BFF的闭环(以Node+GraphQL技术栈为主)

3.BFF优势和不足?

BFF的优势:

  1. 独立化前后端,达到一种解耦的作用。
  2. 多端应用适配,当不同终端对服务端接口提供的数据需求不一的时候,可以通过调整BFF层,同时也可以进行 不同的API调用来减少Http请求。

BFF的不足:

  1. 重复开发:在开发一个BFF的应用的时候,会出现重复开发BFF的问题展示。增加了开发成本。
  2. 维护成本增加:在开发BFF应用中,要对BFF进行维护。
  3. 链路复杂:在BFF的流程中,不仅要兼顾客户端还要兼顾服务端,这样就导致了一个流程的繁琐。
  4. 浪费资源:现在多了一个BFF层,因此资源上的消耗也会比之前多。

解决BFF的不足建议是负载均匀、监控报警、等运维操作

而综上所有的解决方式为ServerLess,Serverless = Faas (Function as a service) + Baas (Backend as a service)

Fass:是服务商提供一个平台、提供给用户开发、运行管理这些函数的功能,而无需搭建和维护基础框架,是一种事件驱动由消息触发的函数服务

Baas:为服务端服务的,这里包含了许多后端组件,是一个优秀基于API的第三方服务。包含了数据库、消息队列、日志服务等

4.BFF的应用环境

  1. 客户端需要大量数据展示而App不需要太多数据,或者一个页面需要大量接口请求,那么就可以使用BFF对数据进行结合。
  2. 迭代展示,对于新版本页面展示需要快速开发,让页面展示的数据有所不同。
  3. 如果服务端数据显示格式不同,为了让前端设配更好而提供一个良好的数据格式。