跳到主要内容
翻译页面

本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。

控制平面与数据平面

控制平面是管理云资源生命周期和配置的 API 接口面;数据平面是这些资源完成实际工作所经由的接口面。创建 S3 存储桶、调整虚拟机规格或附加 IAM 策略属于控制平面操作。从该存储桶读取对象、由该虚拟机处理请求或在数据仓库中执行 SQL 语句属于数据平面操作。

实践中的区别​

方面控制平面数据平面
目的管理资源(创建、配置、删除)使用资源(读取、写入、执行)
示例(S3)CreateBucket、PutBucketPolicyGetObject、PutObject
示例(Databricks)创建集群或作业运行查询、执行 notebook
典型调用方运维人员、IaC 工具、治理系统应用程序、最终用户
调用量低高
形态统一的 CRUD 生命周期因服务而异的操作

这条边界之所以重要,是因为工具历来沿着它分化。基础设施即代码工具(Terraform、CloudFormation、Pulumi)几乎只在控制平面上运作。应用程序 SDK 和驱动程序在数据平面上运作。结果是 2 套互不相交的工具链、2 套凭据模型,并且没有一个统一的地方可以提出横跨两者的问题。

为什么统一很重要​

许多实际的运维问题会跨越这条边界。“有哪些数据仓库,它们上周执行了什么?”是一个控制平面问题与一个数据平面问题的连接。“哪些存储桶是公开的,其中哪些包含对象?”也是如此。止步于控制平面的工具可以枚举资源,但无法检查这些资源正在做什么。

StackQL 以统一的方式对待两个平面:Provider 的 API 规范中记载的任何操作都可以投影到同一个 SQL 模型中,资源对应表,读取对应 SELECT,写入对应 INSERT/UPDATE/DELETE,其他操作对应 EXEC 方法。单个查询会话在每个 Provider 上使用单一的身份验证上下文,即可从配置贯通到活动。对 AI 智能体而言,这一点更为重要:智能体获得通往两个平面的同一个接口后,无需切换工具链即可进行诊断(“作业失败了”)、检查配置(“集群规格不足”)和修复(“调整其规格”)。请参阅什么是智能体基础设施?。

示例​

一条控制平面查询,枚举某个 Azure 订阅中的虚拟机:

SELECT name, location
FROM azure.compute.virtual_machines
WHERE subscriptionId = '00000000-1111-2222-3333-444444444444';

针对其中某个资源的生命周期操作,是对同一张表上某个有文档记载的方法(例如 restart 或 power_off)执行 EXEC,这些方法可通过 SHOW METHODS IN azure.compute.virtual_machines 发现。