知识卡片

BFF网关按前端类型拆分聚合服务而非无差别服务

普通读书笔记卡

内容

传统认知里网关是单一的统一入口,但不同前端对协议和交互方式的需求天差 地别——运行在浏览器里的Web应用受限于浏览器一般只支持HTTP,只能走REST 这类基于HTTP的接口;桌面客户端则不受此限制,可以用gRPC这类性能更好的 协议获得更好体验。BFF(Backend for Frontend,服务于前端的后端)网关的 思路是不再让所有前端共用同一套无差别的网关服务,而是针对不同前端各自 部署一套网关,各自可以有完全不同的技术选型,在网关这个边缘节点上,对 同一批后端服务集群做不同方式的裁剪、适配、聚合,产出适应各自前端的 接口。这个设计把”后端服务的稳定性”和”前端体验的多样性”两个目标解耦 开:后端服务集群本身不需要为了迁就某个前端的特殊需求而妥协,各个BFF 网关各自去做适配聚合的脏活,后端因此更稳定,前端也因此获得了更大的 自由度去选择最适合自己的协议和交互形式。

参考来源

- 位置:《凤凰架构:构建可靠的大型分布式系统》第7章"从类库到服务" 7.2.3节"BFF网关"(源文件:_epub-src对应OEBPS/Text/chapter91.xhtml) - 结论依据:原文说明BFF的含义是网关不必为所有前端提供无差别服务,而是 针对不同前端聚合不同服务、提供不同接口和协议支持,并举例Web前端走 REST、桌面客户端可走gRPC,指出这有助于后端稳定、前端赋能,直接支撑 本卡片结论。 - 原始内容:网关不必为所有的前端提供无差别的服务,而是应该针对不同的 前端,聚合不同的服务,提供不同的接口和网络访问协议支持……在网关这种 边缘节点上,针对同样的后端集群,裁剪、适配、聚合出适应不一样的前端 的服务,有助于后端的稳定,也有助于前端的赋能。