Model Context Protocol Advanced Topics
← 所有课程
课程 09Model Context Protocol Advanced Topics

State and the StreamableHTTP transport

摘要音频

本节课没有语音摘要。

学习笔记

MCP 服务器关键概念学习笔记

🌐 场景背景:水平扩展 (Horizontal Scaling)

  • 目的: 当服务器流量过大时,通过运行多个服务器副本并使用负载均衡器 (Load Balancer) 来分流请求,实现系统扩展。
  • 挑战: 负载均衡器可能导致客户端的请求被随机路由到不同的服务器,从而破坏需要持续连接(如 Git SSE 响应)的会话状态。

⚙️ 标志一:stateless (无状态)

  • 设置含义: 当此标志设为真 (true) 时,客户端不会获得会话 ID (Session ID)。服务器无法追踪客户端状态。
  • 负面影响 (Trade-offs):
  • 无法使用 Git SSE 响应路径发送请求给客户端。
  • 无法实现采样 (Sampling)、进度日志 (Progress Logging) 或资源订阅等功能。
  • 正面影响 (Benefits):
  • 无需进行客户端初始化请求 (Client Initialization) 和后续通知请求 (Notification)。
  • 减少服务器接收的初始流量。

⚙️ 标志二:JSON response (JSON 响应)

  • 设置含义: 当此标志设为真 (true) 时,发送给客户端的 POST 请求将禁用流式传输 (Streaming)。
  • 工作方式:
  • 服务器不会发送中间的、实时的消息(如登录日志或进度更新)。
  • 客户端必须等待工具调用完全完成,才会接收到最终的、完整的 JSON 结果。
  • 对比: 默认模式下支持流式传输,即接收中间消息 → 最终结果。

💡 总结与建议

  • 核心权衡: stateless 模式牺牲会话追踪能力,换取架构的简化和流量的减少。
  • 开发建议: 在本地开发服务器时,应使用计划在生产环境中使用的传输方式(如 Streamable HTTP Transport),以避免后期迁移时出现兼容性问题。

Takeaways

  • 水平扩展通过负载均衡实现系统扩展,但可能破坏需要持续连接(如Git SSE)的会话状态。
  • stateless 模式禁用会话ID追踪,牺牲了采样和日志等功能,但能减少服务器初始流量。
  • JSON response 标志禁用流式传输,客户端必须等待工具调用完全完成,才能接收到最终的完整结果。
  • 核心权衡在于:stateless 模式以牺牲会话追踪能力为代价,换取架构的简化和流量的减少。
抽认卡 9 张卡片
问题
点击显示 · ←/→
答案
点击翻回
导出到 Anki (.tsv) ↓
知识检测 0 题

No quiz for this lesson yet.