技术栈总览

版本: 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 (轻量级日志)
            └─ 否 → 根据具体需求选择

选型决策矩阵

需求
方案1
方案2
推荐
理由

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