概述
我们已经完成了从 子图 到 超级图 的旅程中的两个步骤。 我们已经在 Studio 中集中了一个地方,用于存放有关我们的图的所有详细信息,但我们仍然缺少 路由 我们 查询 的不同部分到不同的服务的部件。 接下来:让我们让我们的 路由器 运行起来!
在本课中,我们将
- 在本地设置 GraphOS 路由器
- 将我们的 路由器 连接到 GraphOS
- 向我们的 超级图 发送我们的第一个 查询
- 通过 GraphOS 提供的 操作 和 字段 指标来探索 超级图 的见解
GraphOS 路由器
GraphOS 路由器是一个高性能图路由器,它以可执行二进制文件的形式提供,你只需几个步骤即可配置。
安装路由器
打开一个新的终端窗口,并导航到router
目录。
到目前为止,我们在这里拥有 .env
文件,其中包含我们的环境变量 (APOLLO_GRAPH_REF
和 APOLLO_KEY
),以及一个名为 router-config.yaml
的文件。 这是一个配置文件,它让我们可以自定义 路由器 运行方式的某些方面。
📦 router┣ 📄 router-config.yaml┗ 📄 .env
我们将通过在终端中运行安装命令来下载 路由器
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
文件的内容。 此文件使我们能够自定义 路由器 的行为。
supergraph:listen: 127.0.0.1:5000include_subgraph_errors:all: truetelemetry:instrumentation:spans:mode: spec_compliant
现在,我们设置了一些选项,包括 路由器 应该运行的端口 (在 supergraph.listen
属性下)。 我们还配置了一个设置,以包含所有冒泡上来的 子图 错误。 默认情况下,路由器 会在其响应中隐藏子图错误的详细信息,我们可能会看到类似 "Subgraph errors redacted"
的错误消息。 在生产环境中,此属性通常设置为 false,但如果你在按照本教程操作时遇到任何问题,它会很有帮助。
最后,我们有一些遥测配置,它可以减少我们在终端输出中看到的错误类型。
注意:要详细了解配置 GraphOS 路由器 可用的其他选项,查看文档。
运行路由器
接下来:我们将告诉 路由器 哪个 超级图 要连接到,以及如何对其进行身份验证。
为此,我们将使用从 超级图 创建过程中复制的两个特定数据:我们的 APOLLO_KEY
和 APOLLO_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 中!
将路由器连接到 GraphOS
返回 Studio,点击侧边栏中的 README 选项卡。 接下来,点击页面顶部的连接设置链接。
我们将粘贴我们复制的 路由器 地址 (http://127.0.0.1:5000
) 作为端点,然后保存。
测试我们的模式
让我们创建一个 查询 来检索我们精选列表的标题和描述。 从侧边栏中选择 资源管理器 选项卡,然后粘贴以下 操作。
query GetFeaturedListings {featuredListings {idtitledescription}}
现在让我们运行这个 查询,然后... 太棒了! 我们获得了数据!
虽然我们的 路由器 和 listings
子图 在本地运行,但我们已经为生产做好了所有准备!
GraphOS 为我们提供了可观察性工具来监控我们 超级图 的运行状况和性能。这些工具有助于揭示我们超级图的使用模式,这有助于我们不断改进它。我们仍然处于教程阶段,因此没有 真实 的生产流量发送到我们的 超级图,但我们仍然可以查看我们的超级图洞察。
操作指标
让我们导航到 洞察 页面。
左侧第一个面板中的 操作 选项卡提供了 操作 请求率、服务时间和错误百分比的概述,包括每个值得深入研究的特定操作。
我们建议客户端明确命名他们发送到 超级图 的每个 GraphQL 操作,以便我们可以轻松地在我们的指标中查看它们。
我们还可以筛选以选择特定的 操作,以查看有关其使用情况的更多详细信息,以及其签名,即 查询 的形状。我们可以看到已发出的请求数量以及每个请求随时间推移所花费的时间。
字段指标
接下来,让我们看看 字段 指标。转到 字段 选项卡。
对于每个 字段,我们可以探索更具体的指标,包括包含该字段的请求数量。
我们可以使用 操作 和 字段 指标来监控我们 超级图 的类型和字段的运行状况和使用情况,并根据其执行情况和客户端的使用情况确定我们可以在哪些方面进行改进。因为我们可以看到客户端使用哪些字段以及使用频率,所以这些指标也让我们知道何时可以安全地从图形中删除未使用的字段。
练习
主要要点
- 操作 指标提供了给定时间段内或针对特定操作的操作请求率、服务时间和错误百分比的概述。
- 字段 指标包括请求 操作 指标,该指标列出了给定时间段内包含特定字段的操作数量。
接下来
我们已经回顾了我们的指标,我们已准备好让我们的 超级图 增长。在下一课中,我们将以 全新 的 子图 的形式介绍一个全新的领域,它与 评论 有关!
分享您对本课的疑问和评论
本课程目前处于
您需要一个 GitHub 帐户才能在下方发布。没有帐户吗? 改为在 Odyssey 论坛中发布。