从10月8日至10日加入我们,在纽约市学习有关 GraphQL 联邦和 API 平台工程的最新技巧、趋势和新闻。加入我们参加2024年纽约市的 GraphQL 峰会
文档
免费开始

Apollo Uplink

获取您的托管路由器的配置


当使用托管联邦,您的的路由器默认会定期轮询名为Apollo Uplink的端点,以获取其最新的和其他配置:

Apollo GraphOS
Your infrastructure
Publishes
schema
Publishes
schema
Updates
config
Polls for config changes
Schema Registry
Uplink
Products subgraph
Reviews subgraph
Router

如果您使用的是企业功能,Uplink 也会提供您路由器的

为了最大化正常运行时间,Uplink 会同时在两个端点托管,一个在GCP上,一个在AWS上

  • GCPhttps://uplink.api.apollographql.com/
  • AWS: https://aws.uplink.api.apollographql.com/

默认轮询行为

GraphOS Router

如果您使用的是并与一起使用,默认情况下它会每十秒轮询Uplink。每次轮询都会以轮询方式循环遍历Uplink端点。

每当一次轮询请求超时或其他失败(默认超时时间为三十秒),路由器将在下一个间隔继续按常规轮询。在此期间,它继续使用其最近成功获得的配置。

@apollo/gateway

如果你使用@apollo/gateway库并结合管理式联邦,则默认情况下你的网关每十秒轮询一次Uplink。每次这样做时,它会以轮询的方式遍历Uplink端点。

注意

在v0.45.0之前版本的@apollo/gateway不支持多个Uplink端点,并且默认使用GCP端点。

每当轮询请求失败时,网关会重试该请求(同样采用轮询方式)。它将继续重试,直到请求成功,或者直到达到定义的最大重试次数。

即使某个特定的轮询请求的所有重试都失败了,网关仍然会在下一个间隔按常规轮询(如果需要则进行自己的重试)。在此期间,网关继续使用其最近成功获得的配置。

配置轮询行为

你可以配置路由器 的Uplink轮询行为以下方面:

  • 你的路由器轮询的间隔(最小为十秒)
  • 你的路由器使用的Uplink URL列表
  • 每次轮询请求的请求超时(仅限GraphOS Router)
    • 对于@apollo/gateway,这个值始终为三十秒。
  • 对于失败轮询请求执行的重试次数(仅限@apollo/gateway
    • GraphOS Router不会对失败的轮询请求执行重试。它将继续在下一个间隔进行轮询。

GraphOS Router

你通过在运行路由器可执行文件时提供某些命令行选项来配置GraphOS Router的Uplink轮询。所有这些选项都以--apollo-uplink开头。

查看GraphOS Router文档

@apollo/gateway

重试限制

你可以这样配置网关重试单个失败轮询请求的次数

const { ApolloGateway } = require('@apollo/gateway');
// ...
const gateway = new ApolloGateway({
uplinkMaxRetries: 2
});

默认情况下,网关会对单个轮询请求进行多次重试,次数为Uplink URL数量(通常是6次)的3倍。

即使特定轮询请求全部重试失败,网关也会在下一个间隔中继续常规轮询(如果需要,会使用自己的重试集)。在此同时,网关继续使用其最近获取的配置。

轮询间隔

您可以通过以下方式配置网关轮询Apollo Uplink的间隔:

const { ApolloGateway } = require('@apollo/gateway');
// ...
const gateway = new ApolloGateway({
pollIntervalInMs: 15000 // 15 seconds
});

选项pollIntervalInMs指定轮询间隔的毫秒数。此值必须至少为10000(这也是默认值)。

注意

大多数网关永远不需要配置它们的Apollo Uplink URL列表。只有在被建议这样做的情况下才查阅此部分。

您可以为网关轮询Uplink时使用提供自定义URL列表。您可以在ApolloGateway构造函数或作为环境变量提供此列表。

ApolloGateway 构造函数

像这样在ApolloGateway构造函数中提供Uplink URL的自定义列表:

const { ApolloGateway } = require('@apollo/gateway');
// ...
const gateway = new ApolloGateway({
uplinkEndpoints: [
// Omits AWS endpoint
'https://uplink.api.apollographql.com/'
]
});

此示例省略了AWS端点,这意味着它永远不会被轮询。

注意

如果您还通过环境变量提供端点列表,则环境变量具有优先级。

环境变量

您可以在网关的环境中将Uplink URL的逗号分隔列表作为APOLLO_SCHEMA_CONFIG_DELIVERY_ENDPOINT环境变量的值提供:

APOLLO_SCHEMA_CONFIG_DELIVERY_ENDPOINT=https://aws.uplink.api.apollographql.com/,https://uplink.api.apollographql.com/

Schema大小限制

提供的Uplink不能超过6MB的大小。绝大多数的supergraph schemas都远低于这个限制。

如果您的 supergraph 模式 大于6MB,您可以为您的 构建状态webhook 进行设置。每当您收到成功 supergraph 模式 组成的通知时,您的webhook可以调用最新的supergraph模式。。"通过使用Rover CLI 获取。

此功能处于预览阶段 预览。您的疑问和反馈非常宝贵——不要犹豫,与您的Apollo联系人取得联系.

在高级使用案例中,您可能希望您的 router 使用不同于Uplink提供的最新验证模式的 supergraph 模式。例如,对于同一 图变体,您有不同的部署环境,并且希望使用除 router 以外的所有 managed federation 功能。

在这种情况下,您可以遵循以下工作流程:不同于从Uplink检索supergraph模式,使用 GraphOS平台API 获取特定 GraphOS启动 的supergraph模式。工作流程总结如下:

  1. 当部署您的 时,使用GraphOS平台API批量发布您的
    • 平台API会触发 (以及可能的下游启动,如 )并返回启动ID(如果需要,还包括下游启动ID)。
  2. 轮询启动状态,直到启动(包括所有下游启动)成功完成。
  3. 通过向平台API传入启动ID调用,检索成功启动的 supergraph 模式
  4. 通过部署并使用--supergraph-s 选项来将超图模式设置为您的routers

例如,查看如何使用调用平台API时,请参阅蓝绿部署示例

上一页
设置
下一页
联邦模式检查
评分这篇文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,亦称Apollo GraphQL。

隐私政策

公司