Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

thinkAfCod/qaexchange-rs

Repository files navigation

QAEXCHANGE-RS

版本: v1.5.0 (生产就绪版)

更新日期: 2025年12月21日

功能完成度: ✅ 100% (Phase 1-13 已完成)

开发状态: 生产就绪,持续优化中

高性能量化交易所系统 - 基于 QARS 核心架构构建


📸 系统截图

仪表盘与监控

Dashboard Monitor

账户管理

Accounts Accounts History

交易功能

Trading Order Batch Order Conditional Order

持仓与风控

Holding Risk

K线与行情

KLine

历史记录

Trade History Transfer


🆕 v1.5.0 更新亮点

新增功能

  • 二级索引系统 ✨: 时间序列/合约/记录类型三级索引,查询延迟 < 10μs
  • 智能压缩策略 ✨: ZSTD/LZ4/Snappy 按数据类型自动选择,压缩率提升 40%
  • 因子 WAL 持久化 ✨: 异步持久化 > 200K ops/s,崩溃恢复 < 500ms
  • TLS 安全通信 🔒: 主从复制支持 TLS 1.3 加密
  • 可观测性增强 📊: Prometheus 指标 + OpenTelemetry 追踪
  • 2025-2026 技术路线图 📋: 完整的演进计划

改进优化

  • Clippy 警告清零: qaexchange-rs 源码无 Clippy 警告
  • 环境变量配置化: ADMIN_TOKEN、WebSocket 超时等支持环境变量
  • 测试覆盖增强: 879 测试通过,覆盖率持续提升
  • 文档体系完善: 70+ 文档,新增安全指南、可观测性指南

📚 快速导航

我是...

⭐ = v0.4.0 新增文档 | ✨ = v1.5.0 新增功能 | 🆕 = 最新文档


项目概述

qaexchange-rs 是一个完整的交易所系统实现,支持万级账户并发交易,提供真实交易所级别的功能。

核心特性

用户管理: Phase 10 完整实现

  • JWT Token 认证 (HS256, 24小时有效期)
  • bcrypt 密码加密 (12轮成本)
  • 用户注册/登录/注销
  • WebSocket JWT 认证
  • 用户-账户绑定关系
  • WAL 持久化和恢复

账户管理: 开户/入金/出金/查询 (复用 qars::qaaccount)

订单系统: 下单/撤单/订单路由 (复用 qars::QAOrder)

撮合引擎: 价格时间优先/集合竞价/连续交易 (复用 qars::matchengine)

成交回报: 实时成交推送/账户更新 (rkyv 零拷贝序列化)

通知系统: 零延迟消息推送/多订阅者支持 (基于 rkyv)

存储系统: WAL + MemTable + SSTable 混合架构

  • WAL: 崩溃恢复,P99 < 50ms 写入延迟
  • MemTable: SkipMap OLTP / Arrow2 OLAP 双体系
  • SSTable: rkyv 零拷贝 / Parquet 列式存储
  • Compaction: 分层压缩策略
  • Bloom Filter: 1% 误报率高效查找
  • 二级索引 ✨: 时间/合约/类型三级索引 (Phase 11)
  • 智能压缩 ✨: ZSTD/LZ4/Snappy 按类型选择 (Phase 11)

因子系统: 流批统一因子引擎 ✨ Phase 11

  • 增量计算引擎 (RollingMean, EMA, RSI...)
  • DAG 依赖图管理
  • 状态检查点与恢复
  • WAL 异步持久化 ✨ (> 200K ops/s)

主从复制: Raft-inspired 自动故障转移

  • 批量日志复制 (< 10ms 延迟)
  • 心跳检测 (100ms 间隔)
  • 自动选主 (< 500ms 故障切换)
  • TLS 加密 🔒 (Phase 12)
  • 节点监控 📊 (CPU/内存/磁盘)

查询引擎: Polars DataFrame 分析引擎 (Phase 8)

  • SQL 查询支持
  • 结构化查询 (select, filter, aggregate)
  • 时间序列查询 (granularity 聚合)
  • Parquet 列式扫描 (> 1GB/s 吞吐)

行情推送系统: Phase 9 完善

  • WAL 行情持久化 (TickData, OrderBookSnapshot, OrderBookDelta)
  • L1 缓存优化 (DashMap, 100ms TTL, < 10μs 查询)
  • WebSocket 批量推送 (100条/批, 背压控制)
  • 崩溃恢复机制 (< 5s 恢复时间)
  • crossbeam 高性能分发

