<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>架构 on 云原生 MCP 服务器</title><link>https://mahmut-abi.github.io/cloud-native-mcp-server/zh/concepts/architecture/</link><description>Recent content in 架构 on 云原生 MCP 服务器</description><generator>Hugo</generator><language>zh-cn</language><atom:link href="https://mahmut-abi.github.io/cloud-native-mcp-server/zh/concepts/architecture/index.xml" rel="self" type="application/rss+xml"/><item><title>架构概览</title><link>https://mahmut-abi.github.io/cloud-native-mcp-server/zh/concepts/architecture/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mahmut-abi.github.io/cloud-native-mcp-server/zh/concepts/architecture/overview/</guid><description>&lt;h1 id="架构概览"&gt;架构概览&lt;a class="anchor" href="#%e6%9e%b6%e6%9e%84%e6%a6%82%e8%a7%88"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;本文档描述 Cloud Native MCP Server 的整体架构、设计原则和部署模式。&lt;/p&gt;
&lt;h2 id="系统架构"&gt;系统架构&lt;a class="anchor" href="#%e7%b3%bb%e7%bb%9f%e6%9e%b6%e6%9e%84"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Cloud Native MCP Server 采用分层架构设计，从上到下分为：&lt;/p&gt;
&lt;h3 id="1-客户端层"&gt;1. 客户端层&lt;a class="anchor" href="#1-%e5%ae%a2%e6%88%b7%e7%ab%af%e5%b1%82"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;支持多种客户端类型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Desktop&lt;/strong&gt;: Anthropic 的官方桌面客户端&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web Browser&lt;/strong&gt;: 通过浏览器访问&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom MCP Clients&lt;/strong&gt;: 自定义的 MCP 客户端&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;客户端通过 MCP 协议与服务器通信，支持以下传输方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SSE (Server-Sent Events)&lt;/strong&gt;: 实时事件推送&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Streamable-HTTP&lt;/strong&gt;: 流式 HTTP 响应&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-http-服务器层"&gt;2. HTTP 服务器层&lt;a class="anchor" href="#2-http-%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%b1%82"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;处理传入的 HTTP/SSE 请求和连接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;路由层&lt;/strong&gt;: 动态路由注册，路径参数解析，查询参数验证&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中间件层&lt;/strong&gt;: 认证、审计、速率限制、安全、指标收集&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;健康检查&lt;/strong&gt;: 优雅关闭，健康检查端点&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-服务管理层"&gt;3. 服务管理层&lt;a class="anchor" href="#3-%e6%9c%8d%e5%8a%a1%e7%ae%a1%e7%90%86%e5%b1%82"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;管理所有注册的服务和工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;服务注册和发现&lt;/strong&gt;: 自动注册和发现服务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工具调用路由&lt;/strong&gt;: 将请求路由到正确的服务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;服务生命周期管理&lt;/strong&gt;: 初始化、健康检查、关闭&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;健康检查协调&lt;/strong&gt;: 协调各服务的健康检查&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-基础设施层"&gt;4. 基础设施层&lt;a class="anchor" href="#4-%e5%9f%ba%e7%a1%80%e8%ae%be%e6%96%bd%e5%b1%82"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;提供共享的基础设施服务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;缓存层&lt;/strong&gt;: LRU 缓存，分段缓存，TTL 支持&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密钥管理&lt;/strong&gt;: 安全存储，密钥轮换，密钥生成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;日志系统&lt;/strong&gt;: 结构化日志，多级别，JSON 和文本格式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;指标系统&lt;/strong&gt;: Prometheus 格式，请求计数，延迟统计&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="5-外部服务层"&gt;5. 外部服务层&lt;a class="anchor" href="#5-%e5%a4%96%e9%83%a8%e6%9c%8d%e5%8a%a1%e5%b1%82"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;集成的云原生服务：&lt;/p&gt;</description></item><item><title>核心组件</title><link>https://mahmut-abi.github.io/cloud-native-mcp-server/zh/concepts/architecture/components/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mahmut-abi.github.io/cloud-native-mcp-server/zh/concepts/architecture/components/</guid><description>&lt;h1 id="核心组件"&gt;核心组件&lt;a class="anchor" href="#%e6%a0%b8%e5%bf%83%e7%bb%84%e4%bb%b6"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;本文档详细描述 Cloud Native MCP Server 的各个核心组件。&lt;/p&gt;
&lt;h2 id="1-http-服务器"&gt;1. HTTP 服务器&lt;a class="anchor" href="#1-http-%e6%9c%8d%e5%8a%a1%e5%99%a8"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;职责&lt;/strong&gt;: 处理传入的 HTTP/SSE 请求和连接&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;特性&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持多种运行模式 (SSE, Streamable-HTTP)&lt;/li&gt;
&lt;li&gt;可配置的超时和连接限制&lt;/li&gt;
&lt;li&gt;优雅关闭&lt;/li&gt;
&lt;li&gt;健康检查端点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;关键文件&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cmd/server/server.go&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;internal/middleware/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;配置&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;server&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#fff"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#fff"&gt; &lt;/span&gt;&lt;span style="color:#0550ae"&gt;mode&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#fff"&gt; &lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;sse&amp;#34;&lt;/span&gt;&lt;span style="color:#fff"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#fff"&gt; &lt;/span&gt;&lt;span style="color:#0550ae"&gt;addr&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#fff"&gt; &lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;0.0.0.0:8080&amp;#34;&lt;/span&gt;&lt;span style="color:#fff"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#fff"&gt; &lt;/span&gt;&lt;span style="color:#0550ae"&gt;readTimeoutSec&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#fff"&gt; &lt;/span&gt;&lt;span style="color:#0550ae"&gt;30&lt;/span&gt;&lt;span style="color:#fff"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#fff"&gt; &lt;/span&gt;&lt;span style="color:#0550ae"&gt;writeTimeoutSec&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#fff"&gt; &lt;/span&gt;&lt;span style="color:#0550ae"&gt;0&lt;/span&gt;&lt;span style="color:#fff"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#fff"&gt; &lt;/span&gt;&lt;span style="color:#0550ae"&gt;idleTimeoutSec&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#fff"&gt; &lt;/span&gt;&lt;span style="color:#0550ae"&gt;60&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="2-路由层"&gt;2. 路由层&lt;a class="anchor" href="#2-%e8%b7%af%e7%94%b1%e5%b1%82"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;职责&lt;/strong&gt;: 将请求路由到正确的服务和工具&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;特性&lt;/strong&gt;:&lt;/p&gt;</description></item><item><title>数据流</title><link>https://mahmut-abi.github.io/cloud-native-mcp-server/zh/concepts/architecture/dataflow/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mahmut-abi.github.io/cloud-native-mcp-server/zh/concepts/architecture/dataflow/</guid><description>&lt;h1 id="数据流"&gt;数据流&lt;a class="anchor" href="#%e6%95%b0%e6%8d%ae%e6%b5%81"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;本文档描述 Cloud Native MCP Server 中的请求和响应数据流。&lt;/p&gt;
&lt;h2 id="请求流"&gt;请求流&lt;a class="anchor" href="#%e8%af%b7%e6%b1%82%e6%b5%81"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="完整请求流程"&gt;完整请求流程&lt;a class="anchor" href="#%e5%ae%8c%e6%95%b4%e8%af%b7%e6%b1%82%e6%b5%81%e7%a8%8b"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;客户端
 │
 ├─&amp;gt; HTTP/SSE 连接
 │
 ├─&amp;gt; 认证中间件
 │ ├─&amp;gt; 验证 API Key/Token
 │ └─&amp;gt; 检查权限
 │
 ├─&amp;gt; 速率限制中间件
 │ └─&amp;gt; 检查配额
 │
 ├─&amp;gt; 路由层
 │ ├─&amp;gt; 解析服务和方法
 │ └─&amp;gt; 验证参数
 │
 ├─&amp;gt; 审计中间件
 │ └─&amp;gt; 记录请求开始
 │
 ├─&amp;gt; 服务管理器
 │ └─&amp;gt; 路由到服务
 │
 ├─&amp;gt; 缓存层
 │ ├─&amp;gt; 检查缓存
 │ └─&amp;gt; 返回缓存或继续
 │
 ├─&amp;gt; 服务
 │ ├─&amp;gt; 调用外部 API
 │ ├─&amp;gt; 处理响应
 │ └─&amp;gt; 更新缓存
 │
 ├─&amp;gt; 审计中间件
 │ └─&amp;gt; 记录请求完成
 │
 ├─&amp;gt; 指标中间件
 │ └─&amp;gt; 记录指标
 │
 └─&amp;gt; 响应返回客户端&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="详细步骤"&gt;详细步骤&lt;a class="anchor" href="#%e8%af%a6%e7%bb%86%e6%ad%a5%e9%aa%a4"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="1-客户端连接"&gt;1. 客户端连接&lt;a class="anchor" href="#1-%e5%ae%a2%e6%88%b7%e7%ab%af%e8%bf%9e%e6%8e%a5"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;客户端通过以下方式之一连接到服务器：&lt;/p&gt;</description></item></channel></rss>