API 网关的核心职责、Backend-for-Frontend 模式、GraphQL 网关实践及认证路由策略。
Leeting Yan4 分钟阅读1998 字
API 网关与 BFF 架构
网关是微服务架构的流量入口,BFF 是适配多端体验的专用层。两者结合实现灵活的前后端协作。
1. API 网关核心职责
Client
↓
┌───────────────┐
│ API Gateway │ ← 流量入口
└───────────────┘
│
┌───────────────┼───────────────┐
↓ ↓ ↓
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Order │ │ Payment │ │ User │
│ Service │ │ Service │ │ Service │
└──────────┘ └──────────┘ └──────────┘
功能矩阵
职责
说明
请求路由
按路径/Host/Header 转发到后端服务
负载均衡
多种 LB 算法:Round Robin、Least Conn
认证授权
JWT 校验、OAuth 集成、RBAC
限流熔断
令牌桶限流、熔断状态机
协议转换
HTTP ↔ gRPC、REST ↔ GraphQL
日志监控
请求日志、延迟分布、错误率
灰度发布
按用户比例/Header 路由
2. 网关选型
网关
特点
适用场景
Nginx/OpenResty
高性能、Lua 扩展
简单路由、高并发入口
Kong
插件丰富、企业级
全功能 API 管理
Apinto
国产开源、轻量
国内生态替代
Spring Cloud Gateway
Java 生态、Spring 集成
Spring 体系微服务
Envoy
云原生、Service Mesh
K8s + Istio 场景
Traefik
自动服务发现
云原生动态路由
3. BFF 模式
Backend for Frontend:为不同客户端提供定制化的 API。
┌─────────┐
│ Web │────────────────→ Web BFF ──→ 聚合后端
├─────────┤
│ Mobile │────────────────→ Mobile BFF ──→ 聚合后端
├─────────┤
│ Admin │────────────────→ Admin BFF ──→ 聚合后端
└─────────┘
BFF vs 网关
对比
网关
BFF
职责
通用横切
业务聚合、数据适配
关注点
安全、限流、路由
响应结构、数据裁剪
复用性
全局统一
每个客户端独立
示例
JWT 校验
Web 端返回更多字段
BFF 实践要点
// Web BFF:聚合多服务,返回完整数据
asyncfunctiongetOrderDetail(orderId){const[order,payment,logis]=awaitPromise.all([orderService.get(orderId),paymentService.get(orderId),logisticsService.get(orderId)]);return{order,payment,logistics:logis};}// Mobile BFF:精简响应,减少数据量
asyncfunctiongetOrderSummary(orderId){constorder=awaitorderService.get(orderId);return{id:order.id,status:order.status,total:order.total};}