生产准备清单
使用此清单在您的图处理生产流量之前识别潜在的差距
我们建议您阅读此清单,并在您的超级图开始处理生产流量之前识别团队的关键功能。supergraph开始处理生产流量。
GraphOS Studio
GraphOS 路由器
- 确保您已正确配置托管联邦和GraphOS 架构使用情况报告。
- 为了安全,关闭所有生产路由器的 introspection(默认情况下,路由器关闭introspection,但请确保您没有使用
--dev
模式)。- 您可以从 GraphOS 查看和获取您的 GraphQL 模式 并运行 操作。
- 配置 路由流量整形 功能:
- 设置请求和 子图 级别的超时和速率限制
- 去重 子图 请求
- 使用 APQ 与 子图 进行通信
- 启用 操作限制 以阻止大型和恶意的请求
- 通过 OpenTelemetry 或 Prometheus 配置额外的 跟踪、指标和日志。
- 启用 操作 和 查询计划 的 分布式缓存
- 可选地,启用任何对您的 GraphOS 路由器 部署认为至关重要的其他功能
子图/服务器
- 出于安全考虑, 关闭所有生产 GraphQL 子图 的自省
- 您还可以从 GraphOS 获取您的 GraphQL 模式 并从 GraphOS Studio Explorer 运行操作
- 请确保您已将
rover subgraph check
和rover subgraph publish
集成到您的 CI/CD 管道中。 - 如果您的 子图服务器 被列为与
FEDERATED TRACING
兼容,请确保已经启用了 联邦跟踪,并且可以在 Apollo Studio 中预期地查看操作指标- 通过
fieldLevelInstrumentation
启用 分数跟踪抽样 以减少跟踪所造成的性能影响
- 通过
- 确保您已对您的图进行了负载测试。
- 测试负载应代表您当前流量(在流量量和实际操作方面)。
- 为了调查性能问题,使用 Apollo Studio 识别哪些操作运行缓慢。
- 查看解析器执行时间,以确定执行缓慢的区域。
- 尽可能避免在单个解析器中对多个数据源进行多次调用。
- 理解查询计划执行以帮助理解运行缓慢的操作,并优化您的supergraph以避免它们。
- 考虑添加缓存层。
- Apollo Server支持开箱即用的自动持久查询 (APQ)。
- 如果使用Apollo Server,请确保您在生产中使用分布式缓存系统为 APQ 进行缓存,以避免服务器实例间的缓存不一致。
- 可选地使用
@cacheControl
指令来启用您的 CDN 使用Cache-Control头部缓存 APQ GET 请求。
- 可选地添加完整响应缓存以提高性能。
- Apollo Server支持开箱即用的自动持久查询 (APQ)。
客户端
- 确保您的客户端通过名称和版本进行标识。
- 如果您正在使用Apollo Client库,您可以将客户端名称和版本添加到构造函数中。
- 例如,React客户端使用构造函数选项中的name和version属性。
- 如果您正在使用第三方GraphQL客户端,在每个请求中对
apollographql-client-name
和apollographql-client-version
HTTP头部进行设置,以标识您的客户端。 - 有关在网关中强制实施客户端识别的示例,请参阅此技术笔记(客户端ID强制执行)。
- 考虑添加缓存层。
- 启用 持久查询以及/或自动持久查询(APQ) 用于请求大小节省。
- 启用和配置客户端 标准化缓存