Quanta

← 返回 Quanta 简报

高并发模型前端的三道流式防线:连接、取消与预算

平台工程ZH5 次阅读

01 · 高负载团队先分清“更早看到”与“更快完成”

模型回答逐段出现,能让用户更早开始阅读,但不代表模型生成更快,也不保证总费用更低。服务器发送事件是一种由服务端向浏览器持续发送文本事件的机制,适合回答生成、任务进度等单向更新。对于持续运行大量模型调用的团队,关键不只是实现打字效果,而是管理连接、停止无用生成,并核对实际消耗。

02 · 把长连接放在自有后端之后

推荐链路是浏览器连接团队后端,再由后端请求模型服务。密钥、成员权限、并发配额和预算检查留在后端,不把平台凭证交给浏览器。需要双向实时交互时,再评估其他通信方式;单向输出没有必要为了“实时”引入更复杂的连接协议。

浏览器原生事件源接口适合简单订阅,但不能自由设置请求方法、请求体和任意鉴权头。模型请求通常要提交较长上下文,因此可以使用浏览器请求接口发起请求,再读取响应流并解析事件。团队应明确这两条接入路径,不能把原生接口的自动重连能力套用到所有实现上。

03 · 按事件边界解析,而不是按网络分块显示

服务器发送事件以空行分隔事件,数据字段也可能跨越多行。一次网络读取可能只得到半个字符、半条事件,也可能包含多条事件。前端需要增量解码、保存未完成片段,拼接完整事件后再处理业务内容。网络分块不是模型词元边界,也不是业务消息边界。

  • › 增量事件:追加内容,并适度合并界面更新,避免高频渲染拖慢页面。
  • › 结束事件:明确标记成功完成,随后收尾;不能仅凭连接关闭判断成功。
  • › 错误事件:区分生成前失败与生成中断。响应头已发送后,不能再依赖更改状态码表达错误。

04 · 停止按钮必须真正影响上游生成

用户点击停止、关闭页面或切换任务时,前端应取消读取,后端也要感知断连,并在支持的情况下取消上游请求。否则界面虽然停止更新,模型仍可能继续生成。取消不意味着撤销已经产生的用量,也不能承诺完全没有后续消耗。

重连同样需要业务设计。断线后重新提交生成请求,可能启动第二次计费调用。事件编号只能帮助定位进度,不能凭空提供恢复能力;只有服务端保存事件并支持重放,才能基于编号续传。没有这一能力时,应显示中断状态,让用户明确选择是否重试。

05 · 代理缓冲与空闲超时要进入验收清单

应用逐段写出,不代表用户能逐段收到。反向代理、网关和压缩配置都可能缓冲响应。上线前要沿真实生产链路检查缓冲、刷新行为、空闲超时与最长连接时限,必要时发送心跳。心跳只能维持链路活性,不能证明模型仍在有效生成。

观测至少覆盖首次内容到达时间、完成时间、活跃连接数、中断原因与取消传递结果。高负载场景还要设置成员级并发上限和排队策略,避免长连接耗尽后端资源。验收应包含弱网、后台标签页、代理超时和连续点击停止,而不只是正常演示。

06 · 用同一条请求记录串起体验与账单

Quanta 适合需要按量使用多种模型、持续处理大量请求的团队:一个余额统一管理用量,每次调用按实际词元计量,缓存写入与缓存读取分别计价。它可以简化接入与预算归集,但不能替代前端取消、后端限流和链路监控。

团队可为每次生成分配请求标识,关联界面状态、上游调用和最终用量;中途断流时,也不要把已显示字符数当成账单依据。建议先选一个内部工作流灰度开放,确认取消、重试与费用核对都符合预期后再扩大范围。准备验证这条链路时,可以开通一个 Quanta 账户,从受控并发和明确预算开始。