资源投射
控制面会将已保存的资源变更发布到连接该环境的网关。每个网关都会验证新修订版本,并将接受的配置应用于新请求。发布是异步的,因此各网关实例可能会暂时报告不同的修订版本。
控制台或 API 返回成功,只能确认控制面接受了变更。要验证变更已生效,请依次追踪控制面修订版本、网关快照和实时请求。
资源作用域
资源所有权决定哪些环境会接收资源。资源的挂载、引用或条件进一步决定哪些请求会使用它。
| 资源类别 | 所有权与投射 | 请求作用域 |
|---|---|---|
| 模型和调用方 API Key | 属于一个环境,投射到连接该环境的所有网关。 | 请求的模型和解析出的调用方 API Key 决定适用条目。 |
| 模型服务提供方密钥 | 属于组织,仅投射到允许使用它们的环境。 | 模型引用模型服务提供方密钥;透传路由注入上游凭证时也会引用它。 |
| MCP 服务器和基于 OpenAPI 的服务器 | 属于组织。已批准的服务器仅投射到允许使用它们的环境;基于 OpenAPI 的服务器是 type: openapi 的 MCP 服务器。 | 调用方工具授权和适用的安全护栏挂载控制访问与检查。 |
| A2A Agent | 属于组织,仅投射到允许使用它们的环境。 | 调用方 API Key 必须具有该 Agent 的访问权限。 |
| 安全护栏及其挂载 | 属于一个环境,一起投射。未挂载的安全护栏不会执行。 | 挂载将安全护栏的作用域限定为环境、模型、调用方 API Key、团队、MCP 服务器或透传路由。 |
| 缓存策略 | 属于一个环境,投射到该环境的网关。 | 策略可以覆盖整个环境、某个模型别名或某个调用方 API Key。 |
| 限流策略 | 属于一个环境,投射到该环境的网关。 | 条件可以按团队、成员、调用方 API Key、模型、模型名称或服务提供方选择流量。 |
| OIDC 提供方与声明映射 | 属于一个环境,投射到该环境的网关。 | 对 JWT 调用方进行认证,并将符合条件的声明解析为调用方 API Key。 |
| 透传路由 | 属于一个环境,投射到该环境的网关。 | 路由匹配和调用方 API Key 的路由授权决定访问权限。 |
| 可观测性导出器 | 属于一个环境,投射到该环境的网关。 | 每个已启用的导出器会根据自身类型和内容设置接收符合条件的网关遥测数据。 |
| MCP 环境访问与认证设置 | 属于一个环境,投射到该环境的网关。 | 环境策略定义默认的工具访问层。认证设置定义 /mcp 的 API Key、OAuth 或匿名访问行为。 |
| MCP 团队访问策略 | 通过团队归属于组织,投射到该组织的所有环境。 | 团队策略适用于绑定该团队的调用方 API Key,并与环境级和密钥级访问层取交集。 |
| 阻断型预算和预算执行模式 | 预算会投射到它适用的每个环境:组织、团队、成员、团队中每个成员和标签预算投射到组织的每个环境,环境预算投射到该环境,调用方 API Key 预算投射到该密钥所在环境,服务提供方密钥预算投射到该服务提供方密钥允许的每个环境。仅告警预算不会投射。严格预算执行模式投射到组织的每个环境。 | 网关在本地检查已投射的预算,并在中断期间继续执行。参见控制面中断期间的行为。 |
修改组织级资源允许使用的环境,会从相应快照中添加或移除该资源。写入成功只能确认控制面接受了资源及其目标环境,不能确认所有网关都已接收。
验证投射的变更
按顺序检查控制面、网关和实时请求。
1. 比较已发布和已应用的修订版本
设置控制面 API URL、具有 read 权限范围的 Admin Token 和环境 ID:
# AISIX_CP 包含 /api,末尾不带斜杠
# 本地 AISIX Enterprise 快速入门使用 http://localhost:8080/api
export AISIX_CP="YOUR_AISIX_CONTROL_PLANE_API_URL"
export AISIX_TOKEN="YOUR_ADMIN_TOKEN"
export ENV_ID="YOUR_ENVIRONMENT_ID"
比较 store_revision 与各节点的 applied_revision:
curl -sS "${AISIX_CP}/environments/${ENV_ID}/dp_nodes" \
-H "Authorization: Bearer ${AISIX_TOKEN}" \
| jq '{
store_revision,
nodes: [
.data[] |
{
hostname,
dp_version,
last_heartbeat_at,
applied_revision,
config_hash,
partially_compatible_resources
}
]
}'
当节点的 applied_revision 大于或等于 store_revision 时,该节点即为最新状态。config_hash 相同表示各网关实例接受了相同的配置。
partially_compatible_resources 会列出节点在提供服务时忽略了自身无法识别字段的资源。如果要求每个字段都必须生效,请确保该列表为空或未返回。
控制台也会显示相同的网关上报信息。环境概览会区分被忽略的字段和整 个资源被拒绝的情况,数据面 则显示各节点的兼容性状态与详情。运行版本低于控制面支持的最低版本(1.6.0)的节点会标记为 版本不受支持,并提示将其升级;响应以 support_floor 给出该版本,并为这类节点返回 below_support_floor: true。保存时不会针对这类节点做检查,它可能无法加载新保存的配置。即使最初保存配置时没有返回警告,也要检查这些运行时信号,因为之后可能有网关注册或回滚。
当修订跟踪不可用,或网关尚未上报相关字段时,控制面可能会省略 store_revision、applied_revision 或 config_hash。此时,请使用下一步中的网关状态端点。心跳按周期上报,因此网关的直接状态也可能比控制面视图更新。
如果网关没有最新心跳,请先排查其管理连接,再检查资源投射。请参阅连接 AISIX 网关。