大多数关于AI网关的解释都停在表面:一个端点、多个模型,再加一点治理能力。这种框架适合判断你要不要用一个网关,却几乎无法说明某个网关能否扛住真实生产环境的考验。真正决定这一点的,是更下一层的内部架构:什么处在每个请求的路径上,什么不在,配置存在哪里,以及你的提示词和响应实际流经何处。

回答这些问题的核心概念,是控制面与数据面的分离。这不是AI的发明。网络交换机、服务网格和软件定义网络多年来一直这样组织自己,因为这种拆分解决了一个反复出现的矛盾:你想要集中、方便的管理,但你不希望那个负责管理的东西同时也成为每个请求都依赖的东西。理解这一模式如何套用到AI网关上,是把它当黑盒、还是清晰推理其延迟、爆炸半径和数据驻留的分水岭。

两个面,两种职责

先看核心区分。控制面是配置决策的地方,它保存路由规则、访问控制、预算、团队与密钥定义、护栏策略,以及描述流量应如何处理的其他配置。数据面是执行决策的地方,它才是真正接收请求、应用相关配置、把调用转发给提供商并返回响应的组件。

一个做得好的网关,其决定性特征是:只有数据面处在请求路径上。当你的应用发出一次对话补全调用,它对话的是数据面,而数据面已经在内存中持有它需要的配置,可以立即行动。控制面不在热路径上被咨询。它此前已经发布了规则,并不站在你的用户和答案之间。在TrueFoundry的设计中,网关数据面从内存读取配置与缓存,给每个请求只增加几毫秒开销,因为它在做本地工作,而不是回源请求指令。

为什么要把两者分开

把两个面合并进一个进程很诱人,因为构建和部署都更简单。这也是个陷阱,原因有三,每一条都直接对应一种生产故障模式。

  • 延迟:如果每个请求都得咨询一个中央大脑来获知如何路由,那个大脑的往返时间就会加到每次调用上,它与用户的距离会成为你延迟的下限。通过提前把配置加载进数据面并留在内存里,网关在本地做逐请求决策。设计良好的数据面开销以低个位数毫秒计,相对于大模型自身动辄数百或数千毫秒的响应时间可以忽略。
  • 爆炸半径:中央管理服务偶尔会不可用:一次部署、一次数据库抖动、一次网络分区。如果那个服务也在请求路径上,它的宕机就是你的宕机。两个面分开后,控制面故障意味着你暂时无法修改配置,但现有流量继续流动,因为数据面本地已缓存了所需的一切。削弱重新配置的能力很烦;削弱服务请求的能力则是事故。拆分把后者变成了前者。
  • 数据驻留:这一点更微妙,在受监管的企业里往往最重要。你的提示词和响应是最敏感的AI数据,路由规则和预算则相对平常。因为只有数据面接触提示词和响应,你可以把数据面放在数据依法必须所在的地方,同时保留一个控制面做管理。欧洲工作负载的流量可以完全由欧盟区域的数据面处理,即便管理它的团队登录的是同一个中央控制台。管理体验是统一的,敏感数据留在原地。

一次请求的旅程

追踪一次调用穿过系统会很有帮助。假设某个服务想要一次补全,并被配置为优先使用一个快速的主模型、同时带有兜底以增强韧性。概念上,网关正在执行管理员曾在控制面定义过一次的策略。这类策略的示意版本大致会写明:路由名称为摘要流量,主模型为openai-main/gpt-4o,兜底依次为anthropic-main/claude-sonnet和自托管的llama-3-70b,预算归属内容平台团队,月度上限2000美元。

这份配置是针对控制面编写并分发到相关数据面的。以上内容都还不在请求路径上。当实际调用到达时,应用只是向它所在区域的网关发出一个普通的、兼容OpenAI的请求。数据面接收后,检查内存中的策略,确认团队未超预算,应用输入护栏,转发给主模型;如果该模型报错或被限流,就在流式返回响应前透明地对下一个兜底重试。调用方看到的是正常的补全,永远不会知道最终是哪个提供商服务的。除编写时的策略定义外,每一步都发生在数据面内部、本地,只带来几毫秒的网关开销。

拆分带来的部署形态

因为两个面解耦,同一个产品可以在多种拓扑下部署,而无需改动应用代码。三种常见形态可以说明这个范围。

在完全托管的SaaS模式中,两个面都由服务方运营,你把客户端指向一个托管的基础URL。这是最快的起步方式,适合没有严格驻留约束的流量。在混合模式中,控制面仍由服务方管理,但数据面运行在你自己的环境里,因此请求和响应数据留在你自己的对象存储中,从不离开你的边界。你获得集中管理,却不必把提示词交给第三方。在自托管、本地部署或气隙模式中,两个面都运行在你自己的基础设施内,这是受监管或涉密环境的要求。架构不变,变的只是两个面物理上运行在哪里。

一个产品之所以能同时覆盖托管的便利与气隙隔离,恰恰是因为面的分离。那个有时必须留在你墙内的部分——数据面——可以干净地从那个受益于集中管理的部分中切分出来。

区域数据面与单一管理视图

大型组织很少只在一个区域运营。这一架构的实际结果是,你可以运行多个区域数据面,每个都让流量留在本地,全部由一个控制面治理。管理员定义一次预算或护栏,它就会传播到每个区域。合规官在一个地方看到所有区域的审计轨迹。而源自某一区域的请求完全由该区域的数据面服务,驻留义务得到满足,运营也不会被割裂成互不相连的孤岛。新增一个区域,变成再立起一个数据面,而不是从头重建治理。

评估时意味着什么

一旦内化了两面模型,几个评估问题会变得更锐利。问清楚:请求路径上具体有什么,是否有任何中央服务被逐调用咨询。问清楚:如果管理控制台宕机,在线流量会怎样。问清楚:提示词和响应存储在哪里,那份存储能否固定到某个区域或你自己的基础设施。问清楚:新增一个区域或一个新团队时,配置如何传播。控制面与数据面分离干净的网关会有清晰的答案;没有这种分离的网关则倾向于把这些问题的答案搅浑,而模糊之处正是延迟、宕机和合规意外藏身的地方。

  • AI网关把定义配置与策略的控制面,与对在线请求执行该策略的数据面分开。
  • 只有数据面处在请求路径上;它在内存中持有配置,每次调用只增加几毫秒开销。
  • 这种分离防范三种故障模式:中央查询带来的延迟、管理服务处于热路径时的宕机、以及数据驻留违规。
  • 因为两个面解耦,一个产品无需改动应用代码即可支持SaaS、混合以及完全自托管或气隙部署。
  • 多个区域数据面可以让流量留在本地,同时由一个控制面通过统一管理视图治理全部。
  • 评估网关时,要探查请求路径上究竟有什么、控制面宕机时什么仍能存活、以及敏感提示词数据物理上存放在哪里。