aerox 0.1.1

AeroX - 高性能游戏服务器后端框架
Documentation
# AeroX 架构设计文档

## 版本: v0.1.0
## 更新时间: 2025-12-27

---

## 1. 整体架构

```
┌─────────────────────────────────────────┐
│            Application Layer            │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐  │
│  │ PluginA │ │ PluginB │ │ PluginC │  │
│  └─────────┘ └─────────┘ └─────────┘  │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│             Framework Core              │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐  │
│  │  Router │ │   ECS   │ │  Config │  │
│  └─────────┘ └─────────┘ └─────────┘  │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│           Network Abstraction           │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐  │
│  │   TCP   │ │   KCP   │ │   QUIC  │  │
│  └─────────┘ └─────────┘ └─────────┘  │
└─────────────────────────────────────────┘
```

---

## 2. Reactor 模式设计

### 2.1 主线程 (Reactor)

```
主线程
├── 监听端口,接受新连接
├── 连接限制检查
├── 将连接分配给工作线程
└── 管理连接生命周期
```

### 2.2 工作线程 (Worker)

```
Worker × N
├── 处理消息读取/写入
├── 执行路由处理函数
├── 触发 ECS 事件
└── 应用中间件
```

---

## 3. 模块架构

### 3.1 当前已实现模块 (v0.1.0)

#### config 模块
- **ServerConfig**: 服务器基础配置
- **ReactorConfig**: Reactor 模式配置
- **功能**: 文件加载、验证、环境变量支持(规划中)

#### error 模块
- **AeroXError**: 统一错误类型
- **Result**: 类型别名
- **功能**: 错误转换、错误链

### 3.2 规划中的模块

#### reactor 模块
- **TcpReactor**: 主 Reactor 结构
- **Acceptor**: 连接接受器
- **Worker**: 工作线程
- **ConnectionBalancer**: 连接均衡器

#### connection 模块
- **ConnectionId**: 连接唯一标识
- **Connection**: 连接元数据
- **ConnectionPool**: 连接池管理
- **ConnectionMetrics**: 连接指标

#### protocol 模块
- **Frame**: 消息帧结构
- **Encoder**: 消息序列化
- **Decoder**: 消息反序列化

#### router 模块
- **Router**: 路由表
- **Route**: 路由定义
- **Context**: 请求上下文
- **Handler**: 处理函数 trait

#### middleware 模块
- **Middleware**: 中间件 trait
- **Layer**: 中间件层
- **Next**: 调用链

#### plugin 模块
- **Plugin**: 插件 trait
- **App**: 应用构建器
- **PluginRegistry**: 插件注册表

---

## 4. 数据流设计

### 4.1 连接建立流程

```
客户端连接
Acceptor 接受连接
连接限制检查
分配到 Worker
加入 ConnectionPool
等待消息
```

### 4.2 消息处理流程

```
接收消息
Decoder 解码
Middleware 链处理
Router 路由
Handler 处理
ECS 事件触发
Encoder 编码响应
发送响应
```

---

## 5. 配置系统设计

### 5.1 配置层级

```
默认值
配置文件 (TOML)
环境变量
运行时修改 (规划中)
```

### 5.2 当前配置结构

```rust
ServerConfig {
    bind_address: String,           // 绑定地址
    port: u16,                      // 端口
    max_connections: Option<u32>,   // 最大连接数
    max_requests_per_second_per_connection: Option<u32>,
    max_requests_per_second_total: Option<u32>,
    enable_ddos_protection: bool,   // DDoS 防护
    worker_threads: Option<usize>,  // 工作线程数
}

ReactorConfig {
    reactor_buffer_size: usize,     // 缓冲区大小
    batch_size: usize,              // 批处理大小
    batch_timeout_ms: u64,          // 批处理超时
    connection_timeout_secs: u64,   // 连接超时
}
```

---

## 6. 错误处理策略

### 6.1 错误分类

- **IO 错误**: 网络、文件操作错误
- **配置错误**: 配置解析、验证错误
- **协议错误**: 消息编解码错误
- **网络错误**: 连接、传输错误
- **路由错误**: 消息路由失败
- **序列化错误**: 数据序列化失败
- **连接错误**: 连接管理错误
- **超时错误**: 操作超时
- **未实现特性**: 功能未实现

### 6.2 错误处理原则

1. **使用 thiserror**: 提供清晰的错误信息
2. **错误链**: 保留底层错误上下文
3. **类型安全**: 使用强类型 Result
4. **可恢复性**: 区分可恢复和不可恢复错误

---

## 7. 性能考虑

### 7.1 零拷贝设计

- 使用 `bytes::Bytes` 管理缓冲区
- 消息引用传递
- 避免不必要的内存分配

### 7.2 并发模型

- Tokio 异步运行时
- 多 Worker 线程
- 每个连接绑定到单个 Worker

### 7.3 批处理优化

- 消息批量处理
- 批量反序列化
- 批量序列化响应

---

## 8. 安全设计

### 8.1 防护机制

- 连接频率限制
- 消息大小限制
- 协议校验
- DDoS 防护

### 8.2 认证授权(规划中)

- Token 认证
- IP 白名单
- TLS 支持

---

## 9. 测试策略

### 9.1 单元测试

- 每个模块的单元测试
- 边界条件测试
- 错误处理测试

### 9.2 集成测试

- 完整的连接流程测试
- 消息处理测试
- 并发测试

### 9.3 性能测试

- 基准测试
- 压力测试
- 内存使用分析

---

## 10. 开发里程碑

- [x] Phase 1.0: 项目基础设施
- [ ] Phase 1.1: 配置系统
- [ ] Phase 1.2: 错误处理
- [ ] Phase 1.3: TCP Reactor
- [ ] Phase 1.4: 连接管理
- [ ] Phase 1.5: 消息编解码
- [ ] Phase 1.6: 路由系统
- [ ] Phase 1.7: 中间件系统
- [ ] Phase 1.8: 插件系统
- [ ] Phase 1.9-1.12: 高级特性和发布

---

## 参考资源

- [Tokio 官方文档]https://tokio.rs/
- [Bevy ECS 文档]https://bevyengine.org/
- [Rust 异步编程]https://rust-lang.github.io/async-book/