概览
我们来 盛装我们的变更,然后将它们发布到 GraphOS! 🍽️
在本课中,我们将
- 发布子图对 GraphOS 的变更
- 了解跟踪指标以及如何在 Studio 中分析它们
- 了解如何启用 子图 源
发布到 GraphOS
以下是如何将我们的本地变更推送到生产环境
本地 运行架构检查,以验证我们的变更不会损害当前功能。
将 子图 代码库变更合并到 GitHub。
将 子图服务器 的运行时代码部署到 Railway(这样做是自动完成的,Railway 会监听对我们的 GitHub 主分支的变更)。
将 子图模式发布到 GraphOS。这会触发 启动(启动成功后会合成一个新的 超图模式由 路由器使用)。
如果你完成GraphOS:安全 API 传递,你将熟悉这个流程,你甚至可能已经设置了 CI/CD 以处理所有事情 😎 继续吧,按照流程操作!如果你需要复习,请转到本课程的 课程 7:字段见解,然后参阅“部署我们的更改”部分。
如果你还没有完成该课程,不用担心!如果你想详细了解我们将运行的每个命令,以及如何将该流程集成到 CI/CD 工作流中,那么该课程会深入探讨所有详细信息。现在,我们将快速演示给你,并使用手动命令。
首先,让我们运行 模式检查。在新终端中,运行以下命令。将下面的
<GRAPH_REF>
替换成你自己的!rover subgraph check <GRAPH_REF> \--schema ./schema.graphql \--name recipes我们应该会收到一条消息,说已添加了一个新的 字段(
cookware
字段),并且所有内容都通过了检查。万岁!我们不会对 超图进行任何重大更改。接下来,让我们添加和提交我们的更改。
git checkout -b feature/recipe-cookwaregit add .git commit -m "Add Recipe.cookware to subgraph."接下来,我们将变更推送至 GitHub,直接推送到
main
分支。git push -u origin main这将触发 Railway 中的部署。转到你在 Railway 上的应用,并监控其进度。准备就绪后,返回 GitHub。
代码库变更已部署,因此让我们确保我们的架构在 GraphOS 中是最新的。我们将运行
rover subgraph publish
命令。同样,将下面的<GRAPH_REF
> 替换为你自己的!rover subgraph publish <GRAPH_REF> \--schema ./schema.graphql \--name recipes这会触发 启动!
在浏览器中转到 Studio 并导航到 启动 页面。我们等待 启动 显示绿色对勾标记和“部署済み”标签后,再继续下一步。
https://studio.apollographql.com/
Studio 中的子图形变更
让我们看看我们的变更。转到 Explorer,以便我们可以再次运行我们梦想的 查询,这次在生产环境中运行。
query GetRecipeAndCookwareInformation {recipe(id: "rec3j49yFpY2uRNM1") {namedescriptioningredients {text}instructionscookware {namedescriptioncleaningInstructions}}}
很好!在此之前,我们曾在本地使用 rover dev
使其正常工作,因此我们对变更比较有信心,但现在我们可以 100% 验证它!
我们来趁机查看一些其他很酷的东西。
在左侧的 文档 面板中,单击齿轮图标以访问设置。
向下滚动至 编辑器提示 部分并将其切换为开。选择 子图形源。现在我们可以看出每个 子图形 每个 字段 来自何处,以及与我们的 查询 处于同一行。
我们来窥探一下查询计划为这个特定的操作创建的路由器。单击响应旁边的箭头,然后选择查询计划预览。
我们可以把它看作一个图表,或者在选择图标时将其看作文本来“以文本形式显示计划”。不要对查询计划语法担心太多 —路由器知道发生了什么!不过,当我们开始涉及更多子图以及需要优化的更复杂查询时,这会很有用。
在我们继续研究跟踪指标之前,我们给我们的超图发送一些操作。再运行这个梦想查询几次!
跟踪指标
一个跟踪显示单个GraphQL 操作从头到尾的执行情况。它包括该操作中解析的每个字段的时间和错误信息细目。
在超图中,我们有联合跟踪,它们由我们的子图提供的时间和错误信息构建。
我们的 recipes
和 kitchenware
子图都使用 @apollo/subgraph
库,所以这些联邦跟踪默认就启用了,我们不需要做任何额外的事情!
注意:如果你使用的是另一个 子图 库,你可以 参阅阿波罗文档中的此列表,以确定它是否支持联邦跟踪以及如何启用它。
有了跟踪,我们可以开始了解哪些 子图 或 字段需要很长时间才能解决,这有助于我们确定可以改进的地方!
要访问跟踪,请访问 Studio 中的 操作 页面。从下拉菜单中选择一个 操作。
当我们选择一个特定的 操作时,我们还可以了解有关此操作使用情况的更多特定详细信息,以及它的签名(即 查询 的形状)。我们可以看到请求速率(已发出的请求数)和一段时间内的请求延迟(每个请求需要多长时间)。
让我们看看 跟踪 选项卡。
GraphOS 每个延迟段保存一个示例跟踪,因此我们可以从图表中选择一个条形来分析该特定跟踪,并观察该特定 操作 的时间详细信息。
相当方便!对于每个 操作,我们可以深入探究每个 子图解决其 字段所需时间。根据这些信息,我们可以根据需要进行调整和改进!
实践
关键外卖
- 配合使用
rover dev
进行本地开发,并与 模式检查结合使用,有助于我们在将更改推送到生产环境中的 超级图中进行验证和测试。 - 联邦跟踪提供每个字段在特定操作中按子图提供的时间和错误信息分解。
结论
你已经到头了,做得很好!
你已经获得了成功地成长超图的所有要素。在本课程中,我们学习了如何在 Studio 只需点击几下按钮即可快速添加子图。我们实践了本地开发,并使用rover dev
在本地运行路由器:一个探索和创造新功能的游乐场。我们涉足了联合的世界,了解了实体是什么以及如何使用它们来连接子图之间的数据。最后,我们将更改发布到生产环境,向全世界推出了 Poetic Plates 的改进版本 – 现在提供厨具! 🍳
接下来是什么?我们正在准备更多的东西来帮助你在GraphOS的旅程中。
同时,何不深入了解Apollo Federation和我们的 Voyage 系列?你可以从Voyage I:从第一天起联合开始。
下次再见!
分享你对本课程的问题和评论
本课程当前为
你需要一个 GitHub 帐户才能在下面发帖。没有一个? 转而在我们的 Odyssey 论坛发帖。