市场快照生成器: Phase 9 新增

  • 每秒级别市场快照生成 (35+ 字段)
  • OHLC 自动计算 (日内高开低收)
  • 买卖五档行情 (实时订单簿深度)
  • 成交统计 (累计成交量/成交额)
  • 零拷贝订阅 (crossbeam channel, 无限订阅者)

结算系统: 日终结算/盯市盈亏/强平处理

  • 完整集合竞价算法 (最大成交量原则 + tie-breaking)
  • 自动强平逻辑 (风险比率 >= 100%)
  • 结算价设置和账户清算

风控系统: 盘前风控/持仓限额/自成交防范

  • 并发下单竞态条件修复
  • 自成交防范 (同账户对手单检测)
  • 从撮合引擎撤单 (完整撤单流程)
  • 订阅过滤机制 (减少网络流量)

对外服务: WebSocket + HTTP API (Actix-web)

  • DIFF 协议完整实现 (登录/行情/下单/撤单/K线)
  • WebSocket JWT 认证
  • 环境变量配置化 ✨ (超时、认证等)

管理端功能: v0.4.0 完善

  • 合约管理: 上市/下市/修改合约 (6 API)
  • 结算管理: 批量设价/执行结算/查询结算 (5 API)
  • 风控管理: 查询风险账户/强平查询 (3 API)
  • 系统监控: 存储状态/账户统计/资金汇总 (6 API)
  • 市场数据: 订单簿/成交记录/活跃合约 (5 API)

可观测性: 🆕 Phase 12 新增

  • Prometheus 指标导出
  • OpenTelemetry 分布式追踪
  • 结构化日志 (tracing + tracing-subscriber)
  • Grafana 仪表盘模板

快速开始

编译项目

cd /home/quantaxis/qaexchange-rs
# 编译库
cargo build --lib
# 编译服务器
cargo build --bin qaexchange-server
# 编译所有示例
cargo build --examples

运行示例

# 运行账户开户示例
cargo run --example start_exchange
# 预期输出:
# === QAEXCHANGE Demo ===
#
# ✓ Account opened: demo_user
# Balance: 1000000
# Available: 1000000
#
# Demo completed.

启动服务器

# 基础启动
cargo run --bin qaexchange-server
# 使用环境变量配置
QAEXCHANGE_ADMIN_TOKEN=your_secure_token \
QAEXCHANGE_WS_HEARTBEAT_SECS=5 \
QAEXCHANGE_WS_TIMEOUT_SECS=10 \
cargo run --bin qaexchange-server

📊 功能完成度

开发阶段完成情况 (v1.5.0)

Phase 功能 状态 说明
Phase 1-2 核心交易 + 存储基础 WAL/MemTable/SSTable
Phase 3-5 压缩/IPC/检查点 Compaction/iceoryx2/Recovery
Phase 6-7 主从复制 + 性能优化 Raft/Bloom/mmap
Phase 8 查询引擎 Polars DataFrame
Phase 9 行情推送增强 L1 Cache/WAL/Recovery
Phase 10 用户管理 JWT/bcrypt/用户系统
Phase 11 性能优化 II 二级索引/压缩/因子WAL
Phase 12 生产就绪 TLS/可观测性/监控 🆕
Phase 13 网络层 🚧 gRPC 实现中

模块完成度

模块 进度 已完成 待实现 说明
用户管理 100% Phase 10 - JWT/bcrypt/用户注册登录
用户端页面 100% 9/9 - 账户/交易/持仓/历史/风险监控
管理端页面 100% 6/6 - 合约/结算/风控/监控/仪表盘
用户端API 100% 20/20 - REST API (账户/订单/持仓/历史)
管理端API 100% 25/25 - 合约/结算/风控/监控/市场
WebSocket 100% 8/8 - 实时消息 + JWT认证
行情推送 100% 4/4 - WAL持久化/L1缓存/批量推送/恢复
存储系统 100% Phase 1-11 - WAL/MemTable/SSTable/Index/Compression
因子系统 100% Phase 11 - 流批统一/DAG/WAL持久化
可观测性 🆕 100% Phase 12 - Prometheus/OpenTelemetry/Grafana
总计 100% Phase 1-12 Phase 13 ⭐ 生产就绪

