+
33
-

回答

核心原因是 SSE 在适配大模型分布式部署、复杂交互等场景时缺陷逐渐凸显,而 Streamable HTTP 能精准解决这些问题,同时保留流式响应优势,以下是具体分析:

解决 SSE 连接与数据传输的可靠性问题

SSE 存在连接不可恢复的问题,一旦客户端和服务器间的连接中断,无法从断点继续传输,只能重新建立连接,这会导致之前的通信上下文丢失,严重影响大模型交互中输出的连续性。而 Streamable HTTP 支持可恢复流,客户端可通过会话 ID 等方式衔接中断前的传输状态,大幅减少网络问题带来的数据丢失。

SSE 的服务器对网络中断无感知,即便连接断开仍可能持续发送数据,这些数据会直接丢失;而 Streamable HTTP 基于 HTTP 分块传输,客户端能清晰感知连接状态,便于及时处理异常并恢复传输。

降低服务端部署与运维压力

SSE 要求服务器维持高可用的长连接来保障通信,大量并发请求下,长连接会占用大量服务器资源,限制服务的扩展能力。Streamable HTTP 支持无状态服务器架构,无需强制维持长连接,服务器可通过生成会话 ID 让客户端后续请求携带以维护状态,显著降低了长连接带来的资源开销,能更好地应对大规模并发请求。

SSE 需单独的/sse端点处理流式传输,增加了服务器端点管理的复杂度。Streamable HTTP 则可通过统一的/message端点处理所有请求和流式传输,简化了服务器架构与运维工作。

突破 SSE 的功能局限性,提升扩展性

SSE 仅支持单向通信,服务器只能通过专属通道向客户端推送消息,客户端无法通过该连接发送数据,难以满足大模型多轮对话等双向交互需求。Streamable HTTP 支持双向流式处理,同一个连接既能让客户端发送请求参数、上下文等数据,也能让服务器返回流式响应,适配复杂的模型交互场景。

SSE 不支持自定义 Header,难以接入 OAuth、Token 鉴权等常用安全机制,扩展性差。而 Streamable HTTP 可借助 HTTP Headers 灵活携带元数据,轻松实现认证、路由等功能,适配更多复杂的部署场景。同时 SSE 仅支持 GET 请求,不利于提交上下文、工具参数等复杂数据,Streamable HTTP 支持 POST/GET 等多种请求方式,契合大模型接口常用的 NDJSON 流格式,兼容性更强。

适配现代 Web 与云原生基础设施

SSE 在 API 网关、CDN、负载均衡等中间件中易出现断流、缓存异常等问题,适配性较差。Streamable HTTP 本质是标准 HTTP 的优化扩展,能与现有 Web 基础设施完美兼容,可无缝集成到 Service Mesh、Kubernetes 等云原生架构中,借助其流量管理、可观察性等特性优化 MCP 的部署与运维。

它还能被 curl、Postman 等标准 HTTP 工具直接调用测试,且任何支持 HTTP 客户端库的语言或平台都能轻松与其交互,降低了开发者的集成与调试成本,这是依赖浏览器 EventSource 特性的 SSE 难以实现的。

网友回复

我知道答案,我要回答