---

title: GraphQL Federation 子图治理与路由策略(Apollo Gateway 与验证)

date: 2025-11-26

keywords:

  • Federation
  • Apollo Gateway
  • 子图
  • 路由
  • @key

description: 使用Apollo Federation治理子图与路由策略,通过实体键与扩展字段实现跨子图聚合查询,并提供容错与性能验证方法。

categories:

  • 文章资讯
  • 技术教程

---

概述

GraphQL Federation通过实体与子图实现横向扩展与自治演进。网关基于路由计划将查询拆分与合并,保证跨子图的正确性与性能。需要对子图健康与超时进行治理。

关键实践与参数

  • 实体键:@key(fields: "id") 用于跨子图引用
  • 路由计划:网关根据字段所属子图拆分与拼接
  • 超时与重试:为子图调用设置超时与重试策略
  • 观测:记录每子图延迟与错误率,分析瓶颈

示例/配置/实现

# products 子图
type Product @key(fields: "id") { id: ID!, name: String }

# reviews 子图
extend type Product @key(fields: "id") { id: ID! }
type Review { id: ID!, productId: ID!, body: String }
type Query { reviews(productId: ID!): [Review]! }
import { ApolloServer } from '@apollo/server'
import { ApolloGateway } from '@apollo/gateway'
const gateway = new ApolloGateway({
  serviceList: [
    { name: 'products', url: 'http://products:4001/graphql' },
    { name: 'reviews', url: 'http://reviews:4002/graphql' }
  ]
})
const server = new ApolloServer({ gateway })
await server.start()

验证

  • 跨子图查询:查询 Product { id name } 与其 reviews,验证路由与聚合返回正确
  • 子图故障:下线 reviews,网关返回部分数据并记录错误,验证告警触发
  • 性能测试:记录每子图延迟,定位瓶颈并优化
  • 计划稳定:变更子图Schema后通过合并与路由计划测试保持兼容

注意事项

  • 实体与键需稳定演进,避免跨子图引用断裂
  • 为子图设置速率限制与熔断,防止单点瓶颈影响整体
  • 构建与部署需自动化生成与校验Supergraph SDL
  • 对热点字段进行缓存与数据加载优化

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部