📦 开源仓库:learn_graphql_federation · 纯 Python 标准库 · 学习演示项目
微服务拆细之后,GraphQL 也要跟着拆:每个子图服务(subgraph)只拥有自己那部分 schema 和数据,一个网关把所有子图拼成一张联邦大图,查询的每个字段由网关路由到真正拥有它的服务。
核心思路
client ──► gateway ──► user 子图 (拥有 User 类型)
└──► product 子图 (拥有 Product 类型)
- 一条查询可以同时命中多个子图
- 每个子图独立拥有自己的类型与数据
- 网关把所有子图拼接成对客户端透明的一张图
为什么值得学
- 领域自治:每个团队独立维护、独立发布自己的子图
- 单一入口:客户端面对一个端点,不用拼一堆 REST 调用
- 渐进式接入:子图一个一个加,老服务不受影响
演示场景
一条查询同时要 user 和 product,网关把两个字段分别路由给拥有它们的子图,再把结果拼回来。
运行
python run_all.py
纯 Python 标准库,零第三方依赖,一键跑完所有演示场景后自动退出。
仓库:github.com/yxpil/learn_graphql_federation,欢迎 Star 与提 Issue。