以下页面描述网关的预期行为。开源版本与企业版本正在拆分中,首个正式版本发布后细节会同步更新。
流式响应
Server-Sent Events 流如何通过,以及分块边界为什么能保留下来。
流式响应是增量转发的。网关不会为了检查内容而先把整个流缓冲下来。
转发方式
每一帧从 provider 到达时即写入客户端。帧边界与帧内容保持不变,因此按 data: 行解析的客户端,
看到的就是 provider 实际发出的内容。
这对以下场景很重要:
- 界面上的增量渲染
- 客户端跨帧累积工具调用参数
- provider 把用量或结束原因放在专用帧里传递
观测方式
指标与日志由一份随流经过时同步复制的副本产生。这份副本有上限:
| 上限 | 作用 |
|---|---|
| 固定的捕获字节数 | 副本不会无界增长 |
| 运维可配置的容量上限 | 一个 span 中最多记录多少正文 |
| 未配置导出目标时完全跳过 | 不产生任何副本 |
当流超过捕获上限时,副本被截断,并且截断这件事会被记录下来。客户端收到的流不受影响。
成功响应里的早期错误
有些 provider 会先返回 200,然后在第一个流事件里报告错误。网关能识别它所支持的方言的
启动事件,因此这类失败仍可触发重试或回退,而不是作为终止性错误直接交给客户端。
客户端断开
客户端断开时,上游请求被取消。没有消费完的响应不会被记为成功。