技术栈总览
版本: v1.0 最后更新: 2025-10-07
系统分层架构
┌─────────────────────────────────────────────────────────────┐
│ 应用层 (Trading Engine) │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 实时数据层 │ │ 日志监控层 │ │ 大数据层 │
│ │ │ │ │ │
│ Redis │ │ Loki/ELK │ │ ClickHouse │
│ KeyDB │ │ Prometheus │ │ Druid │
└──────────────┘ └──────────────┘ └──────────────┘
│ │ │
└─────────────────────┼─────────────────────┘
▼
┌──────────────────┐
│ 核心数据层 │
│ │
│ PostgreSQL │
│ CockroachDB │
└──────────────────┘
│
▼
┌──────────────────┐
│ 区块链层 │
│ Solana │
└──────────────────┘数据类型分类
核心交易数据
ACID、强一致性
PostgreSQL
CockroachDB
实时行情
高频读写、低延迟
Redis
KeyDB
历史数据
海量、查询分析
ClickHouse
TimescaleDB
日志数据
写多读少、全文搜索
Loki
Elasticsearch
风控规则
复杂查询、实时计算
PostgreSQL + Redis
Druid
用户行为
流式处理、离线分析
Kafka + ClickHouse
Flink + Druid
MVP 阶段架构(当前)
组件清单
1. PostgreSQL (必须)
版本: 16
配置: 8 CPU, 32GB RAM, 500GB SSD
用途: 核心业务数据(用户、订单、持仓、清算)
2. Redis (必须)
版本: 7
配置: 2 CPU, 8GB RAM
用途: 缓存、订单簿、会话、限流
3. Loki (必须)
版本: 2.9+
配置: 2 CPU, 4GB RAM
用途: 日志收集与查询
4. Prometheus + Grafana (必须)
配置: 2 CPU, 4GB RAM
用途: 监控告警与可视化
系统架构图
┌─────────────────────────────────────────────┐
│ 应用层 │
│ Trading Engine (Rust) + API Gateway │
└─────────────────────────────────────────────┘
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
▼ ▼ ▼ ▼ ▼ ▼
┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
│ Redis │ │Postgres│ │ Loki │ │Prometh │
│8GB │ │32GB │ │(日志) │ │(指标) │
└────────┘ └────────┘ └────────┘ └────────┘
│ │ │ │
└─────────┴───────────┴──────────┘
│
▼
┌──────────────┐
│ Grafana │
│ (可视化) │
└──────────────┘月成本: ~$300-500 (云服务器)
性能指标:
下单TPS: 5,000
订单簿更新延迟: < 10ms
数据库写入TPS: 10,000
Redis QPS: 100K
日志吞吐: 100GB/天
扩展阶段架构(6-12个月)
系统架构图
┌─────────────────────────────────────────────────────────────┐
│ 应用层 (多实例) │
│ Trading Engine × 3 | API Gateway × 3 | Keeper × 2 │
└─────────────────────────────────────────────────────────────┘
│ │ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
┌─────────┐┌─────────┐┌─────────┐┌─────────┐┌─────────┐┌─────────┐
│ Redis ││Postgres ││ Kafka ││ClickHouse││ Loki ││Prometheus│
│ Cluster ││1主2从 ││3节点 ││2节点 ││ ││ │
│ 3主3从 ││ ││ ││ ││ ││ │
└─────────┘└─────────┘└─────────┘└─────────┘└─────────┘└─────────┘新增组件
1. Redis Cluster
3主3从配置
16GB/节点
高可用架构
自动分片
2. PostgreSQL 主从
1主2从
读写分离
自动故障转移
流复制
3. Kafka
3节点集群
数据管道
事件流处理
持久化消息队列
4. ClickHouse
2节点集群
历史数据分析
报表生成
列式存储
5. TimescaleDB
PostgreSQL扩展
K线数据存储
自动分区
连续聚合
月成本: ~$2000-3000
性能指标:
下单TPS: 50,000
订单簿更新延迟: < 5ms
数据库写入TPS: 50,000
Redis QPS: 1M
日志吞吐: 1TB/天
分析查询延迟: < 3s (亿级数据)
完整数据流图
用户请求
│
▼
API Gateway
│
├─→ Redis (检查会话、限流)
│
▼
Trading Engine
│
├─→ Redis (读写订单簿)
├─→ PostgreSQL (写订单记录)
│
▼ (成交后)
结算引擎
│
├─→ Redis Streams (发布成交事件)
├─→ PostgreSQL (更新持仓)
├─→ Solana (链上结算)
│
▼ (异步消费)
Kafka Consumer
│
├─→ ClickHouse (归档交易数据)
├─→ Notification (推送通知)
│
▼ (日志和监控)
Loki & Prometheus
│
▼
Grafana Dashboard技术选型原则
数据库选型决策树
需要ACID事务?
├─ 是 → PostgreSQL (核心业务数据)
└─ 否
│
需要高频读写?
├─ 是 → Redis (缓存、订单簿)
└─ 否
│
需要海量数据分析?
├─ 是 → ClickHouse (历史数据)
└─ 否
│
需要日志收集?
├─ 是 → Loki (轻量级日志)
└─ 否 → 根据具体需求选择选型决策矩阵
OLTP数据库
PostgreSQL
MySQL
PostgreSQL
ACID更强、功能更丰富
缓存
Redis
Memcached
Redis
数据结构丰富
OLAP数据库
ClickHouse
Druid
ClickHouse
性能更高、成本更低
时序数据
TimescaleDB
InfluxDB
TimescaleDB
PostgreSQL生态
日志系统
Loki
ELK
Loki
轻量级、低成本
消息队列
Redis Streams
Kafka
MVP: Redis 扩展: Kafka
渐进式演进
避免的技术陷阱
不要
用MongoDB存储金融数据(事务保证不足)
用MySQL替代PostgreSQL(功能较弱)
过早引入ClickHouse(MVP增加复杂度)
用Elasticsearch做主日志系统(成本高)
混用多种技术栈(维护困难)
应该
优先使用PostgreSQL和Redis
日志用Loki(轻量级)
后期再引入ClickHouse
保持技术栈简洁
逐步扩展
相关文档
维护: Zanbara 技术团队
Last updated