架构总览
Zanbara 采用混合架构设计,结合了链下高性能撮合和链上安全结算的优势,为用户提供中心化交易所级别的体验和去中心化的安全保障。
架构设计原则
1. 性能优先
目标 TPS: 10,000+ 订单/秒
订单延迟: < 50ms (p99)
WebSocket 延迟: < 50ms
2. 安全至上
资金托管: 100% 链上智能合约托管
结算透明: 所有结算可链上验证
去中心化预言机: Pyth Network 价格源
3. 可扩展性
水平扩展: 支持多实例部署
模块化设计: 服务间松耦合
云原生: Kubernetes 部署就绪
系统架构图
┌─────────────────────────────────────────────────────────────────────┐
│ Frontend Layer │
│ ┌────────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Trading Interface │ │ Order Entry UI │ │ Portfolio View │ │
│ │ (React + Vite) │ │ (Orderly UI) │ │ (Charts) │ │
│ └────────────────────┘ └─────────────────┘ └─────────────────┘ │
│ ↕ WebSocket (ws://localhost:8081) + REST API │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ API Gateway Layer │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Axum Web Framework (Port 8080) │ │
│ │ - REST API Endpoints (/api/v1/*) │ │
│ │ - WebSocket Server (Port 8081) │ │
│ │ - 3-Layer Risk Control (User/System/Market) │ │
│ │ - JWT Authentication & Authorization │ │
│ │ - Rate Limiting (100 req/min/user) │ │
│ │ - Request Validation & Error Handling │ │
│ └──────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ Core Services Layer │
│ │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ Matching Engine (peak-pilot) - Lock-free OrderBook │ │
│ │ - Price-Time Priority Matching │ │
│ │ - SIMD Price Search (5.79x speedup) │ │
│ │ - Memory Pool (337K orders/sec) │ │
│ │ - Batch Processing (7.16M TPS) │ │
│ │ - Rayon Parallel (396K TPS) │ │
│ │ - Advanced Order Types (Iceberg, PostOnly, TrailingStop) │ │
│ └───────────────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────┐ ┌────────────────┐ ┌─────────────────────┐ │
│ │ Settlement │ │ Liquidation │ │ Oracle Adapter │ │
│ │ Engine │ │ Keeper │ │ (Pyth Network) │ │
│ │ - Batch │ │ - 150% Warn │ │ - Price Feeds │ │
│ │ - Retry+DLQ │ │ - 110% Liq │ │ - 1s Update │ │
│ │ - Rollback │ │ - Concurrent │ │ - Multi-source │ │
│ └────────────────┘ └────────────────┘ └─────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────────────┐│
│ │ Event Listener (Chain Event Monitor) ││
│ │ - Deposit/Withdrawal Events ││
│ │ - Settlement Confirmations ││
│ │ - Redis Pub/Sub Broadcasting ││
│ └────────────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ Data Layer │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌─────────────────┐ │
│ │ PostgreSQL 16 │ │ Redis 7 │ │ TimescaleDB │ │
│ │ ───────────────│ │ ───────────────│ │ ───────────────│ │
│ │ - Users │ │ - OrderBook │ │ - OHLCV │ │
│ │ - Orders │ │ - Cache (TTL) │ │ - Trades │ │
│ │ - Positions │ │ - Sessions │ │ - Funding │ │
│ │ - Balances │ │ - Pub/Sub │ │ - Analytics │ │
│ │ - Trades │ │ - Leaderboard │ │ │ │
│ │ - Settlements │ │ │ │ │ │
│ └──────────────────┘ └──────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ Blockchain Layer (Solana) │
│ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Smart Contracts (Anchor Framework) │ │
│ │ - Program ID: [deployed on Devnet] │ │
│ │ ─────────────────────────────────────────────────────────── │ │
│ │ Instructions: │ │
│ │ • initialize - 初始化交易所 │ │
│ │ • deposit - 存入资金 (SOL/USDC) │ │
│ │ • withdraw - 提取资金 │ │
│ │ • open_position - 开仓 │ │
│ │ • close_position - 平仓 │ │
│ │ • liquidate - 清算 │ │
│ │ • batch_settlement - 批量结算 │ │
│ │ │ │
│ │ Accounts: │ │
│ │ • Exchange - 全局配置 │ │
│ │ • UserAccount - 用户账户 │ │
│ │ • Position - 仓位信息 │ │
│ │ • MarketAccount - 市场配置 │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Event Logs (Program Events) │ │
│ │ - DepositEvent, WithdrawEvent │ │
│ │ - PositionOpenedEvent, PositionClosedEvent │ │
│ │ - LiquidationEvent, SettlementEvent │ │
│ └──────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ External Services │
│ ┌──────────────────┐ ┌──────────────────┐ ┌─────────────────┐ │
│ │ Pyth Network │ │ Solana RPC │ │ Helius RPC │ │
│ │ - Price Feeds │ │ - devnet/main │ │ (Enhanced RPC) │ │
│ └──────────────────┘ └──────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘技术栈
前端技术栈
框架
React 19
19.0.0
构建工具
Vite 7
7.0.0
路由
React Router 7
7.0.2
状态管理
Zustand
5.0.2
UI 组件
Orderly Network UI
Latest
图表
TradingView
Lightweight
样式
TailwindCSS
3.4.17
钱包
Solana Wallet Adapter
Latest
后端技术栈
语言
Rust
1.86.0
Web 框架
Axum
0.7
异步运行时
Tokio
1.42
撮合引擎
pricelevel
0.4.2
数据库 ORM
SQLx
0.8
缓存
Redis
7.4
序列化
Serde
1.0
并行处理
Rayon
1.10
智能合约技术栈
语言
Rust
1.86.0
框架
Anchor
0.31.1
区块链
Solana
2.3.11
预言机
Pyth Network
Latest
Token 标准
SPL Token
Latest
基础设施技术栈
容器化
Docker
20+
编排
Kubernetes
1.27+
监控
Prometheus
2.45
可视化
Grafana
10.0
日志
Loki
2.8
追踪
Jaeger
1.47
核心组件
1. API Gateway
职责:
HTTP REST API 服务
WebSocket 实时推送
3 层风控系统
认证和授权
速率限制
端口:
REST API: 8080
WebSocket: 8081
关键特性:
Axum 异步框架
JWT Token 认证
Redis Session 管理
100 req/min/user 限流
2. Matching Engine
职责:
订单撮合
订单簿管理
交易生成
性能:
SIMD 优化: 5.79x 加速
批处理 TPS: 7.16M
内存池吞吐: 337K orders/sec
Rayon 并行: 396K TPS
订单类型:
Standard (限价单)
Market (市价单)
Iceberg (冰山单)
PostOnly
TrailingStop (追踪止损)
3. Settlement Engine
职责:
批量链上结算
交易确认
状态同步
机制:
100 交易/批次
3 次重试 + 指数退避
DLQ 死信队列
快照回滚
4. Liquidation Keeper
职责:
实时监控保证金率
自动触发清算
发送预警通知
阈值:
150% - 发送警告
110% - 触发清算
100% - 破产价格
特性:
10秒监控周期
并发控制
Redis 通知
5. Oracle Adapter
职责:
价格数据获取
多源聚合
缓存管理
数据源:
Pyth Network (主要)
Switchboard (备用)
更新频率: 1 秒
6. Event Listener
职责:
监听链上事件
更新本地状态
广播通知
监听事件:
Deposit
Withdraw
Settlement
Liquidation
数据流
订单提交流程
1. 用户提交订单
↓
2. API Gateway 接收
↓
3. 3层风控验证
├─ User Layer: 杠杆/仓位限制
├─ System Layer: OI/资金限制
└─ Market Layer: 价格/流动性检查
↓
4. 写入 PostgreSQL (持久化)
↓
5. 发送到 Matching Engine
↓
6. 撮合引擎处理
├─ 匹配对手单
├─ 生成成交
└─ 更新订单簿
↓
7. 成交写入数据库
↓
8. 发送到 Settlement Engine
↓
9. 批量上链结算
↓
10. Event Listener 监听确认
↓
11. 更新用户仓位
↓
12. WebSocket 推送通知清算流程
1. Liquidation Keeper 定时检查 (10s)
↓
2. 查询所有持仓用户
↓
3. 计算保证金率
保证金率 = 账户权益 / 仓位价值
↓
4. 判断阈值
├─ >= 150%: 正常
├─ 110-150%: 发送警告 (WebSocket)
└─ < 110%: 触发清算
↓
5. 获取清算许可 (防止重复清算)
↓
6. 创建清算订单
↓
7. 提交到 Matching Engine
↓
8. 撮合引擎执行
↓
9. 更新仓位状态为 Liquidated
↓
10. 计算剩余保证金
↓
11. 退回剩余保证金 (如果有)
↓
12. WebSocket 通知用户安全措施
1. 智能合约安全
✅ 资金托管在链上
✅ PDA (Program Derived Address) 账户管理
✅ 权限检查
⏸️ 安全审计 (Post-MVP)
2. API 安全
JWT Token 认证
速率限制 (100 req/min/user)
HTTPS/WSS 加密传输
CORS 白名单
3. 业务安全
3 层风控系统
订单验证
价格偏离检测
自成交防护
4. 数据安全
PostgreSQL 数据加密
Redis 密码认证
定期备份
主从复制
监控体系
指标监控 (Prometheus)
系统指标: CPU、内存、磁盘、网络
业务指标: TPS、延迟、成功率、错误率
自定义指标: 订单簿深度、持仓量、资金费率
可视化 (Grafana)
系统监控面板: 服务健康状态
业务监控面板: 交易量、用户活跃度
性能监控面板: 延迟分布、吞吐量
告警 (Alertmanager)
Critical: 服务宕机、数据库故障
Warning: 延迟过高、错误率上升
Info: 部署完成、配置变更
扩展性设计
水平扩展
API Gateway: 多实例 + 负载均衡
Matching Engine: 按交易对分片
Settlement Engine: 多 Worker 并行
数据库: 读写分离 + 分库分表
缓存策略
Redis 三级缓存:
L1: 订单簿 (TTL 1s)
L2: 用户数据 (TTL 5m)
L3: 市场数据 (TTL 10s)
下一步
了解更多架构细节:
或查看具体组件文档:
架构版本: v1.0.0 最后更新: 2025-10-07 状态: Production Ready (Phase 5 Week 2)
Last updated