Mycat3.0 架构设计
状态: 本文档为设计阶段文档,内容可能随时更新。
设计哲学
Mycat3.0 代号 Aicat (AI-powered Mycat),在 Mycat1.6 和 Mycat2 的基础上,引入三大核心设计理念:
- AI First: 将AI能力深度融入查询优化、容量规划和运维管理中
- Cloud Native First: 从设计之初就面向云原生,支持Kubernetes和服务网格
- Multi-Model First: 统一支持关系型、文档型、时序型和图数据模型
核心架构层次
┌───────────────────────────────────────────────────────┐
│ Access Layer │
│ MySQL Protocol | PostgreSQL Protocol | gRPC | REST │
└───────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────┐
│ Management Layer │
│ Cluster Manager | Meta Manager | Config Center │
└───────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────┐
│ Query Optimization Layer │
│ AI Optimizer | Cost Optimizer | Rule Optimizer | Cache│
└───────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────┐
│ Execution Layer │
│ Protocol Handler | Sharding Engine | Tx Manager │
└───────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────┐
│ Storage Abstraction Layer │
│ MySQL | PostgreSQL | MongoDB | InfluxDB | Neo4j │
└───────────────────────────────────────────────────────┘
AI优化器设计
核心能力
- 查询模式学习: 分析历史SQL模式,预测最优执行计划
- 索引推荐: 基于查询频率和数据分布推荐最优索引
- 连接顺序优化: ML模型预测最佳JOIN顺序
- 分片键推荐: 分析SQL模式智能推荐分片策略
- 预热与缓存: 预测热点数据并提前缓存
云原生设计
apiVersion: Mycat3.io/v1
kind: Mycat3Cluster
metadata:
name: production
spec:
version: 3.0.0
replicas: 3
storage:
type: mysql
connectionPool:
maxConnections: 1000
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilization: 80
ai:
enabled: true
modelPath: /models/
多模数据支持
| 数据模型 | 后端 | 使用场景 |
|---|---|---|
| 关系型 | MySQL, PostgreSQL | OLTP, 报表 |
| 文档型 | MongoDB, Elasticsearch | 内容管理, 搜索 |
| 时序型 | InfluxDB, TimescaleDB | IoT, 监控指标 |
| 图数据 | Neo4j, Apache Age | 社交网络, 风控 |
技术栈
| 组件 | 技术选型 |
|---|---|
| 核心语言 | Java 17+ / Kotlin |
| 网络框架 | Netty |
| 响应式框架 | Vert.x |
| SQL解析优化 | Apache Calcite |
| 协调服务 | ZooKeeper / etcd / Consul |
| AI/ML | TensorFlow, ONNX Runtime |
| 可观测性 | Prometheus, Jaeger, OpenTelemetry |
性能目标
| 指标 | 目标值 |
|---|---|
| 查询延迟 (P99) | < 5ms |
| 吞吐量 | > 100K QPS |
| HA故障切换 | < 1秒 |
| 最大数据节点 | 10,000 |
| 最大集群规模 | 100节点 |
开发路线图
Phase 1 (3.0.0): 基础架构
├── 核心查询路由
├── 基础分片策略
├── MySQL协议兼容
└── 单机部署
Phase 2 (3.2.0): 云原生
├── K8s Operator
├── 自动伸缩
├── 多租户
└── 服务网格集成
Phase 3 (3.4.0+): 智能化
├── AI查询优化器
├── 自动分片优化
├── 预测性伸缩
└── 异常检测
参与贡献: Mycat3.0 设计阶段欢迎社区参与讨论和贡献。请通过 GitHub Issues 提交建议。