外观主题
阅读语言

GraphQL Federation 联邦图 —— 多个子图服务拼成一张大图

软件 本站软件 3小时前
https://yxp.hk/p/XYE2lT

📦 开源仓库: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。