核心组件#
本文档详细描述 Cloud Native MCP Server 的各个核心组件。
1. HTTP 服务器#
职责: 处理传入的 HTTP/SSE 请求和连接
特性:
- 支持多种运行模式 (SSE, Streamable-HTTP)
- 可配置的超时和连接限制
- 优雅关闭
- 健康检查端点
关键文件:
cmd/server/server.gointernal/middleware/
配置:
| |
2. 路由层#
职责: 将请求路由到正确的服务和工具
特性:
- 动态路由注册
- 路径参数解析
- 查询参数验证
- 错误处理
关键文件:
internal/services/registry.go
路由示例:
| |
3. 中间件层#
职责: 在请求处理之前和之后执行通用逻辑
认证中间件#
验证客户端身份:
| |
支持的模式:
apikey: API Key 认证bearer: Bearer Token 认证basic: HTTP Basic Auth
关键文件:
internal/middleware/auth_middleware.gointernal/middleware/auth.go
审计中间件#
记录所有操作:
| |
记录内容:
- 请求时间
- 用户身份
- 工具名称
- 请求参数
- 响应状态
- 执行时间
关键文件:
internal/middleware/audit_middleware.gointernal/middleware/audit_log.go
速率限制中间件#
防止滥用:
| |
实现: Token Bucket 算法
关键文件:
internal/middleware/ratelimit.go
安全中间件#
输入清理和安全检查:
| |
清理内容:
- SQL 注入
- XSS 攻击
- 命令注入
- 危险字符
关键文件:
internal/middleware/security_middleware.gointernal/util/sanitize/
指标中间件#
收集性能指标:
| |
关键文件:
internal/middleware/metrics_middleware.gointernal/observability/metrics/
4. 服务管理器#
职责: 管理所有注册的服务和工具
特性:
- 服务注册和发现
- 工具调用路由
- 服务生命周期管理
- 健康检查协调
关键文件:
internal/services/manager/manager.gointernal/services/registry.go
服务注册流程:
| |
5. 缓存层#
职责: 提供高性能缓存以减少外部服务调用
LRU 缓存#
最近最少使用缓存:
| |
适用场景:
- 读取密集型操作
- 数据变化不频繁
- 高延迟操作
分段缓存#
提供更好的并发性能:
| |
适用场景:
- 高并发场景
- 需要低延迟
- 多核 CPU
配置:
| |
关键文件:
internal/services/cache/
6. 密钥管理器#
职责: 安全地存储和管理敏感凭据
特性:
- 内存存储
- 密钥轮换
- 密钥生成
- 过期管理
支持的密钥类型:
- API 密钥
- Bearer token
- Basic auth 凭据
关键文件:
internal/secrets/manager.go
使用示例:
| |
7. 日志系统#
职责: 结构化日志记录
特性:
- 多级别日志 (debug, info, warn, error)
- JSON 和文本格式
- 结构化字段
- 上下文支持
配置:
| |
日志格式:
| |
关键文件:
internal/logging/logging.go
8. 指标系统#
职责: 收集和暴露性能指标
特性:
- Prometheus 格式
- 请求计数
- 延迟统计
- 缓存命中率
关键指标:
# 请求指标
mcp_requests_total{method="kubernetes_list_pods",status="success"} 1234
mcp_request_duration_seconds{method="kubernetes_list_pods"} 0.123
# 缓存指标
mcp_cache_hits_total{service="kubernetes"} 456
mcp_cache_misses_total{service="kubernetes"} 78
# 连接指标
mcp_active_connections 10
mcp_total_connections 100关键文件:
internal/observability/metrics/
9. OpenTelemetry 集成#
职责: 分布式追踪和遥测
特性:
- 指标收集
- 追踪支持
- 日志关联
配置:
| |
使用示例:
| |
关键文件:
internal/observability/otel/
组件交互#
客户端请求
│
▼
HTTP Server
│
▼
认证中间件 ──> 密钥管理器
│
▼
速率限制中间件
│
▼
路由层 ──> 服务管理器
│
▼
审计中间件
│
▼
服务
│
├─> 缓存层
│
├─> 日志系统
│
└─> 指标系统
│
▼
响应