详细功能映射: 功能映射矩阵


项目架构

qaexchange-rs/
├── src/
│ ├── lib.rs # 库入口
│ ├── main.rs # 服务器入口
│ │
│ ├── core/ # 核心模块 (复用 qars)
│ │ ├── account_ext.rs # 账户扩展
│ │ └── order_ext.rs # 订单扩展
│ │
│ ├── matching/ # 撮合引擎
│ │ ├── engine.rs # 撮合引擎封装
│ │ ├── auction.rs # 集合竞价
│ │ └── trade_recorder.rs # 成交记录器
│ │
│ ├── user/ # 用户管理系统 (Phase 10)
│ │ ├── mod.rs # 用户实体和请求/响应类型
│ │ ├── user_manager.rs # 用户生命周期管理
│ │ └── recovery.rs # WAL 用户数据恢复
│ │
│ ├── exchange/ # 交易所业务
│ │ ├── account_mgr.rs # 账户管理中心
│ │ ├── capital_mgr.rs # 资金管理
│ │ ├── order_router.rs # 订单路由
│ │ ├── trade_gateway.rs # 成交回报网关
│ │ ├── settlement.rs # 结算系统
│ │ └── instrument_registry.rs # 合约注册表
│ │
│ ├── risk/ # 风控系统 (自成交防范)
│ ├── market/ # 行情推送 (Phase 9)
│ │ ├── broadcaster.rs # 行情广播器 (crossbeam channel)
│ │ ├── snapshot_broadcaster.rs # 订单簿快照广播
│ │ ├── snapshot_generator.rs # 市场快照生成器
│ │ ├── cache.rs # L1 行情缓存 (DashMap, 100ms TTL)
│ │ ├── recovery.rs # 行情数据恢复器
│ │ └── mod.rs # MarketDataService
│ ├── service/ # 对外服务
│ │ ├── websocket/ # WebSocket 服务
│ │ └── http/ # HTTP API
│ ├── storage/ # 持久化存储
│ │ ├── wal/ # Write-Ahead Log
│ │ ├── memtable/ # 内存表 (SkipMap OLTP / Arrow2 OLAP)
│ │ ├── sstable/ # 持久化表 (rkyv / Parquet + Bloom Filter)
│ │ ├── index/ # 二级索引 ✨ Phase 11
│ │ │ ├── time_series.rs # 时间序列索引
│ │ │ ├── instrument.rs # 合约索引 (字符串驻留池)
│ │ │ ├── record_type.rs # 记录类型索引 (位掩码)
│ │ │ └── mod.rs # CompositeIndexManager
│ │ ├── hybrid/ # 混合存储管理器
│ │ ├── compaction/ # 后台压缩
│ │ ├── checkpoint/ # 快照管理
│ │ └── subscriber.rs # 异步存储订阅器
│ ├── replication/ # 主从复制 (Phase 6 + 12)
│ │ ├── log_replicator.rs # 批量日志复制
│ │ ├── role_manager.rs # Master/Slave/Candidate
│ │ ├── heartbeat.rs # 心跳检测
│ │ └── tls.rs # TLS 加密 🔒 Phase 12
│ ├── query/ # 查询引擎 (Phase 8)
│ │ ├── types.rs # 查询请求/响应类型
│ │ ├── scanner.rs # SSTable 扫描器
│ │ └── engine.rs # Polars 查询引擎
│ ├── factor/ # 因子系统 ✨ Phase 11
│ │ ├── engine.rs # 流批统一引擎
│ │ ├── dag.rs # DAG 依赖图
│ │ ├── state.rs # 状态存储与检查点
│ │ ├── view.rs # 物化视图
│ │ ├── wal_persister.rs # WAL 异步持久化 ✨
│ │ └── operators/ # 增量算子
│ ├── ipc/ # iceoryx2 零拷贝 IPC (可选)
│ ├── notification/ # 通知系统 (rkyv)
│ ├── protocol/ # 协议层 (QIFI/TIFI/MIFI)
│ └── utils/ # 工具模块
│
├── examples/ # 示例代码
│ ├── start_exchange.rs # 启动示例
│ ├── client_demo.rs # 客户端示例
│ └── stress_test.rs # 压力测试
│
└── tests/ # 集成测试

