Apollo Uplink
获取您的托管路由器的配置
当使用托管联邦,您的supergraph的路由器router默认会定期轮询名为Apollo Uplink的端点,以获取其最新的supergraph schema和其他配置:
如果您使用的是企业功能,Uplink 也会提供您路由器的license
为了最大化正常运行时间,Uplink 会同时在两个端点托管,一个在GCP上,一个在AWS上
- GCP
https://uplink.api.apollographql.com/
- AWS:
https://aws.uplink.api.apollographql.com/
默认轮询行为
GraphOS Router
如果您使用的是GraphOS Router并与托管联邦一起使用,默认情况下它会每十秒轮询Uplink。每次轮询都会以轮询方式循环遍历Uplink端点。
每当一次轮询请求超时或其他失败(默认超时时间为三十秒),路由器将在下一个间隔继续按常规轮询。在此期间,它继续使用其最近成功获得的配置。
@apollo/gateway
如果你使用@apollo/gateway
库并结合管理式联邦,则默认情况下你的网关每十秒轮询一次Uplink。每次这样做时,它会以轮询的方式遍历Uplink端点。
ⓘ 注意
在v0.45.0之前版本的@apollo/gateway
不支持多个Uplink端点,并且默认使用GCP端点。
每当轮询请求失败时,网关会重试该请求(同样采用轮询方式)。它将继续重试,直到请求成功,或者直到达到定义的最大重试次数。
即使某个特定的轮询请求的所有重试都失败了,网关仍然会在下一个间隔按常规轮询(如果需要则进行自己的重试)。在此期间,网关继续使用其最近成功获得的配置。
配置轮询行为
你可以配置路由器
- 你的路由器轮询的间隔(最小为十秒)
- 你的路由器使用的Uplink URL列表
- 每次轮询请求的请求超时(仅限GraphOS Router)
- 对于
@apollo/gateway
,这个值始终为三十秒。
- 对于
- 对于失败轮询请求执行的重试次数(仅限
@apollo/gateway
)- GraphOS Router不会对失败的轮询请求执行重试。它将继续在下一个间隔进行轮询。
GraphOS Router
你通过在运行路由器可执行文件时提供某些命令行选项来配置GraphOS Router的Uplink轮询。所有这些选项都以--apollo-uplink
开头。
@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
(这也是默认值)。
Uplink URLs(高级)
ⓘ 注意
大多数网关永远不需要配置它们的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大小限制
Supergraph schemas提供的Uplink不能超过6MB的大小。绝大多数的supergraph schemas都远低于这个限制。
如果您的 supergraph 模式 大于6MB,您可以为您的 构建状态webhook 进行设置。每当您收到成功 supergraph 模式 组成的通知时,您的webhook可以调用最新的supergraph模式。。"通过使用Rover CLI 获取。
绕过Uplink
此功能处于预览阶段 预览。您的疑问和反馈非常宝贵——不要犹豫,与您的Apollo联系人取得联系.
在高级使用案例中,您可能希望您的 router 使用不同于Uplink提供的最新验证模式的 supergraph 模式。例如,对于同一 图变体,您有不同的部署环境,并且希望使用除 router 以外的所有 managed federation 功能。
在这种情况下,您可以遵循以下工作流程:不同于从Uplink检索supergraph模式,使用 GraphOS平台API 获取特定 GraphOS启动 的supergraph模式。工作流程总结如下:
- 当部署您的 图 时,使用GraphOS平台API批量发布您的 子图。
- 平台API会触发 启动(以及可能的下游启动,如 合约)并返回启动ID(如果需要,还包括下游启动ID)。
- 轮询启动状态,直到启动(包括所有下游启动)成功完成。
- 通过向平台API传入启动ID调用,检索成功启动的 supergraph 模式。
- 通过部署并使用
--supergraph
或-s
选项来将超图模式设置为您的routers。
例如,查看如何使用操作调用平台API时,请参阅蓝绿部署示例。