概述
现在我们已经熟悉了联邦架构,让我们深入了解帮助我们构建和管理它的开发者平台。Apollo GraphOS。
在本课中,我们将
- 概述一个 超级图 从头到尾的制作过程
使用 GraphOS 进行托管式联邦
托管式联邦是一种维护 超级图 的方法。使用 托管式联邦,我们的超级图更新由 Apollo GraphOS 处理。
GraphOS 是帮助我们构建、管理和扩展 超级图 的开发者平台。 GraphOS 在注册表中跟踪和组合 子图模式,提供可观察性指标,确保安全 模式交付 等等。
为了与 GraphOS 交互,我们使用 GraphOS Studio 和 Rover CLI。
GraphOS Studio 是 GraphOS 的主要 Web 界面。我们可以使用 Studio 创建我们的 超级图,查看模式和指标,并在资源管理器中测试 操作。如果你已经使用我们在这里的 Odyssey 上构建了一个 GraphQL 服务器,那么你可能之前已经使用过 Studio,或者它的免费精简版:沙盒。
The Rover CLI 是 GraphOS 的主要命令行界面。我们可以使用 Rover 发布 子图模式,在 CI 中运行 模式检查,并在开发环境中测试我们的 超级图。我们将在本课程后面的内容中看到它们的使用!
我们将使用 Studio 和 Rover,使用 托管式联邦 来让我们的 超级图 活起来!
托管式联邦工作流程
从高层面上看, 托管式联邦 工作流程如下:
- 后端开发人员设计和构建他们的 子图。
- 有人在 GraphOS Studio 中创建了一个新的 超级图。
- 后端开发人员将他们的 子图模式 发布到模式注册表。
- 模式注册表会自动将 子图模式 组合到一起,形成一个 超级图模式,并通过 Apollo Uplink 提供访问。
- The router 会自动轮询 Uplink 以获取任何新版本的 超级图模式。
让我们更详细地看一下每个步骤。
步骤 1:团队构建他们的子图
后端团队独立地构建他们的 子图服务器,可以使用他们喜欢的任何语言和框架。
步骤 2:在 GraphOS Studio 中创建一个新的超级图
接下来,需要有人在 Studio 中创建一个新的 超级图。只需要一个人执行此步骤。
步骤 3:发布子图
当我们对我们的 子图 感到满意时,我们将使用 Rover CLI 将每个子图的模式发布到模式注册表。模式注册表是 Apollo 托管的版本控制系统,它使我们能够跟踪模式随时间的变化,例如哪些类型和 字段 被添加、修改和删除。注册表是 Apollo GraphOS 中几乎所有功能的基础。
步骤 4:组合超级图模式
当模式注册表收到一个新的或更新的 子图模式 版本时,它会触发一个 启动。一个 启动 代表对一个 图 进行模式更新的完整过程。
首先, GraphOS 将开始 构建 The 超级图模式。它试图将来自其注册的 子图 的所有模式组合到一个单一的超级图模式中。此过程也称为 组合。非常酷!
如果 组合 失败,模式注册表将在 Studio 中显示错误,并且该过程将停止在失败的 启动 处。不用担心:我们可以使用错误消息修复我们 子图 中的问题,然后尝试使用 Rover 再次发布子图。
如果 组合 成功且没有验证错误,模式注册表会生成一个 超级图模式。
模式注册表会自动将 超级图模式 发送到 Studio 内部的名为 Apollo Uplink 的服务。Uplink 是一个服务器,它存储每个图的最新超级图模式。
步骤 5:路由器轮询 Uplink 以获取最新的超级图模式
接下来,我们需要 router 连接到在步骤 2 中 Studio 中创建的 超级图。
The router 会自动定期轮询 Uplink 以查看是否有新版本的 超级图模式。
大多数情况下, router 会发现 Uplink 中存储的 超级图模式 与它正在使用的版本相同。在这种情况下,不会发生任何变化。
但如果 路由器 看到 Uplink 包含 新的 版本的 超图架构,那么 路由器 会自动更新以使用新版本 - 无需重启服务器,也无需停机! 启动 会成功完成。
现在,任何与 路由器 通信的客户端都将能够引用和 查询 更新后的架构。
以下是完整的 托管联合 工作流程,使用 超图:
练习
将这些项目从这个框中拖到上面的空白处
版本控制
数据源
解析器
超图架构
托管联合
构建
子图
路由器
Apollo Uplink
合成
关键要点
- 创建或更新 子图架构 后,开发人员使用 Rover CLI 将子图架构发布到架构注册中心。
- GraphOS 将 子图架构 合成为 超图架构, 路由器 使用它来解析传入的客户端请求。
- 使用 托管联合,对 路由器 的架构更新由 GraphOS 管理,并且不会造成任何停机。
接下来
让我们处理流程中的第一步:准备我们的 子图!
分享您对本课的疑问和评论
本课程目前处于
您需要一个 GitHub 帐户才能在下面发帖。没有? 改为在我们的 Odyssey 论坛上发帖。