#apollo-federation #graphql #联邦 #网关

graphgate-validation

GraphGate 是用 Rust 实现的 Apollo Federation

3 个版本 (重大更新)

0.5.0 2021年3月24日
0.4.0 2021年3月23日
0.3.2 2021年3月22日

#856 in HTTP 服务器


3 个 Crates 中使用 (通过 graphgate-planner)

MIT/Apache

205KB
7K SLoC

GraphGate

GraphGate 是 Apollo Federation 的 Rust 实现。

快速入门

由 3 个服务(账户、产品、评论)组成的 GraphQL API。

docker run -p 8000:8000 scott829/graphgate-standalone-demo:latest

打开浏览器 https://127.0.0.1:8000

执行查询

{
    topProducts {
        upc name price reviews {
            body
            author {
                id
                username
            }
        } 
    }
}

执行订阅

subscription {
    users {
        id username reviews {
            body
        }
    }
}

常见问题解答

Apollo Federation 做什么?

为了充分利用 GraphQL,您的组织应该公开一个单一的数据图,该数据图提供统一的接口,以查询任何组合的后备数据源。然而,用单个、单体 GraphQL 服务器表示企业级数据图可能会很具挑战性。

为了解决这个问题,您可以使用 Apollo Federation 将您图的实际应用分割成多个可组合的服务

与其它分布式 GraphQL 架构(如 schema stitching)不同,Apollo Federation 使用声明式编程模型,使得每个实现服务只需实现其负责的图的一部分。

为什么用 Rust 实现?

Rust 是我最喜欢的编程语言。它是安全且快速的,非常适合开发 API 网关。

GraphGate 与 Apollo Federation 有什么不同?

我认为 GraphGate 的性能会更好(我还没有进行基准测试,但会很快添加),它还支持订阅。

依赖关系

~5MB
~96K SLoC