调度开销 —— 滚动 p95: 11ms. 数字为示意性建模结果,非实测。

四行代码、一条 DNS,或者什么都不动。

三种接入形态,按你要动多少东西排序。我们建议先上的那一种什么都不动,用户看到的答案一个字都不变。

三种接入形态

A

SDK 垫片

你现有的客户端库保持原样调用,请求转到 Switchyard,回来的结构也跟原来一样。端点名是把一次调用和一条阶梯、一个下限、一份预算绑在一起的东西,所以它是你唯一必须加的参数。

你要改什么

换 base_url,加一个端点名。大约四行。

怎么退回去

base_url 改回去。不用迁数据,不用改 schema。

B

兼容网关

网关说的是你的应用已经在说的那套协议。端点是从路径推出来的,比你自己命名要粗一些,但它能让一个这周根本改不动的服务先跑上阶梯。

你要改什么

不改代码。改一条 DNS 或者一条反代规则。

怎么退回去

把记录改回去,生效时间就是你平时的 TTL。

C

旁路影子

请求被复制、打指纹,拿去跟候选阶梯离线对照。你的用户照旧从你现在的架构拿答案。跑完你手里拿到的是你自己流量的难度分布和一份推算出来的账单,而不是我们的——想知道这套东西对你有没有用,这是唯一诚实的办法。

你要改什么

复制一份流量。不路由,不返回。

怎么退回去

停掉复制。你的链路从头到尾没变过。

先上 C。三种里只有它伤不到你,也只有它能产出一个可以拿去吵架的结论。

数据去哪

五跳,第一跳根本不出你的门。指纹在你的进程里或者你的 VPC 里算,也就是说,请求正文不必为了被打分而先被运走。

数据去哪FIG-11示意数据
在你的网络里离开你的网络01请求你的应用02指纹你的进程或你的 VPC03决策Switchyard04上游调用你的供应商05裁判抽样Switchyard,6% 的调用
示意模型 · FIG-11 · 一条请求走过五跳;着色的那一段是唯一离开你网络的部分
数据去哪
环节跑在哪什么落盘
请求你的应用我们什么都不存。
指纹你的进程或你的 VPC五个维度分和 D。不含正文。
决策Switchyard选中的档位、走过的树路径、每条边的理由。
上游调用你的供应商token 计数、每级延迟、错误。正文只过不留。
裁判抽样Switchyard,6% 的调用一个分数和它的口径。

我们留什么

默认会存

  • 指纹向量——五个维度分和 D。
  • 路由决策、走过的树路径、每条边的理由。
  • 每一级的 token 计数、成本和延迟。
  • 被抽到的那些调用的裁判分。
  • 错误、超时、结构校验失败。

默认不存

  • 提示正文。
  • 输出正文。
  • 终端用户标识。

正文留存是 opt-in 的,按端点开,留存窗口你定。默认是关,而且一直是关,直到你自己打开——一个偷偷攒下所有人提示词的调度层,是穿着产品外衣的负债。

跑在哪

托管
路由器我们跑。指纹分类器仍然跑在你这边。
自托管
全部在你的基础设施里。阶梯是文件,控制台是可选的。
你的 VPC 内
我们在你的网络边界里面运维它。上游凭据不出这个边界。

SLO 目标

这是这个示意部署的设计目标,写成可测量、可被质疑的形式。它们不是服务承诺,本站也没有 SLA。

SLO 目标
指标目标
调度可用性99.95%
附加开销 p95≤ 15 毫秒
Brownout 检测≤ 60 秒

迁移剧本

四步,每一步都配一个能把你放回原点的开关。

迁移剧本
阶段做什么回滚
第 1–2 周只跑影子。拿到你自己流量的难度分布和一份推算账单,不路由任何东西。停掉复制。
第 3 周一个端点放 5%。挑例行流量最多的那个,不是最贵的那个。份额设 0,下一条请求就生效。
第 4–7 周这个端点 25% → 100%,然后换下一个。一次只动一个。按端点的份额开关,同一个。
之后新档位一律从影子和切换窗口进来,不直接上生产。放量的每一步都可逆。

下一页

我们不做什么。

看立场