GitHub user AlexStocks created a discussion: Dubbo-Go-Pixiu AI 推理建设详细落地方案
## 文档概述
本文档基于 Dubbo-Go-Pixiu 作为高性能 API 网关的定位和现有能力,提供一份生产就绪的 AI 推理功能开发落地方案。
---
## 一、项目现状分析
### 1.1 Dubbo-Go-Pixiu 核心定位
Dubbo-Go-Pixiu 是 Apache Dubbo 生态的下一代 **AI/API 网关**,具有以下核心职责:
- **AI 网关**:统一接入 LLMs 和 AI 服务提供商(公有云/自托管模型)
- **API 网关**:接收 HTTP/gRPC 请求,转换为 Dubbo 协议转发
- **Sidecar**:代理多语言服务注册到 Dubbo 集群
- **Kubernetes Ingress Controller**:声明式路由和流量治理
### 1.2 已有 AI 能力盘点
Pixiu 已经具备以下 AI 相关能力:
#### 1.2.1 LLM Gateway 能力
- **LLM Registry 适配器** (`pkg/adapter/llmregistry`)
- 支持 LLM 服务动态注册与发现(Nacos)
- LLM 元数据管理(API Key、Retry Policy、Fallback)
- 自动将 LLM 服务注册到集群
- **LLM Endpoint 配置**
- 支持多 LLM Provider 配置(DeepSeek、OpenAI 等)
- 重试策略:CountBased、ExponentialBackoff、NoRetry
- Fallback 机制:主备切换
- API Key 管理
- **LLM Tokenizer Filter** (`pkg/filter/llm/tokenizer`)
- Token 计数和成本计算
- 流式响应处理
- 基于 OpenTelemetry 的 Metrics 采集
- **LLM Proxy Filter** (`pkg/filter/llm/proxy`)
- LLM 请求代理和转发
- 请求/响应转换
#### 1.2.2 MCP (Model Context Protocol) 能力
- **MCP Server 适配器** (`pkg/adapter/mcpserver`)
- 支持 MCP 服务动态注册(Nacos)
- 自动发现和管理 MCP Tools
- 将后端 HTTP API 暴露为 AI Agent 可调用的工具
- **MCP Server Filter** (`pkg/filter/mcp/mcpserver`)
- 实现 MCP 协议(2024-11-05 版本)
- 支持 Tools、Resources、Prompts
- OAuth 2.0 + JWT 认证
- 动态工具配置和热更新
#### 1.2.3 基础设施能力
- **集群管理** (`pkg/server/cluster_manager.go`)
- 动态 Endpoint 添加/删除
- 负载均衡:Random、RoundRobin、RingHash、Maglev、WeightRandom
- 健康检查机制
- 一致性哈希支持
- **可观测性**
- Prometheus Metrics 采集和推送
- OpenTelemetry 分布式追踪(Jaeger、OTLP)
- 访问日志和结构化日志
- **治理能力**
- 限流(Sentinel 集成)
- 重试和超时控制
- 熔断和降级
- CORS、CSRF 防护
### 1.3 与 dubbo-kubernetes 的角色差异
| 维度 | dubbo-kubernetes | dubbo-go-pixiu |
|------|------------------|----------------|
| **定位** | Control Plane + Admin | Data Plane (网关) |
| **部署模式** | Kubernetes 集群级别 | 流量入口/Sidecar |
| **管理范围** | 全局配置和监控 | 流量路由和协议转换 |
| **AI 职责** | 模型生命周期管理、训练管道 | 模型推理流量路由和治理 |
---
## 二、Pixiu 的 AI 推理建设目标
基于 Pixiu 的网关定位,其 AI 推理建设应聚焦在 **AI Data Plane** 层面,即:
### 2.1 核心目标
1. **统一 AI 推理流量入口**:所有 AI 推理请求通过 Pixiu 网关统一接入
2. **智能路由与负载均衡**:基于模型版本、负载、成本的智能路由
3. **推理服务治理**:限流、熔断、重试、降级、灰度发布
4. **成本与性能优化**:Token 计费、缓存、批处理、资源池化
5. **可观测性增强**:推理 Metrics、Tracing、日志聚合
6. **安全与合规**:认证授权、敏感数据脱敏、审计日志
---
## 三、架构设计
### 3.1 AI Data Plane 三层架构
```
┌─────────────────────────────────────────────────────────────────┐
│ AI Clients (LLM Apps) │
└────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────────▼────────────────────────────────────┐
│ Pixiu AI Gateway (Data Plane) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ AI Routing │ │ AI Governance│ │ Observability│ │
│ │ Engine │ │ (Rate Limit) │ │ (Metrics) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Model Service│ │ AI Cost │ │ AI Security │ │
│ │ Discovery │ │ Management │ │ (Auth/Audit) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
│ │ │
┌───────▼────────┐ ┌────────▼────────┐ ┌───────▼────────┐
│ LLM Provider 1 │ │ LLM Provider 2 │ │ Self-Hosted │
│ (OpenAI) │ │ (DeepSeek) │ │ Models │
└────────────────┘ └─────────────────┘ └────────────────┘
```
### 3.2 核心组件设计
#### 3.2.1 AI Inference Router(AI 推理路由器)
**职责**:
- 基于请求特征(模型名、版本、优先级)选择最优推理服务
- 支持多种路由策略:成本优先、延迟优先、混合模式
- 灰度发布和 Canary 部署支持
**实现方式**:
- 新增 Filter:`pkg/filter/ai/inference_router/`
- 扩展 Router 匹配规则,支持模型版本字段
- 集成现有 ClusterManager 的负载均衡能力
**配置示例**:
```yaml
filters:
- name: dgp.filter.ai.inference_router
config:
routing_strategy: cost_optimized # 或 latency_optimized, balanced
model_versions:
- model: gpt-4
version: "v1.0"
cluster: openai_cluster
weight: 80
- model: gpt-4
version: "v1.1-canary"
cluster: openai_cluster_canary
weight: 20
fallback_model: gpt-3.5-turbo
```
#### 3.2.2 AI Inference Cost Manager(推理成本管理)
**职责**:
- 实时计算推理成本(基于 Token 计数)
- 用户配额管理和限流
- 成本预警和自动降级
**实现方式**:
- 扩展现有 `pkg/filter/llm/tokenizer`
- 新增成本计算策略配置
- 集成 Sentinel 实现基于配额的限流
**配置示例**:
```yaml
filters:
- name: dgp.filter.llm.tokenizer
config:
enable_cost_tracking: true
cost_models:
- model: gpt-4
input_token_price: 0.00003 # 美元/Token
output_token_price: 0.00006
- model: gpt-3.5-turbo
input_token_price: 0.0000015
output_token_price: 0.000002
user_quotas:
- user_id: "tenant-001"
daily_budget: 100.0 # 美元
auto_downgrade: true
downgrade_model: gpt-3.5-turbo
```
#### 3.2.3 AI Model Service Discovery(模型服务发现)
**职责**:
- 动态发现推理服务实例(包括自托管模型)
- 管理模型元数据(版本、能力、价格)
- 健康检查和自动摘除故障实例
**实现方式**:
- 扩展 `pkg/adapter/llmregistry` 支持更多注册中心(Consul、Etcd)
- 新增模型元数据字段
- 增强健康检查策略(支持模型预热检测)
**元数据扩展**:
```go
// pkg/model/llm.go
type LLMMeta struct {
Provider string
APIKey string
RetryPolicy RetryPolicy
Fallback bool
HealthCheckInterval int64
// 新增字段
ModelVersion string `yaml:"model_version" json:"model_version"`
ModelCapabilities []string `yaml:"model_capabilities"
json:"model_capabilities"` // e.g., ["chat", "embeddings"]
MaxTokens int `yaml:"max_tokens" json:"max_tokens"`
CostPerInputToken float64 `yaml:"cost_per_input_token"
json:"cost_per_input_token"`
CostPerOutputToken float64 `yaml:"cost_per_output_token"
json:"cost_per_output_token"`
WarmupRequired bool `yaml:"warmup_required"
json:"warmup_required"`
GPUMemoryMB int `yaml:"gpu_memory_mb" json:"gpu_memory_mb"`
}
```
#### 3.2.4 AI Request Cache(推理请求缓存)
**职责**:
- 缓存相同或相似请求的推理结果
- 支持语义相似度匹配(向量检索)
- 减少重复推理,降低成本
**实现方式**:
- 新增 Filter:`pkg/filter/ai/cache/`
- 支持 Redis 和内存缓存
- 实现基于 Embedding 的相似度匹配(可选)
**配置示例**:
```yaml
filters:
- name: dgp.filter.ai.cache
config:
enabled: true
backend: redis
redis:
address: "127.0.0.1:6379"
db: 0
ttl: 3600 # 缓存 1 小时
cache_strategy: exact_match # 或 semantic_match
semantic_match:
embedding_model: "text-embedding-ada-002"
similarity_threshold: 0.95
cache_models:
- gpt-4
- gpt-3.5-turbo
```
#### 3.2.5 AI Batch Processor(批处理优化器)
**职责**:
- 聚合多个推理请求进行批处理
- 减少网络开销和推理延迟
- 支持动态批大小调整
**实现方式**:
- 新增 Filter:`pkg/filter/ai/batch/`
- 实现请求队列和批处理逻辑
- 支持超时控制,避免请求阻塞
**配置示例**:
```yaml
filters:
- name: dgp.filter.ai.batch
config:
enabled: true
max_batch_size: 32
max_wait_time: 100ms # 最长等待时间
target_models:
- gpt-4
- text-embedding-ada-002
```
#### 3.2.6 AI Inference Metrics(推理指标采集)
**职责**:
- 采集推理请求的详细指标
- 按模型、用户、版本聚合统计
- 导出到 Prometheus/云监控平台
**实现方式**:
- 扩展现有 `pkg/prometheus/prometheus.go`
- 新增 AI 专用指标(推理延迟、Token 数、成本等)
- 集成 OpenTelemetry 的 Metrics 和 Traces
**新增指标**:
```go
// AI Inference Metrics
ai_inference_requests_total // 推理请求总数(按模型、用户、状态)
ai_inference_latency_seconds // 推理延迟(P50/P95/P99)
ai_inference_tokens_total // Token 消耗总数(按模型、输入/输出)
ai_inference_cost_usd_total // 推理成本总计(美元)
ai_inference_cache_hit_ratio // 缓存命中率
ai_inference_batch_size // 批处理大小分布
ai_inference_model_queue_length // 模型请求队列长度
ai_inference_gpu_utilization // GPU 利用率(如适用)
```
#### 3.2.7 AI Security & Audit(安全与审计)
**职责**:
- 敏感数据脱敏(API Key、PII)
- 审计日志记录(谁在何时调用了什么模型)
- 基于策略的访问控制
**实现方式**:
- 新增 Filter:`pkg/filter/ai/security/`
- 集成现有 JWT 认证 (`pkg/filter/auth/jwt`)
- 扩展 AccessLog 记录 AI 特定字段
**配置示例**:
```yaml
filters:
- name: dgp.filter.ai.security
config:
enable_pii_masking: true
pii_patterns:
- email
- phone
- credit_card
enable_audit_log: true
audit_sink: kafka # 或 elasticsearch
kafka:
brokers: ["localhost:9092"]
topic: ai_audit_logs
access_policies:
- user_group: premium
allowed_models: ["gpt-4", "gpt-3.5-turbo"]
rate_limit: 1000/hour
- user_group: free
allowed_models: ["gpt-3.5-turbo"]
rate_limit: 100/hour
```
---
## 四、功能实现路线图
### Phase 1:核心推理能力强化(1-2 个月)
**目标**:完善 LLM 推理的基础能力
#### 任务清单
1. **扩展 LLM Metadata 模型**
- 新增 `model_version`, `model_capabilities`, `cost_per_token` 等字段
- 更新 `pkg/model/llm.go`
- 更新 LLM Registry 适配器以支持新字段
2. **实现 AI Inference Router Filter**
- 创建 `pkg/filter/ai/inference_router/`
- 支持基于模型版本的路由
- 支持灰度发布(按权重分流)
- 集成 ClusterManager 的负载均衡
3. **增强 Cost Tracking**
- 扩展 `pkg/filter/llm/tokenizer` 以支持成本计算
- 实现用户配额管理
- 集成 Sentinel 实现基于配额的限流
4. **实现 AI Request Cache**
- 创建 `pkg/filter/ai/cache/`
- 支持 Redis 后端
- 实现 Exact Match 缓存策略
- 配置 TTL 和缓存键生成规则
5. **新增 AI 专用 Metrics**
- 扩展 Prometheus 指标定义
- 采集推理延迟、Token 数、成本等指标
- 按模型、用户、版本聚合
6. **文档和示例**
- 编写配置指南
- 提供端到端示例(类似现有的 LLM samples)
#### 交付物
- AI Inference Router Filter(支持灰度发布)
- Cost Tracking 和用户配额管理
- Redis 缓存支持
- AI Metrics Dashboard(Grafana 模板)
- 配置文档和示例代码
---
### Phase 2:高级治理与优化(2-3 个月)
**目标**:提升推理性能和治理能力
#### 任务清单
1. **实现 AI Batch Processor**
- 创建 `pkg/filter/ai/batch/`
- 实现请求队列和批处理逻辑
- 支持动态批大小调整
- 处理超时和取消
2. **语义缓存(Semantic Cache)**
- 扩展 AI Request Cache 支持语义匹配
- 集成 Embedding 模型(如 text-embedding-ada-002)
- 实现向量相似度检索(可集成 Milvus、Qdrant)
3. **模型健康检查增强**
- 扩展健康检查支持模型预热检测
- 实现慢查询检测和自动降级
- 集成 GPU 资源监控(如适用)
4. **多注册中心支持**
- 扩展 `pkg/adapter/llmregistry` 支持 Consul、Etcd
- 实现跨云服务发现(AWS、GCP、Azure)
5. **AI Security Filter**
- 创建 `pkg/filter/ai/security/`
- 实现 PII 数据脱敏
- 集成访问控制策略(RBAC/ABAC)
- 记录审计日志到 Kafka/Elasticsearch
6. **分布式追踪增强**
- 在 Trace 中记录模型名称、版本、Token 数
- 与现有 OpenTelemetry 集成
- 支持 Trace 采样策略(如高成本请求必采样)
#### 交付物
- ✅ Batch Processing 支持(减少延迟 30%)
- ✅ 语义缓存(提升缓存命中率到 40%+)
- ✅ 健康检查和自动降级
- ✅ AI Security Filter(PII 脱敏和审计)
- ✅ 多注册中心支持
---
### Phase 3:智能调度与成本优化(2-3 个月)
**目标**:实现智能模型调度和成本优化
#### 任务清单
1. **智能路由策略**
- 实现 Cost-Optimized Routing(优先选择低成本模型)
- 实现 Latency-Optimized Routing(优先选择低延迟实例)
- 实现 Quality-Optimized Routing(基于模型质量评分)
- 支持混合策略(成本 + 延迟加权)
2. **请求优先级队列**
- 创建 `pkg/filter/ai/priority/`
- 支持按用户等级、业务重要性分配优先级
- 实现优先级队列和抢占机制
3. **成本预警和自动降级**
- 实现成本阈值监控
- 自动切换到低成本模型
- 通知用户和管理员
4. **模型资源池化**
- 实现模型实例预热和池化
- 支持冷启动优化(提前拉起实例)
- 基于预测的自动扩缩容建议
5. **请求合并与去重**
- 检测重复请求并合并
- 减少后端压力
6. **AI Dashboard(可选)**
- 提供简单的 Web UI 展示推理指标
- 集成到现有 Admin Dashboard(`admin/web`)
#### 交付物
- ✅ 智能路由引擎(多策略支持)
- ✅ 优先级队列和抢占
- ✅ 成本预警和自动降级
- ✅ 模型资源池化
- ✅ (可选)AI Dashboard
---
### Phase 4:生态集成与最佳实践(1-2 个月)
**目标**:完善生态集成和沉淀最佳实践
#### 任务清单
1. **Kubernetes Operator 集成**
- 扩展现有 `controllers/` 目录
- 定义 CRD:`AIInferencePolicy`
- 支持声明式配置 AI 路由和治理策略
2. **多云 LLM Provider 集成**
- AWS Bedrock
- Azure OpenAI
- Google Vertex AI
- 阿里云 DashScope
- 百度文心一言
3. **Self-Hosted Model 支持**
- vLLM
- TGI (Text Generation Inference)
- Ollama
- LocalAI
4. **MCP 能力增强**
- 支持 MCP Server 动态发现推理模型
- 将推理结果作为 Resource 暴露给 AI Agent
- 实现 Prompt Templates 管理
5. **性能测试和基准**
- 使用 `tools/benchmark` 进行性能测试
- 对比 Pixiu 与直连 LLM Provider 的性能
- 生成性能报告
6. **最佳实践文档**
- 成本优化指南
- 性能调优手册
- 安全加固指南
- 故障排查手册
#### 交付物
- ✅ Kubernetes Operator 和 CRD
- ✅ 多云 Provider 支持(至少 5 个)
- ✅ Self-Hosted Model 集成方案
- ✅ 性能基准报告
- ✅ 最佳实践文档库
---
## 五、技术实现细节
### 5.1 目录结构设计
```
pkg/
├── adapter/
│ ├── llmregistry/ # LLM 服务注册中心(已有)
│ ├── mcpserver/ # MCP 服务注册中心(已有)
│ └── airegistry/ # 新增:统一 AI 服务注册(Phase 3)
├── filter/
│ ├── llm/ # LLM 相关过滤器(已有)
│ │ ├── proxy/
│ │ └── tokenizer/
│ ├── mcp/ # MCP 相关过滤器(已有)
│ │ └── mcpserver/
│ └── ai/ # 新增:AI 推理过滤器目录
│ ├── inference_router/ # Phase 1:推理路由器
│ ├── cache/ # Phase 1:请求缓存
│ ├── batch/ # Phase 2:批处理
│ ├── security/ # Phase 2:安全与审计
│ └── priority/ # Phase 3:优先级队列
├── model/
│ ├── llm.go # 扩展 LLMMeta 结构
│ ├── ai_policy.go # 新增:AI 治理策略模型
│ └── ai_metrics.go # 新增:AI 指标模型
└── server/
├── cluster_manager.go # 已有:集群管理(需扩展)
└── ai_router.go # 新增:AI 路由管理器(Phase 1)
controllers/
└── api/v1alpha1/
└── aiinferencepolicy_types.go # Phase 4:K8s CRD 定义
```
### 5.2 关键接口设计
#### 5.2.1 AI Inference Router Interface
```go
// pkg/filter/ai/inference_router/router.go
package inference_router
import (
"github.com/apache/dubbo-go-pixiu/pkg/model"
contexthttp "github.com/apache/dubbo-go-pixiu/pkg/context/http"
)
type RoutingStrategy string
const (
StrategyLatencyOptimized RoutingStrategy = "latency_optimized"
StrategyCostOptimized RoutingStrategy = "cost_optimized"
StrategyQualityOptimized RoutingStrategy = "quality_optimized"
StrategyBalanced RoutingStrategy = "balanced"
)
type AIInferenceRouter interface {
// SelectEndpoint 根据策略选择最优推理服务端点
SelectEndpoint(ctx *contexthttp.HttpContext, model string, version string)
(*model.Endpoint, error)
// CanaryRoute 执行灰度路由(按权重分流)
CanaryRoute(ctx *contexthttp.HttpContext, versions []ModelVersion)
(*model.Endpoint, error)
// FallbackRoute 失败后降级路由
FallbackRoute(ctx *contexthttp.HttpContext, failedEndpoint *model.Endpoint)
(*model.Endpoint, error)
}
type ModelVersion struct {
Version string
Weight int // 0-100
Cluster string
}
type RouterConfig struct {
Strategy RoutingStrategy
ModelVersions []ModelVersion
FallbackModel string
EnableCanary bool
CanaryHeaders []string // 用于灰度流量识别的 Header
CostWeightFactor float64 // 成本权重(0-1)
LatencyWeightFactor float64 // 延迟权重(0-1)
}
```
#### 5.2.2 AI Cost Manager Interface
```go
// pkg/filter/ai/cost/cost_manager.go
package cost
import (
contexthttp "github.com/apache/dubbo-go-pixiu/pkg/context/http"
)
type CostManager interface {
// CalculateCost 计算请求成本
CalculateCost(model string, inputTokens, outputTokens int) float64
// CheckQuota 检查用户配额是否充足
CheckQuota(userID string, estimatedCost float64) (bool, error)
// ConsumeQuota 消耗用户配额
ConsumeQuota(userID string, actualCost float64) error
// SuggestDowngrade 当配额不足时推荐降级模型
SuggestDowngrade(currentModel string, userID string) (string, error)
}
type UserQuota struct {
UserID string
DailyBudget float64 // 美元
CurrentUsage float64 // 今日已消耗
AutoDowngrade bool
DowngradeModel string
}
type CostModel struct {
ModelName string
InputTokenPrice float64 // 美元/Token
OutputTokenPrice float64
}
```
#### 5.2.3 AI Cache Interface
```go
// pkg/filter/ai/cache/cache.go
package cache
import (
contexthttp "github.com/apache/dubbo-go-pixiu/pkg/context/http"
)
type CacheStrategy string
const (
StrategyExactMatch CacheStrategy = "exact_match"
StrategySemanticMatch CacheStrategy = "semantic_match"
)
type AICache interface {
// Get 获取缓存的推理结果
Get(ctx *contexthttp.HttpContext, cacheKey string) ([]byte, bool, error)
// Set 存储推理结果到缓存
Set(ctx *contexthttp.HttpContext, cacheKey string, result []byte, ttl int)
error
// GenerateCacheKey 生成缓存键
GenerateCacheKey(model string, prompt string, params map[string]any) string
// SemanticSearch 语义相似度搜索(可选)
SemanticSearch(embedding []float64, threshold float64) ([]byte, bool, error)
}
type CacheConfig struct {
Enabled bool
Backend string // "redis" or "memory"
Strategy CacheStrategy
TTL int // 秒
RedisAddr string
RedisDB int
// 语义匹配配置
EmbeddingModel string
SimilarityThreshold float64
VectorDBEndpoint string // Milvus/Qdrant endpoint
}
```
### 5.3 配置文件示例
#### 5.3.1 完整的 AI 推理配置
```yaml
# configs/ai_inference_config.yaml
# 静态资源配置
static_resources:
listeners:
- name: "ai-gateway-listener"
protocol: HTTP
address:
socket_address:
address: "0.0.0.0"
port: 8888
filter_chains:
- filters:
# 1. 认证与授权
- name: dgp.filter.auth.jwt
config:
secret: "your-jwt-secret"
issuer: "pixiu-ai-gateway"
# 2. AI 安全与审计
- name: dgp.filter.ai.security
config:
enable_pii_masking: true
enable_audit_log: true
audit_sink: kafka
kafka:
brokers: ["localhost:9092"]
topic: ai_audit_logs
access_policies:
- user_group: premium
allowed_models: ["gpt-4", "claude-3"]
rate_limit: 10000/day
# 3. AI 请求缓存
- name: dgp.filter.ai.cache
config:
enabled: true
backend: redis
redis:
address: "127.0.0.1:6379"
db: 0
ttl: 3600
cache_strategy: exact_match
# 4. Token 计数与成本管理
- name: dgp.filter.llm.tokenizer
config:
enable_cost_tracking: true
cost_models:
- model: gpt-4
input_token_price: 0.00003
output_token_price: 0.00006
- model: gpt-3.5-turbo
input_token_price: 0.0000015
output_token_price: 0.000002
user_quotas:
- user_id: "tenant-001"
daily_budget: 100.0
auto_downgrade: true
downgrade_model: gpt-3.5-turbo
# 5. AI 推理路由器
- name: dgp.filter.ai.inference_router
config:
routing_strategy: balanced
cost_weight_factor: 0.4
latency_weight_factor: 0.6
model_versions:
- model: gpt-4
version: "v1.0"
cluster: openai_cluster
weight: 80
- model: gpt-4
version: "v1.1-canary"
cluster: openai_canary_cluster
weight: 20
fallback_model: gpt-3.5-turbo
# 6. 限流(Sentinel)
- name: dgp.filter.sentinel
config:
rules:
- resource: "ai-inference"
threshold: 1000
grade: QPS
# 7. LLM 代理
- name: dgp.filter.llm.proxy
config:
timeout: 30s
# 8. Metrics 采集
- name: dgp.filter.metric
config:
enable_ai_metrics: true
# 集群配置
clusters:
# OpenAI 主集群
- name: openai_cluster
lb_policy: round_robin
health_checks:
- protocol: HTTP
timeout: 5s
interval: 10s
unhealthy_threshold: 3
endpoints:
- id: openai-primary
socket_address:
domains:
- api.openai.com
llm_meta:
provider: openai
model_version: "v1.0"
api_key: "sk-xxxx"
fallback: true
retry_policy:
name: ExponentialBackoff
config:
times: 3
initialInterval: 200ms
maxInterval: 5s
multiplier: 2.0
cost_per_input_token: 0.00003
cost_per_output_token: 0.00006
max_tokens: 8192
# OpenAI 灰度集群
- name: openai_canary_cluster
lb_policy: round_robin
endpoints:
- id: openai-canary
socket_address:
domains:
- api.openai.com
llm_meta:
provider: openai
model_version: "v1.1-canary"
api_key: "sk-yyyy"
cost_per_input_token: 0.00003
cost_per_output_token: 0.00006
# DeepSeek 备用集群
- name: deepseek_cluster
lb_policy: round_robin
endpoints:
- id: deepseek-primary
socket_address:
domains:
- api.deepseek.com
llm_meta:
provider: deepseek
model_version: "v1.0"
api_key: "ds-xxxx"
fallback: false
cost_per_input_token: 0.000001
cost_per_output_token: 0.000002
# 适配器配置(服务发现)
adapters:
- id: llm-registry
name: dgp.adapter.llmregistrycenter
config:
registries:
nacos:
protocol: nacos
address: "127.0.0.1:8848"
timeout: "5s"
group: llm_registry_group
namespace: public
# 可观测性配置
tracing:
enable: true
type: otlp
endpoint: "http://localhost:4318"
sample_rate: 1.0
metric:
enable: true
prometheus:
push_gateway_url: "http://localhost:9091"
push_job_name: "pixiu-ai-gateway"
push_interval: 10s
```
---
## 六、性能与成本优化策略
### 6.1 性能优化
1. **请求缓存**
- 精确匹配:缓存相同 Prompt 的结果
- 语义匹配:缓存相似 Prompt 的结果(节省 20-40% 请求)
2. **批处理**
- 聚合多个请求,减少网络往返
- 适用于 Embeddings、批量分类等场景
- 预期减少延迟 30%
3. **连接池化**
- 复用 HTTP/gRPC 连接
- 减少 TLS 握手开销
4. **异步非阻塞**
- 使用 Go Goroutine 实现异步转发
- 避免阻塞其他请求
### 6.2 成本优化
1. **智能路由**
- 优先选择低成本模型(如 gpt-3.5-turbo)
- 只在必要时使用高成本模型(如 gpt-4)
2. **用户配额管理**
- 限制每日/每月消费上限
- 超额自动降级或拒绝
3. **请求去重**
- 检测并合并相同请求
- 减少重复计费
4. **模型降级**
- 当配额不足或服务过载时,自动降级到低成本模型
---
## 七、可观测性与监控
### 7.1 核心指标
#### 业务指标
- `ai_inference_requests_total`:推理请求总数(按模型、用户、状态)
- `ai_inference_cost_usd_total`:推理成本总计(美元)
- `ai_inference_tokens_total`:Token 消耗总数(按输入/输出)
- `ai_inference_cache_hit_ratio`:缓存命中率
#### 性能指标
- `ai_inference_latency_seconds`:推理延迟(P50/P95/P99)
- `ai_inference_queue_length`:请求队列长度
- `ai_inference_batch_size`:批处理大小分布
#### 健康指标
- `ai_inference_endpoint_health`:端点健康状态
- `ai_inference_fallback_count`:降级次数
- `ai_inference_error_rate`:错误率
### 7.2 日志采集
#### 审计日志
```json
{
"timestamp": "2026-01-04T14:00:00Z",
"user_id": "tenant-001",
"model": "gpt-4",
"version": "v1.0",
"prompt_hash": "sha256:abcd...",
"input_tokens": 120,
"output_tokens": 350,
"cost_usd": 0.0135,
"latency_ms": 1234,
"endpoint": "openai-primary",
"cache_hit": false,
"status": "success"
}
```
### 7.3 Grafana Dashboard
提供预配置的 Grafana Dashboard,包含:
- 实时推理 QPS 和延迟
- 按模型和用户的成本趋势
- 缓存命中率和节省成本统计
- 错误率和降级次数
- 集群健康状态
---
## 八、安全与合规
### 8.1 认证与授权
1. **JWT Token 认证**
- 集成现有 `dgp.filter.auth.jwt`
- 颁发带有用户等级和配额信息的 Token
2. **API Key 管理**
- 支持多级 API Key(Admin、User、Service)
- 定期轮换和失效机制
3. **RBAC/ABAC**
- 基于角色/属性的访问控制
- 限制用户可访问的模型范围
### 8.2 数据安全
1. **PII 脱敏**
- 自动检测并脱敏邮箱、电话、身份证等敏感信息
- 可配置脱敏策略
2. **传输加密**
- 支持 HTTPS/TLS
- mTLS 支持(Service Mesh 场景)
3. **审计日志**
- 记录所有推理请求和响应
- 支持导出到 Kafka、Elasticsearch、S3
### 8.3 合规性
1. **GDPR 合规**
- 用户数据删除接口
- 数据导出功能
2. **SOC 2 合规**
- 访问控制和审计日志
- 定期安全审计
---
## 九、测试与验证
### 9.1 单元测试
- 每个 Filter 至少 80% 代码覆盖率
- 测试用例覆盖正常、异常、边界场景
### 9.2 集成测试
- 端到端推理流程测试
- 多集群故障切换测试
- 成本计算准确性验证
### 9.3 性能测试
使用 `tools/benchmark` 进行压测:
- QPS:10000/s(单实例)
- 延迟:P99 < 2s
- 缓存命中率:> 30%
- 成本降低:> 25%
### 9.4 混沌测试
- 模拟 LLM Provider 故障
- 验证 Fallback 和重试机制
- 测试缓存和批处理在高负载下的稳定性
---
## 十、部署与运维
### 10.1 部署模式
#### 模式 1:独立 AI Gateway
```
┌─────────────┐
│ AI Clients │
└──────┬──────┘
│
┌──────▼──────────────────┐
│ Pixiu AI Gateway │
│ (Deployment/StatefulSet)│
└──────┬──────────────────┘
│
┌────┼─────┬─────────┐
│ │ │ │
┌─▼──┐ │ ┌──▼──┐ ┌───▼──┐
│LLM1│ │ │LLM2 │ │LLM3 │
└────┘ │ └─────┘ └──────┘
```
#### 模式 2:Sidecar
```
┌──────────────────────────┐
│ Application Pod │
│ ┌───────────────────┐ │
│ │ App Container │ │
│ └─────────┬─────────┘ │
│ │ │
│ ┌─────────▼─────────┐ │
│ │ Pixiu AI Sidecar │ │
│ └───────────────────┘ │
└──────────────────────────┘
```
### 10.2 资源规划
#### 推荐配置(中等规模)
- **CPU**: 4 核
- **内存**: 8GB
- **实例数**: 3+(高可用)
- **Redis**: 独立部署,内存 4GB
#### 大规模部署
- **CPU**: 8 核
- **内存**: 16GB
- **实例数**: 10+(水平扩展)
- **Redis**: 集群模式,内存 16GB+
### 10.3 监控告警
#### 关键告警
1. **推理错误率 > 5%**:立即告警
2. **P99 延迟 > 5s**:警告告警
3. **成本超预算 > 10%**:邮件通知
4. **缓存命中率 < 20%**:优化建议
5. **端点健康检查失败**:自动切换
---
## 十一、风险与挑战
### 11.1 技术风险
| 风险 | 影响 | 缓解措施 |
|------|------|---------|
| LLM Provider 限流 | 推理失败 | 实现多 Provider Fallback |
| 缓存一致性问题 | 返回过期结果 | 严格控制 TTL 和失效策略 |
| 批处理延迟增加 | 用户体验下降 | 设置最大等待时间(100ms) |
| 语义缓存准确率低 | 缓存命中率低 | 优化 Embedding 模型和阈值 |
### 11.2 运维风险
| 风险 | 影响 | 缓解措施 |
|------|------|---------|
| Redis 单点故障 | 缓存失效 | 使用 Redis Sentinel/Cluster |
| 成本计算错误 | 超预算 | 定期对账和审计 |
| 配置错误导致路由失败 | 服务中断 | 配置校验和灰度发布 |
---
## 十二、总结与展望
### 12.1 Pixiu 在 AI 推理中的核心价值
1. **统一流量入口**:所有 AI 推理请求统一管理和治理
2. **降本增效**:通过缓存、批处理、智能路由降低成本 25%+
3. **高可用性**:多 Provider Fallback,端到端可用性 > 99.9%
4. **可观测性**:全链路追踪和监控,快速定位问题
5. **安全合规**:PII 脱敏、审计日志、访问控制
GitHub link: https://github.com/apache/dubbo-go-pixiu/discussions/859
----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]