核心复用能力

模块 qars 复用 复用度 说明
账户系统 QA_Account ⭐⭐⭐⭐⭐ 95% 完整复用账户/持仓管理
订单系统 QAOrder + QIFI ⭐⭐⭐⭐⭐ 90% 订单结构和协议
撮合引擎 Orderbook ⭐⭐⭐⭐⭐ 98% 价格时间优先撮合
协议层 QIFI/TIFI/MIFI ⭐⭐⭐⭐⭐ 100% 完全复用
数据广播 broadcast_hub ⭐⭐⭐⭐⭐ 95% 零拷贝行情推送

🧩 核心模块详解

1. 交易所核心(Exchange Core)

位置: src/exchange/

模块:

AccountManager (account_mgr.rs): 账户生命周期管理

  • 开户/入金/出金/查询
  • 多账户并发访问 (DashMap<String, Arc<RwLock<QA_Account>>>)
  • 账户快照和恢复

OrderRouter (order_router.rs): 订单路由与验证

  • 订单接收/验证/路由
  • 盘前风控检查集成
  • 订单状态追踪

TradeGateway (trade_gateway.rs): 成交回报网关

  • 实时成交推送 (WebSocket)
  • 账户更新通知
  • rkyv零拷贝序列化 (125x vs JSON)

SettlementEngine (settlement.rs): 日终结算引擎

  • 盯市盈亏计算
  • 手续费结算
  • 强平检测 (风险度 >= 100%)
  • 批量账户结算

InstrumentRegistry (instrument_registry.rs): 合约注册表

  • 合约上市/下市 (含持仓安全检查)
  • 交易时间管理
  • 保证金率配置

性能: > 100K orders/sec 订单吞吐, P99 < 100μs 撮合延迟


2. 撮合引擎(Matching Engine)

位置: src/matching/ 复用: 98% 复用 qars::qamarket::matchengine::Orderbook

功能:

  • 价格-时间优先撮合算法
  • 集合竞价 (auction.rs)
  • 连续交易
  • 成交记录 (trade_recorder.rs)

性能: 基于qars撮合引擎, P99 < 100μs


3. 存储系统(Storage System)

位置: src/storage/ 架构: WAL + MemTable + SSTable (LSM-Tree) + 二级索引

模块:

WAL (wal/): Write-Ahead Log

  • 崩溃恢复机制 (CRC32 校验)
  • P99 < 50ms 写入延迟 (HDD)
  • 批量吞吐 > 78K entries/sec

MemTable (memtable/): 内存表

  • OLTP: SkipMap (P99 < 10μs 写入)
  • OLAP: Arrow2 列式格式

SSTable (sstable/): 持久化表

  • OLTP: rkyv 零拷贝序列化
  • OLAP: Parquet 列式存储
  • Bloom Filter: 1% FP rate, ~100ns 查找
  • mmap Reader: 零拷贝读取 (P99 < 50μs)
  • 智能压缩 ✨: ZSTD(3)/LZ4/Snappy 按类型选择

二级索引 ✨ (index/): Phase 11 新增

  • TimeSeriesIndex: BTreeMap 时间范围查询 O(log n + k)
  • InstrumentIndex: 按合约分区 + 字符串驻留池
  • RecordTypeIndex: 位掩码 O(1) 类型匹配
  • CompositeIndexManager: 智能查询路径选择

Compaction (compaction/): 后台压缩

  • Leveled compaction 策略

Checkpoint (checkpoint/): 快照管理

  • 账户快照创建/恢复

详细文档: WAL 设计 | MemTable 实现 | SSTable 格式 | 二级索引


4. 因子系统(Factor System)✨ Phase 11

位置: src/factor/ 架构: 流批统一计算引擎

模块:

  • FactorEngine (engine.rs): 增量计算引擎
  • FactorDAG (dag.rs): 依赖图管理
  • StateStorage (state.rs): 状态检查点 (ZSTD Level 3)
  • MaterializedView (view.rs): 物化视图
  • WalPersister (wal_persister.rs) ✨: 异步 WAL 持久化

性能:

  • 因子 WAL 吞吐: > 200K ops/s
  • 因子恢复: < 500ms/100K 条目
  • 检查点保存: ~5ms/100KB
  • 检查点加载: ~2ms/100KB

