From 189fc0d9b61a4727dd716927cd0c4718b1321ccf Mon Sep 17 00:00:00 2001 From: jackyu66git Date: Sun, 3 May 2026 17:16:01 +0800 Subject: [PATCH] Add HOT/WARM/COLD data tier to design doc --- persistence.md | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/persistence.md b/persistence.md index 7cd08e7..2a4c434 100644 --- a/persistence.md +++ b/persistence.md @@ -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)│◄──────────┘ │