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
┣ 📄 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 目录中的终端,运行以下命令,用你的值替换占位符 <APOLLO_KEY><APOLLO_GRAPH_REF>,这些值来自 .env.

终端已打开至路由器目录
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 帐户才能在下方发布。没有帐户吗? 改为在 Odyssey 论坛中发布。