基于 Rust 从零构建的生产级低时延中心化交易所 (CEX),对标主流交易所的微秒级交易系统,实现 RPO=0 和 RTO<5min 的金融级高可用。
专业级金融交易系统工程实践,深度展示 Rust 在高性能场景的极致优化和 Clean Architecture 架构设计。
- 📊 微秒级交易性能 - 订单处理 < 50ns,端到端撮合 < 1μs
- 🛡️ 金融级高可用 - RPO=0 零数据丢失,RTO<5min 快速恢复
- 🏗️ 业务流隔离架构 - 避免分布式锁,避免跨微服务调用
- 🎨 Clean Architecture - DDD 领域驱动,微内核设计
| 产品 | 状态 | 功能 |
|---|---|---|
| 现货交易 | ✅ 已开发 | 币币交易、限价/市价订单、实时撮合 |
| 合约交易 | 🚧 规划中 | 永续/交割合约、杠杆交易、强平机制 |
| 期权交易 | 📅 规划中 | 欧式/美式期权、隐含波动率、Greeks |
全内存架构,订单簿/持仓/账户驻留内存,撮合过程零磁盘 I/O,通过 WAL + Snapshot 保证持久化。
性能指标:
- 订单处理时延: < 50ns
- 订单簿更新: < 200ns
- 端到端撮合: < 1μs
技术手段:
- 定长数组 FIFO 队列,充分利用 CPU 缓存
- 缓存行对齐 (#[repr(align(64))]),避免 false sharing
- 零内存分配,避免 GC 和碎片
单个业务流 = [下单 → 风控 → 撮合 → 清算 → 通知]
↓
独立进程/容器部署
核心优势:
- ✅ 避免分布式锁 - 流内独占资源
- ✅ 避免跨服务调用 - 本地函数调用
- ✅ 内存队列通信 - 消除网络时延
- ✅ 故障隔离彻底 - 单流故障不影响其他交易对
差异化 SLA:
| 交易对 | 时延目标 | QPS | 资源 |
|---|---|---|---|
| 热门币对 | < 1μs | 100K TPS | 8核32GB |
| 普通币对 | < 10μs | 50K TPS | 4核16GB |
| 长尾币种 | < 100μs | 10K TPS | 2核8GB |
支持协议:
- 🌐 REST API - HTTP/1.1, HTTP/2(账户管理、历史查询)
- ⚡ WebSocket - 双向实时推送(行情、订单、成交)
- 📡 FIX 协议 - 专业机构接入(FIX 4.2/4.4)
- 📤 UDP 组播 - 低延迟行情广播
- 🔒 TCP 单播 - 可靠交易指令传输
底层技术:Tokio 异步运行时 + mio 底层 I/O 多路复用 + bytes 零拷贝处理
┌────────────────────────────────────┐
│ 基础设施层 (Frameworks) │ Tokio/PostgreSQL/Kafka
├────────────────────────────────────┤
│ 接口适配层 (Adapters) │ REST/WebSocket/FIX/Repository
├────────────────────────────────────┤
│ 应用层 (Use Cases) │ PlaceOrder/CancelOrder/Matching
├────────────────────────────────────┤
│ 领域层 (Domain) ⭐ │ Order/Trade/Position/Account
└────────────────────────────────────┘
设计原则:
- ✅ 依赖倒置 - trait 定义抽象接口
- ✅ 领域独立 - 无外部依赖,纯业务逻辑
- ✅ 微内核架构 - 插件化扩展(风控/清算/费率)
- ✅ 模块化分层 - core/support/common
- 零拷贝 - zerocopy crate, bytes 零拷贝网络数据
- 无锁并发 - crossbeam 无锁队列,原子操作
- SIMD 优化 - AVX2 向量化计算
- 自定义分配器 - jemalloc 替代系统分配器
- Raft 共识 - 1主2备,RPO=0 零数据丢失
- 快速恢复 - 内存快照 + 增量日志,RTO<5min
- 多活架构 - 跨地域异地容灾(上海/深圳/香港)
- 消息传递 - tokio::mpsc 避免共享可变状态
- Actor 模型 - actix 线程安全
- 类型安全 - Newtype 模式,Option/Result 消除空指针
- 编译期保证 - 所有权系统消除数据竞争
- 多 IO 线程 - 负责网络 I/O
- 单业务线程 - 处理撮合逻辑
- crossbeam 通信 - 高性能跨线程队列
- 事件持久化 - 所有状态变更以事件存储
- 不可变设计 - 领域实体 immutable,提升并发
- 状态回放 - 支持审计和故障恢复
- ✅ 模块化架构 - Workspace 多 crate 组织
- ✅ 完整测试 - 48个测试(单元/集成/文档)
- ✅ 模糊测试 - proptest 基于属性测试
- ✅ 性能基准 - Criterion 性能回归检测
- ✅ 文档注释 - Rustdoc + 示例代码
- ✅ CI/CD - GitHub Actions 自动化
rustlob/
├── lib/ # 核心库层
│ ├── common/ # 通用基础库
│ │ ├── lob_repo/ # 订单簿核心(LOB引擎)
│ │ ├── algo/ # 算法库(撮合/风控)
│ │ ├── base_types/ # 基础类型定义
│ │ ├── decimal/ # 高精度定点数
│ │ ├── fixed_point/ # 定点数计算
│ │ ├── id_generator/ # 分布式ID生成
│ │ ├── sequencer/ # 序列化器
│ │ ├── sbe/ # SBE 编解码
│ │ ├── cqrs/ # CQRS 模式
│ │ ├── db_repo/ # 数据库仓储
│ │ ├── repo_def/ # 仓储接口定义
│ │ ├── diff/ # 差异计算
│ │ ├── vector_clock/ # 向量时钟
│ │ └── entity_derive/ # 实体宏派生
│ └── core/ # 核心业务层
│ └── exchange/
│ └── prep/ # 交易预处理
│
├── app/ # 应用服务层
│ ├── axum_server/ # Axum HTTP 服务器
│ ├── client/ # WebSocket 客户端示例
│ ├── websocket_sockudo/ # WebSocket 服务(高性能)
│ ├── pingora_gateway/ # Pingora API 网关
│ └── xdp_libbpf/ # XDP 网络加速
│
├── proc/ # 业务流程层
│ └── operating/exchange/
│ ├── spot/ # 现货交易流程
│ ├── derivatives/ # 衍生品流程
│ │ ├── usds_m_future/ # USDT本位合约
│ │ ├── coin_m_future/ # 币本位合约
│ │ ├── option/ # 期权
│ │ └── portfolio_margin/ # 组合保证金
│ └── spot_market_data/ # 现货行情流程
│
├── design/ # 设计文档
│ ├── process/story/
│ │ ├── HOTPATH_MEASURE_GUIDE.md # 热路径测量指南
│ │ ├── hardware/ # 硬件需求分析
│ │ ├── market_data/ # 行情系统设计
│ │ ├── id_gen/ # ID生成方案
│ │ ├── spot/ # 现货设计
│ │ ├── account/ # 账户系统设计
│ │ └── settlement/ # 清算结算设计
│ ├── deploy/ # 部署方案
│ └── other/
│ ├── binance-spot-api-docs/ # Binance 现货 API
│ └── binance_derivatives_api/ # Binance 衍生品 API
│
└── study/ # 研究探索
├── hotstuff/ # HotStuff 共识算法
├── web3/ # Web3 集成
└── zk-snarks/ # 零知识证明
cd lib/core/exchange/lob_repo
cargo test --all
# ✅ test result: ok. 48 passed; 0 failedcd app/client
cargo run --release
# 🚀 服务启动: ws://localhost:9090/wscd app/client
cargo run --example ws_client --release
# 实时查看订单执行和成交推送// 限价订单
{ "type": "limit_order", "trader_id": "alice", "side": "buy", "price": 50000, "quantity": 10 }
// 取消订单
{ "type": "cancel_order", "order_id": 123456 }// 订单确认
{ "type": "order_ack", "order_id": 123456, "status": "open", "latency_us": 87 }
// 成交广播
{ "type": "v1", "trade_id": 789012, "buyer": "alice", "seller": "bob", "price": 50000 }详细 API 文档:WEBSOCKET.md
- 核心订单簿匹配引擎
- WebSocket 实时推送
- 48个测试覆盖
- WAL 日志 + Raft 共识
- 多订单簿管理
- REST API + 用户认证
- 合约引擎 + 杠杆交易
- 标记价格 + 资金费率
- 强平机制 + 风险引擎
- Black-Scholes 定价
- Greeks 计算
- 组合保证金
- DPDK 用户态网络栈
- FPGA 订单簿加速
- RDMA 网络 (< 2μs)
参考文档:技术路线图详情
┌────────────────────────────────────────────────────────┐
│ Load Balancer (LVS/Nginx) │
├────────────────────────────────────────────────────────┤
│ [API Gateway] [WebSocket Gateway] │
├────────────────────────────────────────────────────────┤
│ 业务流隔离层 │
│ ┌─────────────────────────────────────────────┐ │
│ │ BTC/USDT 现货流 (独立进程) │ │
│ │ [匹配引擎] → [清算] → [推送] │ │
│ │ ↓ WAL (Raft 1主2备) │ │
│ └─────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────┐ │
│ │ ETH/USDT 现货流 (独立进程) │ │
│ └─────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────┤
│ 共享服务层: 用户/资金/风控/行情聚合 │
├────────────────────────────────────────────────────────┤
│ 持久化层: PostgreSQL/Redis/RocksDB/Kafka │
└────────────────────────────────────────────────────────┘
apiVersion: apps/v1
kind: Deployment
metadata:
name: rustlob-btcusdt-spot
spec:
replicas: 3 # 1主2备
template:
spec:
containers:
- name: matching-engine
image: rustlob:latest
env:
- name: SYMBOL
value: "BTCUSDT"
resources:
requests:
cpu: "8" # 独占8核
memory: "16Gi"cd app/client
cargo run --example ws_benchmark --release典型结果 (Apple M1 / Intel i7-12700K):
=== 性能测试报告 ===
Ping/Pong 延迟:
平均: 345 μs
P99: 523 μs
订单处理延迟:
平均: 87 μs
P99: 150 μs
吞吐量:
订单处理: 68,000 orders/s
消息广播: 120,000 msg/s
| 文档 | 说明 |
|---|---|
| CLAUDE.md | 开发规范(低延迟标准 + Clean Architecture) |
| hard.md | 硬件需求分析(三级配置方案) |
| futures_design.md | 永续合约设计 |
| options_design.md | 期权交易设计 |
| WEBSOCKET.md | WebSocket API 详细文档 |
FROM rust:1.70 AS builder
WORKDIR /app
COPY . .
RUN cargo build --release --bin sapp
FROM debian:bullseye-slim
COPY --from=builder /app/target/release/sapp /usr/local/bin/
EXPOSE 9090
CMD ["sapp"]cd app/client
cargo build --release --target x86_64-unknown-linux-gnu
# 二进制: target/release/client- Fork 项目
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 编写代码并测试 (
cargo test) - 提交变更 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 开启 Pull Request
cargo test --all # 运行所有测试
cargo clippy -- -D warnings # 代码检查
cargo fmt --all --check # 格式检查- 遵循 CLAUDE.md 低延迟开发标准
- 遵循 Clean Architecture 设计原则
- 编写单元测试覆盖核心逻辑
- 性能关键路径需要基准测试验证
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- Rust 社区优秀工具链
- Clean Architecture 设计启发
- 高频交易系统最佳实践
- 头部 CEX 技术架构参考(Binance/OKX/Bybit)
- Issues: GitHub Issues
- Discussions: GitHub Discussions