详细文档: 因子系统 | WAL 持久化


5. 查询引擎(Query Engine)Phase 8

位置: src/query/ 基础: Polars 0.51 DataFrame

功能:

  • SQL查询: SQLContext 支持标准SQL
  • 结构化查询: select, filter, aggregate, sort, limit
  • 时间序列查询: granularity 时间粒度聚合
  • Parquet扫描: 列式文件高效读取
  • 索引加速 ✨: 使用二级索引优化查询路径

性能:

  • SQL 查询 (100行): < 10ms
  • Parquet 扫描: > 1GB/s 吞吐
  • 聚合查询: < 50ms
  • 时间序列聚合: < 100ms

详细文档: Phase 8 查询引擎


6. 主从复制(Replication)Phase 6 + 12

位置: src/replication/ 协议: Raft-inspired 选主算法

模块:

  • LogReplicator (log_replicator.rs): 批量日志复制
  • RoleManager (role_manager.rs): Master/Slave/Candidate 角色管理
  • Heartbeat (heartbeat.rs): 心跳检测
  • TLS (tls.rs) 🔒: TLS 1.3 加密通信 (Phase 12)

性能:

  • 复制延迟: < 10ms
  • 心跳间隔: 100ms
  • 故障切换: < 500ms

安全特性 🔒:

  • TLS 1.3 加密
  • 证书验证
  • 双向认证 (mTLS)

详细文档: Phase 6-7 实现总结 | TLS 安全指南 🆕


7. 风控系统(Risk Management)

位置: src/risk/

功能:

  • 盘前风控检查 (pre_trade_check.rs)
    • 资金充足性检查
    • 持仓限额检查
    • 自成交防范
  • 实时风险监控
    • 风险度计算 (margin_used / balance)
    • 强平触发 (risk >= 100%)

集成: OrderRouter → PreTradeCheck → MatchingEngine


8. 服务层(Service Layer)

位置: src/service/

HTTP Server (http/): REST API

  • 用户端: 20 API (账户/订单/持仓/历史)
  • 管理端: 25 API (合约/结算/风控/监控/市场)
  • 框架: Actix-web 4.4
  • 认证: 环境变量配置 QAEXCHANGE_ADMIN_TOKEN

WebSocket Server (websocket/): 实时通信

  • 交易通道 (下单/撤单/成交回报)
  • 行情通道 (订单簿/逐笔成交)
  • 心跳机制 (可配置超时)
  • JWT 认证

配置环境变量:

QAEXCHANGE_ADMIN_TOKEN=your_secure_token # 管理员令牌
QAEXCHANGE_WS_HEARTBEAT_SECS=5 # 心跳间隔 (默认5秒)
QAEXCHANGE_WS_TIMEOUT_SECS=10 # 超时时间 (默认10秒)

API文档:


9. 可观测性(Observability)🆕 Phase 12

位置: 分布在各模块

指标导出 (Prometheus):

  • 交易指标: 订单数/成交数/延迟分布
  • 存储指标: WAL 大小/MemTable 条目数/SSTable 文件数
  • 复制指标: 复制延迟/心跳状态/节点角色
  • 系统指标: CPU/内存/磁盘使用率

分布式追踪 (OpenTelemetry):

  • 请求链路追踪
  • 跨服务调用关联
  • 延迟分析

日志 (tracing):

  • 结构化日志输出
  • 日志级别控制
  • 上下文信息传递

详细文档: 可观测性指南 🆕


10. 通知系统(Notification System)

位置: src/notification/ 技术: rkyv 零拷贝序列化

性能:

  • 序列化: 125x faster than JSON
  • 反序列化: ~20ns (零拷贝)
  • 吞吐: 50M ops/s

使用场景:

  • 成交通知 (Trade)
  • 订单状态 (OrderStatus)
  • 账户更新 (AccountUpdate)
  • 订单簿快照 (OrderBook)

详细文档: 序列化指南


11. 前端应用(Frontend Application)

位置: web/ 技术栈: Vue 2.6.11 + Element UI + vxe-table + ECharts

