grafbase/grafbase · 上手攻略
- 仓库:grafbase/grafbase
- 链接:https://github.com/grafbase/grafbase
- 分类:ai
- 作者:Tom
- 更新:2026-08-23
它是什么
Grafbase 是一个用 Rust 编写的自托管 GraphQL Federation 网关,用于将多个微服务、遗留系统或第三方 API 统一成单一 GraphQL 端点。它曾是 The Guild 商业产品的开源核心,2024 年被 The Guild 收购后逐步转型。
⚠️ 重要声明(2026-05 动态):Grafbase 平台本身(Dashboard / app.grafbase.com)已于近期停运退役(sunsetted)。CLI 与 Gateway 目前处于维护模式(maintenance mode),仅接收高危安全修复,将于 2026 年 5 月底正式归档(archive)。如需生产级 Federation 路由,推荐迁移至 Hive Router 或 Hive Gateway。
本攻略聚焦 Grafbase 历史功能文档,帮助理解其架构设计思想,供技术选型参考。
解决什么问题
在 Grafbase 出现之前,团队通常需要手写胶水代码将多个 GraphQL 微服务拼在一起,维护成本极高。Grafbase 通过 Apollo Federation v2 规范实现了:
| 痛点 | Grafbase 方案 |
|---|---|
| 多服务 schema 拼接 | Federation 自动组合各 subgraph schema |
| 跨服务授权 | Gateway 层统一鉴权,不用改下游服务 |
| 高延迟 | Rust 引擎比 Apollo 官方网关快 40% |
| 接入 AI 能力 | 内置 MCP(Model Context Protocol)服务器,可将 GraphQL API 暴露为 MCP server |
| 协议扩展 | 支持 REST、gRPC、Postgres、Kafka 等非 GraphQL 数据源 |
快速安装
# macOS / Linux
curl -fsSL https://grafbase.com/install.sh | bash
# Windows (PowerShell)
irm https://grafbase.com/install.ps1 | iex
# 验证安装
grafbase --version
# 初始化项目
grafbase init my-project
cd my-project
核心用法
1. 启动本地 Gateway
# 方式一:直接启动(需要一个 .grafbase 配置文件)
grafbase dev
# 方式二:使用 Docker(推荐用于生产)
docker run -p 4000:4000 \
-e GRAFBASE_API_URL=https://your-subgraph-url.com/graphql \
grafbase/grafbase:v0.100.0
⚠️ 上述 Docker 镜像是最后已知可用的版本(v0.100.0 附近),具体最新 tag 建议查阅 GitHub Releases 页面确认。
2. 配置 Federation subgraph
创建 grafbase.config.ts:
import { graph, connector } from '@grafbase/sdk'
const g = graph()
// 连接一个 REST 数据源作为 subgraph
g.datasource('REST-api').url('https://api.example.com/graphql')
// 定义 schema
g.type('User') {
g.field('id').type('ID!')
g.field('name').type('String!')
}
export default g
3. WebAssembly 扩展(高级)
Grafbase 支持用 WASM 自定义鉴权、授权和解析逻辑:
# 初始化一个 authentication extension
grafbase extension init --type authentication auth-guard
cd auth-guard
# 编译并安装
grafbase extension build
grafbase extension install
常见的 WASM 扩展场景:
| 场景 | 说明 |
|---|---|
| JWT 验证 | 自定义 token 校验逻辑 |
| 字段级权限 | 动态决定哪些字段对哪些用户可见 |
| 任意数据源 | 将非 GraphQL API(如 REST、gRPC)接入 Federation |
| 速率限制 | 基于用户或 IP 的请求限流 |
4. MCP 集成(AI 原生特性)
Grafbase 是首个内置 MCP 服务器支持的 GraphQL 网关,可将现有 GraphQL API 直接暴露给 AI Agent:
# 启用 MCP(配置文件中设置)
# grafbase.config.ts
g.mcp({ enabled: true, port: 3001 })
典型适用场景
| 场景 | 适用程度 | 说明 |
|---|---|---|
| 微服务统一 | ✅ 强烈推荐 | 多个 GraphQL 微服务一键联邦 |
| REST/gRPC 集成 | ✅ 适用 | 通过 Federation 接入非 GraphQL 服务 |
| AI Agent 上下文 | ✅ 适用 | MCP 集成让 Agent 直接查询 GraphQL |
| 快速原型验证 | ⚠️ 注意 | 平台已停运,不建议新建生产项目 |
| Schema 治理 | ✅ 仍可用 | CLI 和 composition checks 仍有效 |
坑与注意
-
平台已死,CLI 仍可用:Dashboard、Schema Registry 等云端功能已不可用,但本地
grafbase dev/grafbase deploy的 self-hosted 模式在归档前仍可工作。 -
迁移路径:The Guild 推荐迁移至 Hive,这是 Hive Console(schema registry)+ Hive Router(federation gateway)的组合。Hive Router 与 Grafbase Gateway 功能高度重叠,但由原班团队维护。
-
NPM 包名变更:之前包名是
@grafbase/sdk,收购后部分 API 有调整,文档以官网最新为准。 -
性能数据:README 中声称"40% faster than Apollo",来自 Grafbase 官方博客基准测试,未有第三方独立验证,⚠️ 标注。
-
归档时间临近:预计 2026-05 底归档,如有依赖建议尽快制定迁移计划。
与同类对比
| 特性 | Grafbase | Apollo Router | Hive Router | Cosmo Router |
|---|---|---|---|---|
| 引擎 | Rust | Rust | Rust | Rust |
| Federation v2 | ✅ 原生 | ✅ | ✅ | ✅ |
| WASM 扩展 | ✅ | ✅ | ✅ | ✅ |
| MCP 集成 | ✅ | ❌ | ❌ | ❌ |
| 平台状态 | 🔴 停运/归档中 | 🟢 活跃 | 🟢 活跃 | 🟡 一般 |
| Schema Registry | ❌(平台已关) | ✅ Apollo Studio | ✅ Hive Console | ✅ |
一句话结论
Grafbase 架构设计优秀(Rust + Federation v2 + MCP),但平台已停运、即将归档——新项目请直接选 Hive Router;学习 Federation 架构思想仍可参考本仓库文档。