Add HOT/WARM/COLD data tier to design doc
This commit is contained in:
+33
-9
@@ -325,21 +325,45 @@ func (h *SSEHub) Broadcast(eventType string, data interface{})
|
||||
|
||||
## 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):
|
||||
┌─────────┐ price ┌──────────┐ SSE push ┌─────────┐
|
||||
│ Exchange│──────────►│ Engine │─────────────►│ Browser │
|
||||
│ WS │ │(内存状态)│ │(实时更新)│
|
||||
│ WS │ │ (HOT层) │ │(实时更新)│
|
||||
└─────────┘ └────┬─────┘ └─────────┘
|
||||
│
|
||||
│ 写入 SQLite
|
||||
▼
|
||||
┌──────────┐
|
||||
│ SQLite │
|
||||
│ (持久化) │
|
||||
└──────────┘
|
||||
│ 仅事件写入
|
||||
┌─────▼──────┐
|
||||
│ SQLite │
|
||||
│ (WARM层) │
|
||||
└────────────┘
|
||||
|
||||
API 请求:
|
||||
API 请求 (读 WARM 层):
|
||||
┌─────────┐ GET /api/... ┌──────────┐ SQL ┌────────┐
|
||||
│ Browser │────────────────►│ Server │──────────►│ SQLite │
|
||||
│ (页面) │◄────────────────│(REST API)│◄──────────┘ │
|
||||
|
||||
Reference in New Issue
Block a user