用户端页面 (9个):

  • login.vue - 登录页
  • account.vue - 账户管理 (开户/入金/出金/查询)
  • trade.vue - 下单页 (下单/撤单)
  • positions.vue - 持仓查询 (实时持仓)
  • orders.vue - 订单查询 (历史订单)
  • trades.vue - 成交查询 (成交记录)
  • market.vue - 实时行情 (WebSocket行情)
  • history.vue - 账户历史
  • risk-monitor.vue - 风险监控

管理端页面 (6个) ⭐ v0.4.0:

  • admin/dashboard.vue - 仪表盘 (系统概览)
  • admin/instruments.vue - 合约管理 (上市/下市/修改)
  • admin/settlement.vue - 结算管理 (日终结算)
  • admin/risk.vue - 风控管理 (风险账户监控)
  • admin/monitoring.vue - 系统监控 (存储/性能监控)
  • admin/accounts.vue - 账户管理 (账户列表)

详细文档: 前端对接指南


📊 模块依赖关系

┌─────────────────────────────────────────────┐
│ 前端应用 (Vue) │
│ 用户端(9页面) + 管理端(6页面) │
└──────────────┬──────────────────────────────┘
 │
 ┌──────┴───────┐
 │ │
 HTTP REST WebSocket
 │ │
 └──────┬───────┘
 │
┌──────────────▼──────────────────────────────┐
│ Service Layer (服务层) │
│ HTTP Server + WebSocket Server │
│ + Prometheus Metrics + OpenTelemetry │ 🆕
└──────────────┬──────────────────────────────┘
 │
┌──────────────▼──────────────────────────────┐
│ Business Layer (业务层) │
│ OrderRouter → PreTradeCheck → Gateway │
└──────────────┬──────────────────────────────┘
 │
┌──────────────▼──────────────────────────────┐
│ Core Layer (核心层) │
│ AccountManager + MatchingEngine + Registry │
│ + FactorEngine (因子系统) ✨ │
└──────────────┬──────────────────────────────┘
 │
┌──────────────▼──────────────────────────────┐
│ Data Layer (数据层 - 复用qars) │
│ QA_Account + QAOrder + Orderbook │
└──────────────┬──────────────────────────────┘
 │
┌──────────────▼──────────────────────────────┐
│ Storage Layer (存储层) │
│ WAL → MemTable → SSTable → Compaction │
│ + SecondaryIndex ✨ + Compression ✨ │
└──────────────┬──────────────────────────────┘
 │
 ┌─────┴─────┐
 │ │
 Replication QueryEngine
 (Phase 6+12) (Phase 8)
 + TLS 🔒 + Index ✨

性能目标

基于 qars 性能基准测试和已实现的存储层:

指标 目标值 状态 依据
交易引擎
订单吞吐量 > 100K orders/sec 复用 Orderbook
撮合延迟 P99 < 100μs qars 撮合引擎
行情推送延迟 P99 < 10μs broadcast_hub
Tick查询延迟 (缓存命中) < 10μs L1 DashMap 缓存 (Phase 9)
WebSocket批量推送 100条/批 批量序列化 (Phase 9)
行情恢复时间 < 5s WAL回放 (Phase 9)
存储系统
WAL 写入延迟 P99 < 50ms (HDD) Phase 1 完成
WAL 批量吞吐 > 78K entries/sec 批量写入测试
MemTable 写入延迟 P99 < 10μs SkipMap (Phase 2)
SSTable 读取延迟 P99 < 50μs mmap 零拷贝 (Phase 7)
Bloom Filter 查找 ~100ns 7 hash functions (Phase 7)
通知序列化 125x vs JSON rkyv 零拷贝
二级索引
索引 add() ~50ns BTreeMap + HashMap (Phase 11)
时间范围查询 ~1μs BTreeMap range (Phase 11)
合约查询 ~500ns 字符串驻留池 (Phase 11)
类型查询 ~800ns 位掩码匹配 (Phase 11)
复合查询 ~2μs 多索引交集 (Phase 11)
压缩
ZSTD(3) 压缩 250 MB/s 默认平衡 (Phase 11)
LZ4 压缩 800 MB/s 热数据 (Phase 11)
ZSTD(9) 压缩 40 MB/s 冷数据归档 (Phase 11)
因子引擎
因子 WAL 吞吐 > 200K ops/s 异步通道 + 批量 (Phase 11)
因子恢复 < 500ms/100K WAL 回放 (Phase 11)
检查点保存 ~5ms/100KB ZSTD Level 3
检查点加载 ~2ms/100KB ZSTD 解压
主从复制
日志复制延迟 < 10ms 批量复制 (Phase 6)
心跳间隔 100ms 可配置 (Phase 6)
故障切换时间 < 500ms 自动选主 (Phase 6)
查询引擎
SQL 查询 (100 行) < 10ms Polars LazyFrame (Phase 8)
Parquet 扫描吞吐 > 1GB/s Arrow2 列式 (Phase 8)
聚合查询 < 50ms Polars 优化 (Phase 8)
时间序列粒度聚合 < 100ms Group-by 优化 (Phase 8)
并发能力
并发账户数 > 10,000 DashMap 无锁并发
并发订阅者 > 1,000 🚧 iceoryx2 框架 (Phase 4)
复制监控 🆕
节点状态采集 < 10ms CPU + 内存 + 磁盘使用率

