订单簿重建性能调优手册

📚 共计 30 章节
01
订单簿基础
什么是订单簿?限价单与市价单的区别,订单簿在撮合引擎中的核心地位。
概念核心
02
数据结构选型
红黑树 vs 跳表 vs 平衡二叉树,为什么交易所偏爱跳表?
数据结构跳表
03
内存布局优化
缓存行对齐、内存池、预分配策略,减少TLB miss。
内存缓存
04
锁与并发
无锁队列、读写锁、CAS操作,如何设计高并发订单簿。
并发无锁
05
增量更新机制
全量快照 vs 增量日志,如何实现毫秒级重建。
增量快照
06
日志回放优化
WAL预写日志、批量回放、并行回放策略。
WAL回放
07
快照序列化
Protobuf vs FlatBuffers vs Cap'n Proto,序列化性能对比。
序列化性能
08
内存映射文件
mmap原理、大页支持、持久化与恢复。
mmap大页
09
GC与对象池
Java/C#中的GC调优,C++中的对象池设计模式。
GC对象池
10
零拷贝技术
sendfile、splice、DMA,减少数据搬运。
零拷贝DMA
11
网络协议优化
TCP_NODELAY、Nagle算法、内核旁路(DPDK)。
网络DPDK
12
CPU亲和性与绑核
隔离CPU核心,避免上下文切换。
CPU绑核
13
分支预测与流水线
likely/unlikely宏,减少分支误预测。
分支预测优化
14
SIMD向量化
使用SSE/AVX加速价格比较和订单匹配。
SIMDAVX
15
编译器优化
-O3、LTO、PGO,让编译器帮你提速。
编译器LTO
16
性能剖析工具
perf、FlameGraph、Valgrind、gperftools。
perf火焰图
17
基准测试框架
Google Benchmark、JMH,如何设计科学的压测。
基准测试JMH
18
延迟分布分析
P50/P99/P999,尾延迟优化策略。
延迟P99
19
热点代码内联
inline、forceinline,减少函数调用开销。
内联优化
20
跳表深度调优
概率因子p的选择,最大层数对性能的影响。
跳表调优
21
订单簿快照压缩
差分编码、游程编码、字典压缩。
压缩编码
22
多级缓存架构
L1/L2/L3缓存命中率优化,数据局部性。
缓存局部性
23
NUMA感知编程
内存绑定到本地节点,避免跨NUMA访问。
NUMA内存
24
异步与事件驱动
Reactor模式、Proactor模式、libuv/asio。
异步Reactor
25
批处理与合并
批量下单、批量撤单,减少系统调用。
批处理系统调用
26
内存屏障与可见性
volatile、acquire/release语义,内存序。
内存屏障可见性
27
持久化策略
同步刷盘 vs 异步刷盘,RAID与NVMe优化。
持久化NVMe
28
容错与降级
主备切换、哨兵模式、熔断机制。
容错高可用
29
实战案例
某交易所订单簿从100ms优化到1ms的完整过程。
实战优化
30
未来趋势
硬件加速(FPGA)、AI预测订单流、Serverless撮合。
FPGAAI