Add HOT/WARM/COLD data tier to design doc

This commit is contained in:
jackyu66git
2026-05-03 17:16:01 +08:00
parent 8861304390
commit 189fc0d9b6
+33 -9
View File
@@ -325,21 +325,45 @@ func (h *SSEHub) Broadcast(eventType string, data interface{})
## 8. 数据流 ## 8. 数据流
### 三层数据分层
```
┌──────────────────────────────────────────────┐
│ HOT (内存 only, 500ms) │
│ PriceStore: 6币×4所 实时价 │
│ Trader.positions: 当前持仓 │
│ Scanner: 扫描结果 │
│ 不落盘,重启丢失,但重连 WS 秒恢复 │
├──────────────────────────────────────────────┤
│ WARM (SQLite, 事件驱动) │
│ 平仓 → INSERT trades │
│ 每腿成交 → INSERT orders │
│ 配置修改 → INSERT/UPSERT config_snapshots │
│ WS 重连 → INSERT exchange_events(可选) │
│ 写入频率: < 1次/秒 │
├──────────────────────────────────────────────┤
│ COLD (时序方案待定, 未来) │
│ 价格存档:每分钟采样 × 6币 × 4所 │
│ 日产量: ~34,560行 → 可存 SQLite 也可用 │
│ TimescaleDB / InfluxDB (如果要做回测平台) │
└──────────────────────────────────────────────┘
```
### 实时数据 → 网页
``` ```
WS 数据流 (500ms): WS 数据流 (500ms):
┌─────────┐ price ┌──────────┐ SSE push ┌─────────┐ ┌─────────┐ price ┌──────────┐ SSE push ┌─────────┐
│ Exchange│──────────►│ Engine │─────────────►│ Browser │ │ Exchange│──────────►│ Engine │─────────────►│ Browser │
│ WS │ │(内存状态)│ │(实时更新)│ │ WS │ │ (HOT层) │ │(实时更新)│
└─────────┘ └────┬─────┘ └─────────┘ └─────────┘ └────┬─────┘ └─────────┘
仅事件写入
│ 写入 SQLite ┌─────▼──────┐
│ SQLite │
┌──────────┐ │ (WARM层) │
│ SQLite │ └────────────┘
│ (持久化) │
└──────────┘
API 请求: API 请求 (读 WARM 层):
┌─────────┐ GET /api/... ┌──────────┐ SQL ┌────────┐ ┌─────────┐ GET /api/... ┌──────────┐ SQL ┌────────┐
│ Browser │────────────────►│ Server │──────────►│ SQLite │ │ Browser │────────────────►│ Server │──────────►│ SQLite │
│ (页面) │◄────────────────│(REST API)│◄──────────┘ │ │ (页面) │◄────────────────│(REST API)│◄──────────┘ │