2、行情数据特征分析:高频、海量、实时性要求、数据格式(Level1/Level2)

做行情系统优化,第一件事不是看代码,而是看数据。

我见过太多团队,一上来就撸起袖子写缓存、调参数,结果连数据长什么样都没搞清楚。说白了,你不了解你的对手,怎么打赢这场仗?

行情数据有四个核心特征:高频、海量、实时性要求高、数据格式复杂。咱们一个一个拆开看。

2.1 高频:每秒几千笔,不是开玩笑

先说说频率。A股全市场每天大概产生几亿笔行情数据。注意,我说的是「笔」,不是「条」。每一笔成交、每一档委托,都是一条独立的消息。

我个人习惯用这个数字来估算:沪深两市合计,峰值每秒能到 3000~5000 笔。如果是股指期货或者期权,频率更高,能上万。

这意味着什么?

  • 你的系统每毫秒都要处理好几笔数据
  • 网络延迟、内存分配、GC 停顿,任何一点抖动都会被放大
  • 传统的「请求-响应」模型根本扛不住,必须用事件驱动
我的经验: 我在项目中遇到过,某家券商的行情网关因为用了同步阻塞 I/O,一到开盘就卡死。后来改成 Reactor 模型,吞吐量直接翻了 5 倍。高频场景下,非阻塞是底线。

2.2 海量:一天几个 TB,存哪都是问题

再聊聊量级。全市场 Level2 行情,一天原始数据大概在 1~2 TB 左右。如果加上快照、逐笔成交、逐笔委托,轻松突破 5 TB。

你想想看,一天 5 TB,一个月就是 150 TB。这还只是原始数据,没算索引、副本、备份。

所以,行情系统的存储设计,核心就一句话:热数据放内存,冷数据放磁盘,温数据用 SSD 兜底

数据层级 存储介质 典型容量 访问频率
热数据(当日) 内存 / Redis 几十 GB 毫秒级
温数据(近 7 天) SSD / 内存映射文件 几 TB 秒级
冷数据(历史) HDD / 对象存储 几十 TB 分钟级
注意: 我曾经见过一个团队,把所有历史行情都塞进内存,结果 32 GB 的机器跑了两天就 OOM 了。海量数据面前,内存不是无限的,分层存储是必须的。

2.3 实时性要求:延迟是硬指标,不是软约束

行情系统的实时性,不是「尽量快」,而是「必须快」。

交易所的行情推送,从产生到到达用户终端,端到端延迟通常要求在 10 毫秒以内。对于高频交易客户,这个数字甚至要压到 1 毫秒以下。

为什么会这么严格?因为行情延迟直接等于交易成本。你比别人晚 1 毫秒看到价格,可能就错过了最佳买卖点。

所以,优化实时性,本质上是在跟物理极限赛跑:

  • 网络层面:用 RDMA 替代 TCP,减少协议栈开销
  • 内存层面:用堆外内存、内存池,避免 GC 停顿
  • CPU 层面:绑定核心、避免上下文切换
核心原则: 实时性优化的本质,就是减少一切不必要的等待。等待 I/O、等待锁、等待 GC,都是敌人。

2.4 数据格式:Level1 vs Level2,差别在哪?

最后说说数据格式。国内行情主要分两种:Level1(基础行情)Level2(深度行情)

Level1 是免费的,每 3 秒推送一次快照,包含五档买卖盘、最新价、成交量等基础信息。数据量小,延迟要求也相对宽松。

Level2 是付费的,每笔成交、每笔委托都会推送。数据量是 Level1 的几十倍,但信息也更丰富:

  • 十档买卖盘(甚至全量委托队列)
  • 逐笔成交明细(每一笔交易的时间、价格、数量)
  • 逐笔委托明细(每一笔挂单的撤单、成交、新增)

我个人习惯用这个比喻:Level1 是看照片,Level2 是看视频。照片只能看到某个瞬间的静态画面,视频能看到整个过程的变化。

对比维度 Level1 Level2
推送频率 3 秒一次 逐笔推送(毫秒级)
数据量 小(每只股票几十字节) 大(每只股票几百到几千字节)
信息深度 五档买卖盘 十档买卖盘 + 逐笔成交 + 逐笔委托
使用场景 普通散户、行情展示 量化交易、高频策略
避坑指南: 我曾经在优化 Level2 行情解析时,发现逐笔委托的撤单率高达 60% 以上。这意味着大部分委托还没成交就被撤了。如果你不做过滤,系统会白白浪费大量 CPU 去处理无效数据。所以,数据清洗和过滤,是行情系统优化的第一道关卡

2.5 知识体系总览

说了这么多,咱们用一张图来总结一下行情数据的核心特征。这张图是我自己画的结构图,方便你理解各个特征之间的关系:

行情数据特征 高频 每秒 3000~5000 笔 海量 每日 1~5 TB 实时性 端到端 < 10ms 数据格式 Level1 / Level2 事件驱动 · 非阻塞 I/O 分层存储 · 冷热分离 堆外内存 · 核心绑定 逐笔推送 · 数据清洗

嗯,这张图把四个特征和对应的优化方向都串起来了。你仔细看,每个特征都不是孤立的——高频带来海量,海量又加剧了实时性压力,而数据格式决定了你用什么策略去处理。

所以,做行情系统优化,不能只看一个点。你得从全局出发,理解数据从哪里来、到哪里去、中间经历了什么。


公众号:蓝海资料掘金营,微信deep3321