概述
我们的子图 正在本地运行,现在是时候看看它们如何与我们其他 超图 架构相契合了。让我们后退一步,看看使用 托管式联邦,从头到尾构建超图的整个过程。
在本课中,我们将
- 概述从头到尾构建 超图 的整个过程
托管式联邦工作流程
托管式联邦 是一种维护 超图 的方法。使用 托管式联邦,对您的 超图架构 的更新由 GraphOS 和架构注册表处理,所有这些都保证了 GraphOS 路由器 零停机时间 - 我们稍后会讲到。
从高层次看,托管式联邦 工作流程看起来像这样:
- 后端开发人员设计和构建他们的 子图。
- 某人将在 GraphOS Studio 中创建一个新的 超图。
- 后端开发人员将他们的 子图架构 发布到架构注册表。
- 架构注册表会自动将 子图架构 组合到一个 超图架构 中,并通过 Apollo 上行链路提供。
- 该 路由器 会自动定期轮询上行链路,以查看是否有新的 超图架构 版本。
让我们更仔细地看看这些步骤。
步骤 1:团队构建他们的子图
正如我们已经看到的,当使用架构优先方法时,前端和后端团队首先要就他们的 超图 将包含的类型和 字段 达成一致。然后,我们转向后端,决定如何将这些类型和字段分配到多个 子图 中。
有了这些,后端团队就可以独立地构建他们的 子图服务器,包括架构、解析器 和 数据源。
步骤 2:在 GraphOS Studio 中创建一个新的超图
接下来,需要有人在 Studio 中创建一个新的 超图,这个超图将被此应用程序的所有 子图 使用。只需要一个人完成这一步。
步骤 3:发布子图
当我们对我们的 子图 感到满意时,我们将使用 Rover CLI 将每个子图的架构发布到架构注册表。架构注册表是一个 Apollo 托管的版本控制系统,它使我们能够跟踪架构随时间的变化。
步骤 4:组合超图架构
当架构注册表收到新的或更新的 子图架构 版本时,它会启动一个称为 组合 的过程。架构注册表会尝试将来自注册 子图 的所有架构组合到一个单一的 超图架构 中。太酷了!
如果 组合 失败,架构注册表会在 Studio 中显示错误,并且过程到此结束。不用担心:我们可以使用错误消息来修复我们 子图 中的问题,然后尝试使用 Rover 再次发布子图。
如果 组合 成功并且没有验证错误,架构注册表会生成一个 超图架构。
架构注册表会自动将 超图架构 发送到 Studio 中一个名为 Apollo 上行链路的内部服务。上行链路是一个服务器,它存储每个图的最新超图架构。
步骤 5:路由器轮询上行链路获取最新超图架构
接下来,我们需要为 路由器 创建另一个服务器,并将它连接到步骤 2 中在 Studio 中创建的 超图。
该 路由器 会自动定期轮询上行链路,以查看是否有新的 超图架构 版本。
大多数情况下,路由器 会发现上行链路中存储的 超图架构 版本与它正在使用的版本相同。在这种情况下,什么都不会改变。
但是,如果 路由器 发现上行链路包含一个 新 版本的 超图架构,该 路由器 会自动更新以使用新版本 - 无需重新启动服务器,也不会有停机时间!
现在,任何与 路由器 通信的客户端都能够引用和 查询 更新后的架构。但让我们回到这里。
以下是包含 超图 的完整 托管式联邦 工作流程:
练习
将项目从该框中拖到上面的空白处
组合
Apollo 上行链路
路由器
托管联合
解析器
子图
超级图模式
构建
版本控制
数据源
主要收获
- 在创建或更新 子图模式后,开发人员使用 Rover CLI 来发布 子图模式 到 Apollo 模式注册表。
- Apollo 模式注册表 组合 了 子图模式 为 超级图模式,路由器 使用它来解析传入的客户端请求。
- 通过 托管联合,对 路由器 的模式更新由 GraphOS 管理,并且零停机时间发生。
下一步
太棒了,我们已经了解了我们构建的 子图 将如何融入我们的联合架构。我们准备回到 FlyBy 并应用我们学到的知识。
接下来,我们将使用 Rover CLI 来发布我们的 子图模式。
分享您对本课的疑问和意见
您的反馈有助于我们改进!如果您卡住或感到困惑,请告诉我们,我们会帮助您。所有评论都是公开的,必须遵守 Apollo 行为准则。请注意,已解决或已处理的评论可能会被删除。
您需要一个 GitHub 帐户才能在下面发布。没有帐户? 改为在我们 Odyssey 论坛上发布。