5. 托管式联邦 & 超图
3m

概述

我们的 正在本地运行,现在是时候看看它们如何与我们其他 架构相契合了。让我们后退一步,看看使用 ,从头到尾构建超图的整个过程。

在本课中,我们将

  • 概述从头到尾构建 的整个过程

托管式联邦工作流程

托管式联邦 是一种维护 的方法。使用 ,对您的 的更新由 和架构注册表处理,所有这些都保证了 零停机时间 - 我们稍后会讲到。

从高层次看, 工作流程看起来像这样:

  1. 后端开发人员设计和构建他们的
  2. 某人将在 中创建一个新的
  3. 后端开发人员将他们的 发布到架构注册表。
  4. 架构注册表会自动将 组合到一个 超图架构 中,并通过 Apollo 上行链路提供。
  5. 会自动定期轮询上行链路,以查看是否有新的 版本。

让我们更仔细地看看这些步骤。

步骤 1:团队构建他们的子图

正如我们已经看到的,当使用架构优先方法时,前端和后端团队首先要就他们的 将包含的类型和 达成一致。然后,我们转向后端,决定如何将这些类型和字段分配到多个 中。

The schema agreement from earlier, with each field highlighted to show whether it belongs to the locations or reviews subgraph.

有了这些,后端团队就可以独立地构建他们的 ,包括架构、

An illustration showing the first step of the process: backend teams can independently build out their subgraph servers, complete with schemas, resolvers, and data sources.

步骤 2:在 GraphOS Studio 中创建一个新的超图

接下来,需要有人在 Studio 中创建一个新的 ,这个超图将被此应用程序的所有 使用。只需要一个人完成这一步。

Step 2: create a new deployed graph in GraphOS Studio where the subgraphs can be registered

步骤 3:发布子图

当我们对我们的 感到满意时,我们将使用 将每个子图的架构发布到架构注册表。架构注册表是一个 Apollo 托管的版本控制系统,它使我们能够跟踪架构随时间的变化。

Step 3: publish each subgraph's schema to the Apollo schema registry

步骤 4:组合超图架构

当架构注册表收到新的或更新的 版本时,它会启动一个称为 组合 的过程。架构注册表会尝试将来自注册 的所有架构组合到一个单一的 中。太酷了!

Step 4: Composing the supergraph schema

如果 失败,架构注册表会在 Studio 中显示错误,并且过程到此结束。不用担心:我们可以使用错误消息来修复我们 中的问题,然后尝试使用 再次发布子图。

If composition fails, the schema registry displays an error in GraphOS Studio

如果 成功并且没有验证错误,架构注册表会生成一个 超图架构

架构注册表会自动将 发送到 Studio 中一个名为 Apollo 上行链路的内部服务。上行链路是一个服务器,它存储每个图的最新超图架构。

The schema registry automatically sends the supergraph schema to an internal service within Studio called Apollo Uplink

步骤 5:路由器轮询上行链路获取最新超图架构

接下来,我们需要为 创建另一个服务器,并将它连接到步骤 2 中在 Studio 中创建的

会自动定期轮询上行链路,以查看是否有新的 版本。

大多数情况下, 会发现上行链路中存储的 版本与它正在使用的版本相同。在这种情况下,什么都不会改变。

但是,如果 发现上行链路包含一个 版本的 ,该 会自动更新以使用新版本 - 无需重新启动服务器,也不会有停机时间!

Step 5: The router polls Uplink for the latest supergraph schema

现在,任何与 通信的客户端都能够引用和 更新后的架构。但让我们回到这里。

以下是包含 的完整 工作流程:

The full managed federation workflow

练习

托管式联邦过程
每个超图都包含一个或多个 
 
,每个子图都有自己的架构。使用 
 
,这些模式中的每一个都会发布到 Apollo 模式注册表。每当一个子图模式被发布时,模式注册表就会触发一个名为 
 
的过程。如果成功,这个过程将导致创建
 
,然后被超级图的
 
通过定期轮询获取。

将项目从该框中拖到上面的空白处

  • 组合

  • 路由器

  • 托管联合

  • 解析器

  • 子图

  • 超级图模式

  • 构建

  • 版本控制

  • 数据源

主要收获

  • 在创建或更新 后,开发人员使用 Rover CLI 来发布 到 Apollo 模式注册表。
  • Apollo 模式注册表 组合 使用它来解析传入的客户端请求。
  • 通过 ,对 的模式更新由 管理,并且零停机时间发生。

下一步

太棒了,我们已经了解了我们构建的 将如何融入我们的联合架构。我们准备回到 FlyBy 并应用我们学到的知识。

接下来,我们将使用 来发布我们的

上一页

分享您对本课的疑问和意见

您的反馈有助于我们改进!如果您卡住或感到困惑,请告诉我们,我们会帮助您。所有评论都是公开的,必须遵守 Apollo 行为准则。请注意,已解决或已处理的评论可能会被删除。

您需要一个 GitHub 帐户才能在下面发布。没有帐户? 改为在我们 Odyssey 论坛上发布。