📡 API 概览

用户端 HTTP API (20个) ✅ 已实现

账户管理 (4个)

POST /api/account/open # 开户
POST /api/account/deposit # 入金
POST /api/account/withdraw # 出金
GET /api/account/{user_id} # 查询账户

订单管理 (4个)

POST /api/order/submit # 下单
POST /api/order/cancel # 撤单
GET /api/order/{order_id} # 查询订单
GET /api/order/user/{user_id} # 列出用户订单

持仓查询 (1个)

GET /api/position/{user_id} # 查询持仓

其他 (11个)

  • 成交记录查询
  • 账户历史查询
  • 合约信息查询
  • 等...

完整文档: 用户端API参考


管理端 HTTP API (25个) ⭐ 已实现

合约管理 (6个)

GET /admin/instruments # 查询所有合约
POST /admin/instrument/create # 上市合约
PUT /admin/instrument/{id} # 修改合约
DELETE /admin/instrument/{id} # 下市合约 (含持仓检查)
GET /admin/instrument/{id} # 查询合约详情
POST /admin/instrument/{id}/status # 修改合约状态

结算管理 (5个)

POST /admin/settlement/set-price # 设置结算价
POST /admin/settlement/batch-set-prices # 批量设价
POST /admin/settlement/execute # 执行日终结算
GET /admin/settlement/history # 结算历史
GET /admin/settlement/result/{date} # 结算结果

风控管理 (3个)

GET /admin/risk/accounts # 查询风险账户
GET /admin/risk/liquidation # 查询强平记录
GET /admin/risk/position-limits # 持仓限额配置

系统监控 (6个)

GET /admin/monitoring/storage # 存储状态
GET /admin/monitoring/accounts # 账户统计
GET /admin/monitoring/capital # 资金汇总
GET /admin/monitoring/performance # 性能指标
GET /admin/monitoring/orderbooks # 订单簿状态
GET /admin/monitoring/system # 系统状态

市场数据 (5个)

GET /admin/market/trades # 所有成交记录
GET /admin/market/orderbook/{id} # 订单簿快照
GET /admin/market/instruments/active # 活跃合约
GET /admin/market/statistics # 市场统计
GET /admin/market/depth/{id} # 市场深度

完整文档: 管理端API参考


WebSocket 协议 (8消息类型) ✅ 已实现

连接方式:

ws://host:port/ws?user_id={user_id}

客户端→服务器 (6个)

  • Auth - 认证
  • Subscribe - 订阅频道
  • SubmitOrder - 提交订单
  • CancelOrder - 撤销订单
  • QueryAccount - 查询账户
  • Ping - 心跳

服务器→客户端 (8个)

  • AuthResponse - 认证响应
  • Trade - 成交通知
  • OrderStatus - 订单状态更新
  • AccountUpdate - 账户更新
  • OrderBook - 订单簿快照
  • Error - 错误消息
  • Pong - 心跳响应

完整文档: WebSocket协议文档


数据流

客户端 (WebSocket/HTTP)
 ↓
Service Layer (service/)
 ↓
OrderRouter (订单路由)
 ├─> PreTradeCheck (风控检查)
 └─> ExchangeMatchingEngine (撮合)
 ↓
 TradeGateway (成交回报)
 ↓
 DataBroadcaster (广播推送)
 ↓
 订阅者 (客户端/监控系统)

开发状态

✅ Phase 1-10: 核心功能完成

