← 返回索引 · 2026-02-06 · 0003

订单簿深度推送:从全量快照到增量 Diff 的工程化落地(摘要)

原文首发于 TechNova: 从千万级撮合引擎,谈订单簿深度数据的生成与推送优化实践

承接页(交易系统解决方案):https://technologynova.org/solution/

TL;DR

1. 问题为什么会爆:全量快照推送的三宗罪

2. 核心范式:Snapshot + Diff(增量更新)

把客户端订单簿当作服务器订单簿的一个副本(Replica)。 第一次给客户端一份快照(Snapshot)作为基准;之后只推送发生变化的价位(Diff/Updates)。 这样网络与客户端计算成本从“深度档位数 N”变成“本次变化档位数 K”。

关键建议:Diff 里推绝对数量(最新总量),而不是“变化量”。绝对量是幂等的,鲁棒性更强。

3. 一致性保障:序列号(Sequence)与重同步(Resync)

增量更新引入了“丢包/断线”风险。解决方法是给每个快照与每个增量更新打上严格递增的序列号。 客户端每次收到更新,校验 prevSequence == localSequence: 如果不连续,立即丢弃本地状态并重新请求快照(重同步),避免错误状态持续扩散。

4. 推荐架构:撮合事件 → 深度聚合 → 推送网关

  1. 撮合引擎:唯一真相源,输出原子事件(下单/撤单/成交)。
  2. 事件总线:保证有序消费(通常按交易对分区)。
  3. 深度聚合服务(有状态):重建完整订单簿,生成 Snapshot/Diff,并维护 Sequence。
  4. 推送网关(无状态):维护海量 WebSocket 连接,按订阅关系扇出(fan-out)。

5. 性能优化抓手(落地清单)


延伸阅读 / 合作

如果你要搭建金融级行情与深度推送、撮合引擎与风控链路,可参考 TechNova 交易系统整体解决方案: https://technologynova.org/solution/

原文链接:
https://technologynova.org/…/