ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Bff层和gateway介绍

Bff层和gateway介绍 BFFBackend 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再路由到内部服务。核心职责路由转发根据 URL 把请求转发到对应服务。鉴权认证校验 token、API Key拒绝非法请求。限流熔断保护后端服务防止雪崩。协议转换外部 HTTP → 内部 gRPC/Dubbo。日志监控统一记录请求日志、指标。灰度发布按规则路由到不同版本。安全防护防 SQL 注入、XSS、DDoS。常见实现Nginx / OpenRestyKongSpring Cloud GatewayAPISIXEnvoy云厂商AWS API Gateway、阿里云 API 网关特点通用性不关心具体业务对所有客户端一视同仁。稳定性变更少一旦配置好很少改动。性能高并发、低延迟通常用 C/C/Go 编写。三、BFF 详解定位为特定前端定制的中间层位于 Gateway 之后、领域服务之前。核心职责接口聚合把多个后端接口合并成一个。数据裁剪只返回前端需要的字段。格式适配后端数据结构转前端友好格式。多端定制Web BFF、App BFF、大屏 BFF 各自独立。鉴权与会话统一处理 token、用户上下文。缓存与降级热点数据缓存后端故障时兜底。业务编排调用多个服务完成一个前端需求。常见实现Node.js / NestJS高并发 I/O与前端同构。Spring Boot企业级强事务。FastAPIAI 场景异步、自动文档。Go高性能网关。GraphQL前端按需取数天然 BFF。特点定制性每个前端一个 BFF接口为该端量身定制。灵活性跟随前端快速迭代。业务性可以有编排逻辑但不碰数据库。四、协同关系text┌─────────┐ ┌─────────┐ ┌─────────┐ │ Web │ │ App │ │ 大屏 │ └────┬────┘ └────┬────┘ └────┬────┘ │ │ │ └────────────┼────────────┘ ▼ ┌─────────────────┐ │ API Gateway │ 统一入口、鉴权、限流 └────────┬────────┘ │ ┌───────────┼───────────┐ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ Web BFF │ │ App BFF │ │大屏 BFF │ └────┬────┘ └────┬────┘ └────┬────┘ │ │ │ └───────────┼───────────┘ ▼ ┌─────────────────┐ │ 领域服务 │ │ 用户/订单/库存 │ └─────────────────┘请求链路前端 → Gateway → BFF → 领域服务Gateway做统一的基础设施鉴权、限流、路由。BFF做前端的定制化聚合、裁剪、适配。领域服务做核心业务数据、事务、领域逻辑。五、为什么不能互相替代Gateway 不能替代 BFFGateway 对所有客户端通用无法为每个前端定制。Gateway 不应该有业务逻辑聚合编排会让它臃肿。Gateway 变更影响所有客户端不能跟随单个前端迭代。BFF 不能替代 GatewayBFF 是特定前端的无法统一处理所有入口。BFF 不做限流、熔断、DDoS 防护等基础设施。BFF 数量多如果每个都做鉴权重复且难维护。结论Gateway 管“进门”BFF 管“点菜”。两者缺一不可。六、什么时候需要 BFF场景是否需要 BFF单一 Web 前端接口简单❌ 不需要多端Web/App/小程序/大屏✅ 需要前端需要聚合多个后端接口✅ 需要后端接口字段太多前端只用少数✅ 需要前端迭代快后端稳定✅ 需要团队有前端/全栈资源✅ 适合团队只有后端前端外包❌ 慎重微服务数量少接口简单❌ 不需要七、最佳实践Gateway 层只做基础设施鉴权、限流、路由、日志。不做业务逻辑聚合、编排下沉到 BFF。配置化路由规则用配置中心管理。高可用多实例部署避免单点。监控告警QPS、延迟、错误率。BFF 层按端划分Web BFF、App BFF、大屏 BFF。不碰数据库只调用领域服务。不做核心业务核心逻辑下沉。统一鉴权集中处理 token、用户上下文。缓存热点聚合结果可缓存。降级策略后端故障时返回兜底数据。避免膨胀BFF 不应变成新的“万能后端”。团队 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 → 领域服务。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进