☰
Bff层和gateway介绍
2026/10/11 1:54:42 网站建设 项目流程

BFF(Backend for Frontend)和API Gateway(网关)是微服务架构中两个容易混淆但职责完全不同的组件。它们不是替代关系,而是协同关系:Gateway 在最外层做统一入口,BFF 在 Gateway 之后、领域服务之前,为特定前端定制接口。


一、核心定位对比

维度API GatewayBFF
面向对象所有客户端特定前端(Web/App/大屏)
核心职责路由、鉴权、限流、熔断、协议转换聚合、裁剪、适配、编排
数量通常一个每个前端一个
业务逻辑尽量少,只做基础设施可以有编排逻辑
变更频率低,稳定高,跟随前端迭代
归属平台/运维团队前端/业务团队
技术选型Nginx、Kong、Spring Cloud GatewayNode.js、NestJS、Spring Boot、FastAPI

一句话:Gateway 是“大门”,BFF 是“前台”。


二、API Gateway 详解

定位

微服务的统一入口,所有外部请求先经过 Gateway,再路由到内部服务。

核心职责

  1. 路由转发:根据 URL 把请求转发到对应服务。

  2. 鉴权认证:校验 token、API Key,拒绝非法请求。

  3. 限流熔断:保护后端服务,防止雪崩。

  4. 协议转换:外部 HTTP → 内部 gRPC/Dubbo。

  5. 日志监控:统一记录请求日志、指标。

  6. 灰度发布:按规则路由到不同版本。

  7. 安全防护:防 SQL 注入、XSS、DDoS。

常见实现

  • Nginx / OpenResty

  • Kong

  • Spring Cloud Gateway

  • APISIX

  • Envoy

  • 云厂商:AWS API Gateway、阿里云 API 网关

特点

  • 通用性:不关心具体业务,对所有客户端一视同仁。

  • 稳定性:变更少,一旦配置好,很少改动。

  • 性能:高并发、低延迟,通常用 C/C++/Go 编写。


三、BFF 详解

定位

为特定前端定制的中间层,位于 Gateway 之后、领域服务之前。

核心职责

  1. 接口聚合:把多个后端接口合并成一个。

  2. 数据裁剪:只返回前端需要的字段。

  3. 格式适配:后端数据结构转前端友好格式。

  4. 多端定制:Web BFF、App BFF、大屏 BFF 各自独立。

  5. 鉴权与会话:统一处理 token、用户上下文。

  6. 缓存与降级:热点数据缓存,后端故障时兜底。

  7. 业务编排:调用多个服务,完成一个前端需求。

常见实现

  • Node.js / NestJS:高并发 I/O,与前端同构。

  • Spring Boot:企业级,强事务。

  • FastAPI:AI 场景,异步、自动文档。

  • Go:高性能网关。

  • GraphQL:前端按需取数,天然 BFF。

特点

  • 定制性:每个前端一个 BFF,接口为该端量身定制。

  • 灵活性:跟随前端快速迭代。

  • 业务性:可以有编排逻辑,但不碰数据库。


四、协同关系

text

┌─────────┐ ┌─────────┐ ┌─────────┐ │ Web │ │ App │ │ 大屏 │ └────┬────┘ └────┬────┘ └────┬────┘ │ │ │ └────────────┼────────────┘ ▼ ┌─────────────────┐ │ API Gateway │ 统一入口、鉴权、限流 └────────┬────────┘ │ ┌───────────┼───────────┐ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ Web BFF │ │ App BFF │ │大屏 BFF │ └────┬────┘ └────┬────┘ └────┬────┘ │ │ │ └───────────┼───────────┘ ▼ ┌─────────────────┐ │ 领域服务 │ │ 用户/订单/库存 │ └─────────────────┘

请求链路:前端 → Gateway → BFF → 领域服务

  • Gateway做统一的基础设施:鉴权、限流、路由。

  • BFF做前端的定制化:聚合、裁剪、适配。

  • 领域服务做核心业务:数据、事务、领域逻辑。


五、为什么不能互相替代

Gateway 不能替代 BFF

  • Gateway 对所有客户端通用,无法为每个前端定制。

  • Gateway 不应该有业务逻辑,聚合编排会让它臃肿。

  • Gateway 变更影响所有客户端,不能跟随单个前端迭代。

BFF 不能替代 Gateway

  • BFF 是特定前端的,无法统一处理所有入口。

  • BFF 不做限流、熔断、DDoS 防护等基础设施。

  • BFF 数量多,如果每个都做鉴权,重复且难维护。

结论:Gateway 管“进门”,BFF 管“点菜”。两者缺一不可。


六、什么时候需要 BFF

场景是否需要 BFF
单一 Web 前端,接口简单❌ 不需要
多端(Web/App/小程序/大屏)✅ 需要
前端需要聚合多个后端接口✅ 需要
后端接口字段太多,前端只用少数✅ 需要
前端迭代快,后端稳定✅ 需要
团队有前端/全栈资源✅ 适合
团队只有后端,前端外包❌ 慎重
微服务数量少,接口简单❌ 不需要

七、最佳实践

Gateway 层

  1. 只做基础设施:鉴权、限流、路由、日志。

  2. 不做业务逻辑:聚合、编排下沉到 BFF。

  3. 配置化:路由规则用配置中心管理。

  4. 高可用:多实例部署,避免单点。

  5. 监控告警:QPS、延迟、错误率。

BFF 层

  1. 按端划分:Web BFF、App BFF、大屏 BFF。

  2. 不碰数据库:只调用领域服务。

  3. 不做核心业务:核心逻辑下沉。

  4. 统一鉴权:集中处理 token、用户上下文。

  5. 缓存热点:聚合结果可缓存。

  6. 降级策略:后端故障时返回兜底数据。

  7. 避免膨胀:BFF 不应变成新的“万能后端”。

  8. 团队 ownership:由前端或全栈团队负责。


八、技术选型建议

组件推荐技术理由
GatewaySpring Cloud Gateway / Kong / APISIX成熟、高性能、生态好
Web BFFNestJS / Node.js与前端同构,聚合 I/O 强
App BFFNestJS / Go高并发、低延迟
AI BFFFastAPI异步、自动文档、AI 生态
大屏 BFFNode.js / Go聚合多系统数据
GraphQL BFFApollo / GraphQL Yoga前端按需取数

九、总结

对比维度API GatewayBFF
定位统一入口前端专属中间层
面向所有客户端特定前端
职责路由、鉴权、限流聚合、裁剪、适配
数量一个每个前端一个
业务无有编排
变更低高
归属平台/运维前端/业务
技术Nginx/Kong/GatewayNode/Spring/FastAPI

一句话:Gateway 是微服务的“大门”,BFF 是前端的“专属前台”。Gateway 管安全、路由、限流;BFF 管聚合、裁剪、适配。两者协同,才能既保证后端稳定,又让前端体验流畅。

请求链路:前端 → Gateway → BFF → 领域服务。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询