3.1 整体架构范式与核心组件 最早的电子化交易系统跟普通后台系统长得没什么两样:行情服务、策略服务、下单服务各占一台机器,中间靠消息中间件传递。这套架构支撑日频、小时频没问题,但当延迟预算被压到微秒级,它就破产了——一次跨机消息传递的开销就够整条链路走好几遍。于是行业收敛到了今天的主流形态:把整条热路径装进一台机器,进程间用共享内存对话。本节讲清这个范式为什么长这样、五个核心组件的职责边界怎么切,以及什么时候才值得打破单机边界。这是架构章的总纲,3.2 的通信机制全部服务于这里切出来的组件关系。 目标清单 复述单机紧凑范式的三个特征:同机部署、共享内存通信、热路径零系统调用; 切分热路径五个核心组件的职责,说明每个组件的输入输出与延迟预算;
最早的电子化交易系统跟普通后台系统长得没什么两样:行情服务、策略服务、下单服务各占一台机器,中间靠消息中间件传递。这套架构支撑日频、小时频没问题,但当延迟预算被压到微秒级,它就破产了——一次跨机消息传递的开销就够整条链路走好几遍。于是行业收敛到了今天的主流形态:把整条热路径装进一台机器,进程间用共享内存对话。本节讲清这个范式为什么长这样、五个核心组件的职责边界怎么切,以及什么时候才值得打破单机边界。这是架构章的总纲,3.2 的通信机制全部服务于这里切出来的组件关系。
单机范式的逻辑起点是一个物理事实:跨机网络往返的微秒级开销,比多数软件环节的总和还大。行情从本机网卡到策略内存若只需数百纳秒,跨一次机就是一万纳秒起步。既然热路径上的组件彼此是强耦合的(订单簿的每一次更新都可能触发一次报价决策),把它们放进同一台机器、让组件间通信走内存拷贝而不是网络,就是延迟预算下的必然结论。
范式有三个可检验的特征。同机部署:行情接入、订单簿、策略、风控、网关五个组件在同一台服务器的内存里协作。共享内存通信:组件间用无锁队列与共享快照区交换数据,不经过内核。热路径零系统调用:收包用轮询模式的用户态驱动,发包直接写网卡的发送队列,整个行情到订单的路径上不出现一次内核切换——每一次系统调用都是微秒级的“停车检查”,热路径上停不起。
冷路径则完全相反:监控、记账、回放、告警这些组件放在旁路,消费热路径镜像出来的数据,绝不反向写入。冷热分离是单机范式最重要的纪律——延迟敏感的数据流与工程可运维的数据流,必须在架构图上就分开。
把热路径拆开,是五个职责单一的组件。行情接入负责收包解码,输出标准化后的市场事件;订单簿消费事件维护盘口状态,输出状态变更通知;策略引擎订阅盘口与自身订单状态,产出报价与下单意图;风控闸门对每笔意图做前置检查,放行或拦截;订单网关把放行的意图序列化成交易所协议报文写入网卡,同时接收回报回填订单状态。每个组件只做一件事,边界恰好是数据格式变更的地方——这是切分组件的通用手艺:在数据变形处切,不在数据流动处切。
| 组件 | 输入 | 输出 | 延迟预算(典型) | 关键纪律 |
|---|---|---|---|---|
| 行情接入 | 网卡报文 | 标准化市场事件 | 数百纳秒 | 零拷贝、无锁 |
| 订单簿 | 市场事件 | 盘口状态与变更 | 几十纳秒级 | 增量更新、预分配 |
| 策略引擎 | 盘口与订单状态 | 下单意图 | 百纳秒到微秒 | 不做 IO、无动态内存 |
| 风控闸门 | 下单意图 | 放行或拦截 | 几十纳秒级 | 原子检查、误杀可回滚 |
| 订单网关 | 放行意图 | 协议报文与回报 | 数百纳秒 | 会话保活、序列号管理 |
预算表是架构评审的核心工具。它的用法不是"加起来不超过预算"这么简单,而是给每个组件一个回归测试的锚:任何一次改动后,组件耗时的分布若劣化超过容差,改动不合并。没有预算表的架构讨论,最终都会变成感觉之争。

单机范式不是教条,它有三条清楚的越界条件。容量越界:策略覆盖的品种与市场多到单机核数与内存带宽装不下行情处理时,按市场分组拆机,每个机房一组机器,组间不做热路径耦合。业务越界:需要跨交易所协同的套利,两边的"接入加簿记"各自本机化,协同决策放在其中一侧,中间那条跨机链路就是第四章微波专线的用武之地——此时架构设计的主要内容变成"把不得不跨机的部分压到最小"。风险越界:合规要求交易决策数据独立留存、风控引擎要求物理隔离时,会牺牲一点延迟把审计流独立成机——这是用微秒买可信,值不值由监管环境决定,不由工程师决定。
判断范式是否健康的试金石是问一句:新增一个市场、一个策略,是否要动热路径的现有组件。好的架构里,加市场是复制一组接入与簿记实例,加策略是往策略引擎里注册新逻辑,五组件的形状不变。如果每次业务扩展都在重构热路径,说明组件边界切在了错误的位置。
背景:某团队的做市系统沿用了后台式架构:行情机、策略机、下单机各一台,中间走组播。系统运行多年,延迟始终在两百微秒上下,团队一度认为是代码写得不快。
操作:做延迟归因时发现真相:两百微秒里,行情机到策略机的跨机传输占了一百三十微秒,策略机到下单机再占五十微秒,真正的计算时间不足二十微秒。团队重构:三台机器的职责收进一台高主频服务器,组件间改用共享内存环形队列,收发包改轮询模式驱动。
结果:tick-to-trade 从两百微秒降到九微秒,且抖动显著收敛——原来跨机链路的微秒级抖动是延迟分布长尾的主因。机房托管费从三个机柜降到半个机柜。
解读:这个案例反转了直觉:架构布局的收益常常比代码优化的收益大一个量级。在错误的架构上做代码微优化,等于在漏气的轮胎上抛光轮毂。归因先行、布局其次、代码最后——这是性能工程的不变顺序。
变式:如果团队当时的目标是覆盖五十个市场,单机收缩就不再是答案,正确路径是按市场分组的分布式单机范式组合。范式选择永远是约束求解:延迟预算、容量需求、预算约束三个输入变了,最优解就变。