Phase 1-2: 核心交易系统 + 存储基础

  • WAL (Write-Ahead Log) + 崩溃恢复
  • MemTable + SSTable (OLTP/OLAP)
  • 账户管理 + 订单路由 + 撮合引擎

Phase 3-5: 压缩/IPC/检查点

  • Leveled compaction + Bloom Filter
  • iceoryx2 零拷贝 IPC (optional)
  • Checkpoint 快照恢复

Phase 6-7: 主从复制 + 性能优化

  • Raft-inspired 选主 + 批量复制
  • mmap 零拷贝 + Bloom Filter 优化

Phase 8: 查询引擎

  • Polars DataFrame + SQL 查询

Phase 9: 行情推送增强

  • L1 缓存 + WAL 行情 + 批量推送

Phase 10: 用户管理系统

  • JWT 认证 + bcrypt 加密 + 用户注册登录

✅ Phase 11: 性能优化 II ✨ (已完成 2025年11月26日)

  • 二级索引系统: TimeSeriesIndex + InstrumentIndex + RecordTypeIndex
  • 智能压缩策略: ZSTD/LZ4/Snappy 按数据类型动态选择
  • 因子 WAL 集成: 异步持久化 (crossbeam channel) + 崩溃恢复
  • CompositeIndexManager: 智能查询路径选择
  • 字符串驻留池: 内存高效的合约索引
  • 位掩码匹配: O(1) 记录类型查询

✅ Phase 12: 生产就绪 🆕 (已完成 2025年12月18日)

  • TLS 加密: 主从复制 TLS 1.3 支持
  • 可观测性: Prometheus + OpenTelemetry + 结构化日志
  • 节点监控: CPU/内存/磁盘使用率采集
  • 文档完善: TLS 安全指南 + 可观测性指南 + 2025-2026 路线图
  • 代码质量: Clippy 警告清零 + 环境变量配置化

🚧 Phase 13: 网络层 (进行中)

  • gRPC 服务实现
  • Master-slave 网络通信
  • 完整 TLS 双向认证

技术栈

核心依赖

交易引擎

  • qars (qa-rs): 核心账户/订单/撮合引擎 (本地依赖)
  • Actix-web: Web 框架
  • Tokio: 异步运行时
  • DashMap: 无锁并发 HashMap
  • parking_lot: 高性能锁

存储系统

  • rkyv: 零拷贝序列化 (通知系统 + OLTP SSTable)
  • crossbeam-skiplist: 无锁 SkipMap (OLTP MemTable)
  • arrow2: 列式内存格式 (OLAP MemTable + Parquet)
  • crc32fast: CRC32 校验 (WAL 数据完整性)
  • memmap2: mmap 零拷贝文件映射 (SSTable 读取)
  • zstd/lz4: 压缩算法 ✨

查询引擎 (Phase 8)

  • polars: DataFrame 库 (v0.51, SQL + LazyFrame)
    • Features: lazy, sql, parquet, dtype-full, is_in

分布式系统

  • iceoryx2: 零拷贝 IPC (optional feature, Phase 4)
  • rcgen: TLS 证书生成 🔒

可观测性 🆕

  • prometheus: 指标导出
  • opentelemetry: 分布式追踪
  • tracing: 结构化日志

数据协议

  • QIFI: 账户数据格式
  • TIFI: 交易指令格式
  • MIFI: 市场数据格式

参考真实交易所

设计参考:

  • CTP: 上期技术综合交易平台
  • 上交所: 上海证券交易所
  • 深交所: 深圳证券交易所

核心流程:

  1. 账户注册 → 2. 入金 → 3. 下单 → 4. 撮合 → 5. 成交回报 → 6. 结算

许可证

MIT


📚 完整文档导航

快速开始

架构与设计

核心模块

API 参考

集成指南

开发指南

参考资料

高级主题

其他

⭐ = v0.4.0 新增或更新文档 | ✨ = v1.5.0 新增功能/文档 | 🆕 = 最新文档


联系方式

基于 QUANTAXIS 项目构建

作者: @yutiansut @quantaxis

About

高性能QUANTAXIS交易所以及自研数据库

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 76.7%
  • Vue 17.9%
  • JavaScript 2.2%
  • CSS 1.6%
  • Python 0.6%
  • SCSS 0.5%
  • Other 0.5%

AltStyle によって変換されたページ (->オリジナル) /