4. 运行路由器
10m

概述

我们已经完成了从 的旅程中的两个步骤。我们在 Studio 中集中了一个地方来存放有关我们图的所有详细信息——但我们仍然缺少 路由 我们 的不同部分到不同的服务。接下来:让我们让我们的 运行起来!

在本课中,我们将

  • 在本地设置
  • 将我们的 连接到
  • 将我们的第一个 发送到我们的
  • 通过 提供的 指标来探索 洞察

GraphOS 路由器

GraphOS 路由器是一个高性能图路由器,它以可执行二进制文件的形式提供,您只需几个步骤即可配置它。

安装路由器

打开一个新的终端窗口,并导航到router 目录。

到目前为止,我们在这里拥有 .env 文件,其中包含我们的环境变量(APOLLO_GRAPH_REFAPOLLO_KEY),以及一个名为 router-config.yaml 的文件。这是一个配置文件,它使我们能够自定义 的运行方式。

📦 router
┣ 📄 router-config.yaml
┗ 📄 .env

我们将通过在终端中运行安装命令来下载

router
curl -sSL https://router.apollo.dev/download/nix/v1.46.0 | sh

我们将看到一些安装输出,然后是关于如何启动 的说明。

You can now run the Apollo Router using './router'

注意:访问官方文档以探索 下载路由器的其他方法

现在,当我们检查 目录的内容时,我们将看到我们有一个新的文件,也称为路由器!

📦 router
┣ 📄 router-config.yaml
┣ 📄 .env
┗ 📄 router

路由器配置

让我们看一下 router-config.yaml 文件。此文件使我们能够自定义 的行为。

router-config.yaml
supergraph:
listen: 127.0.0.1:5000
include_subgraph_errors:
all: true
telemetry:
instrumentation:
spans:
mode: spec_compliant

现在,我们设置了一些选项,包括 应该运行的端口(在 supergraph.listen 属性下)。我们还配置了一个设置来包含所有冒泡的 错误。默认情况下, 会在其响应中屏蔽子图错误的详细信息,我们可能会看到类似于 "Subgraph errors redacted" 的错误消息。在生产环境中,此属性通常设置为 false,但如果您在按照本教程进行操作时遇到任何问题,它将很有帮助。

最后,我们有一些遥测配置,它减少了我们在终端输出中看到的错误类型。

注意:要了解有关配置 可用其他选项的更多信息,查看文档

运行路由器

接下来:我们将告诉 哪个 要连接,以及如何对其进行身份验证。

为此,我们将使用从 创建过程中复制的这两个特定数据:我们的 APOLLO_KEYAPOLLO_GRAPH_REF 值!

router 目录中的终端运行以下命令,用您的 .env. 中的值替换占位符 <APOLLO_KEY><APOLLO_GRAPH_REF>

终端已打开到路由器目录
APOLLO_KEY=<APOLLO_KEY> APOLLO_GRAPH_REF=<APOLLO_GRAPH_REF> ./router --config router-config.yaml

请注意我们包含在命令中的 --config 标志?这告诉 使用我们在 router-config.yaml 中包含的设置。

我们将看到几行 输出,最后是一条消息,表明我们的路由器正在端口 5000 上运行,准备接收查询!

让我们复制此地址。

http://127.0.0.1:5000/

这是我们 的入口:如果这是一个生产 URL,那么任何 我们模式的任何部分的人都会将他们的请求发送到这里!在本课程中,我们将让我们的 在本地运行在端口 5000 上——所以让我们将此详细信息添加到 中!

将路由器连接到 GraphOS

切换回 Studio,点击侧边栏中的 README 选项卡。接下来,点击页面顶部的连接设置链接。

studio.apollographql.com

The graph README page, highlighting that the graph does not yet have an endpoint

我们将粘贴我们复制的 地址(http://127.0.0.1:5000) 作为端点,然后保存。

studio.apollographql.com

The connection settings modal, highlighting the input where we can paste our endpoint

测试我们的模式

让我们将一个 放在一起,它检索我们精选房源的标题和描述。从侧边栏中选择 资源管理器 选项卡,然后粘贴以下

query GetFeaturedListings {
featuredListings {
id
title
description
}
}

现在让我们运行此 ,然后......太棒了!我们有数据了!

虽然我们的 listings 在本地运行,但我们已经为生产做好了所有准备!

为我们提供了可观察性工具来监控我们的 的运行状况和性能。这些工具有助于揭示超级图使用方式的模式,这有助于我们不断改进它。我们现在仍然处于教程阶段,因此没有 真实 的生产流量进入我们的 ,但我们仍然可以查看超级图的见解。

操作指标

让我们导航到 见解 页面。

studio.apollographql.com

The Insights page in Studio

左侧第一个面板中的 操作 选项卡提供了一个 请求速率、服务时间和错误百分比的概览,包括这些指标中的特定操作,这些操作可能值得深入分析。

我们建议客户端明确地为每个 命名,以便我们可以轻松地在指标中查看它们。

我们还可以过滤以选择特定 以查看有关其使用情况的更多详细信息,以及其签名,即 的形状。我们可以看到已发出的请求数量以及每个请求在一段时间内的持续时间。

studio.apollographql.com

The Insights page in Studio, filtered to show metrics for a specific operation: GetFeaturedListings

字段指标

接下来,让我们看看 指标。转到 字段 选项卡。

对于每个 ,我们可以探索更具体的数据点,包括包含该字段的请求数量。

studio.apollographql.com

The Insights page in Studio, on the Fields tab

我们可以使用 指标来监控我们 类型和字段的运行状况和使用情况,并根据它们的性能和客户端的使用方式来确定我们可以从哪些方面开始改进。由于我们可以看到客户端使用哪些字段以及使用频率,因此这些指标还让我们知道何时可以安全地从图中删除未使用的字段。

练习

GraphOS 提供以下哪些操作指标?

关键要点

  • 指标提供了特定时间段内或特定操作的 操作请求速率、服务时间和错误百分比的概览。
  • 指标包括请求 指标,该指标列出了给定时间段内包含特定字段的操作数量。

下一步

我们已经查看了指标,并准备好让我们的 发展。在下节课中,我们将以 全新 的形式介绍一个全新的领域,这个领域将全部围绕 评论

上一个

分享您有关本课的问题和评论

本课程目前正在

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

您需要一个 GitHub 帐户才能在下方发布。没有吗? 请改为在我们的奥德赛论坛中发布。