3.1 整体架构范式与核心组件


文档摘要

3.1 整体架构范式与核心组件 最早的电子化交易系统跟普通后台系统长得没什么两样:行情服务、策略服务、下单服务各占一台机器,中间靠消息中间件传递。这套架构支撑日频、小时频没问题,但当延迟预算被压到微秒级,它就破产了——一次跨机消息传递的开销就够整条链路走好几遍。于是行业收敛到了今天的主流形态:把整条热路径装进一台机器,进程间用共享内存对话。本节讲清这个范式为什么长这样、五个核心组件的职责边界怎么切,以及什么时候才值得打破单机边界。这是架构章的总纲,3.2 的通信机制全部服务于这里切出来的组件关系。 目标清单 复述单机紧凑范式的三个特征:同机部署、共享内存通信、热路径零系统调用; 切分热路径五个核心组件的职责,说明每个组件的输入输出与延迟预算;

3.1 整体架构范式与核心组件

最早的电子化交易系统跟普通后台系统长得没什么两样:行情服务、策略服务、下单服务各占一台机器,中间靠消息中间件传递。这套架构支撑日频、小时频没问题,但当延迟预算被压到微秒级,它就破产了——一次跨机消息传递的开销就够整条链路走好几遍。于是行业收敛到了今天的主流形态:把整条热路径装进一台机器,进程间用共享内存对话。本节讲清这个范式为什么长这样、五个核心组件的职责边界怎么切,以及什么时候才值得打破单机边界。这是架构章的总纲,3.2 的通信机制全部服务于这里切出来的组件关系。

目标清单

  1. 复述单机紧凑范式的三个特征:同机部署、共享内存通信、热路径零系统调用;
  2. 切分热路径五个核心组件的职责,说明每个组件的输入输出与延迟预算;
  3. 解释风控为什么必须作为内联闸门而不是旁路服务存在;
  4. 对比单机与分布式范式的优劣,给出架构选型的判断条件;
  5. 用延迟预算表为一条链路做设计评审。

一、范式:为什么是单机、共享内存、零系统调用

单机范式的逻辑起点是一个物理事实:跨机网络往返的微秒级开销,比多数软件环节的总和还大。行情从本机网卡到策略内存若只需数百纳秒,跨一次机就是一万纳秒起步。既然热路径上的组件彼此是强耦合的(订单簿的每一次更新都可能触发一次报价决策),把它们放进同一台机器、让组件间通信走内存拷贝而不是网络,就是延迟预算下的必然结论。

范式有三个可检验的特征。同机部署:行情接入、订单簿、策略、风控、网关五个组件在同一台服务器的内存里协作。共享内存通信:组件间用无锁队列与共享快照区交换数据,不经过内核。热路径零系统调用:收包用轮询模式的用户态驱动,发包直接写网卡的发送队列,整个行情到订单的路径上不出现一次内核切换——每一次系统调用都是微秒级的“停车检查”,热路径上停不起。

冷路径则完全相反:监控、记账、回放、告警这些组件放在旁路,消费热路径镜像出来的数据,绝不反向写入。冷热分离是单机范式最重要的纪律——延迟敏感的数据流与工程可运维的数据流,必须在架构图上就分开。

二、五组件:职责边界与延迟预算

把热路径拆开,是五个职责单一的组件。行情接入负责收包解码,输出标准化后的市场事件;订单簿消费事件维护盘口状态,输出状态变更通知;策略引擎订阅盘口与自身订单状态,产出报价与下单意图;风控闸门对每笔意图做前置检查,放行或拦截;订单网关把放行的意图序列化成交易所协议报文写入网卡,同时接收回报回填订单状态。每个组件只做一件事,边界恰好是数据格式变更的地方——这是切分组件的通用手艺:在数据变形处切,不在数据流动处切

组件 输入 输出 延迟预算(典型) 关键纪律
行情接入 网卡报文 标准化市场事件 数百纳秒 零拷贝、无锁
订单簿 市场事件 盘口状态与变更 几十纳秒级 增量更新、预分配
策略引擎 盘口与订单状态 下单意图 百纳秒到微秒 不做 IO、无动态内存
风控闸门 下单意图 放行或拦截 几十纳秒级 原子检查、误杀可回滚
订单网关 放行意图 协议报文与回报 数百纳秒 会话保活、序列号管理

预算表是架构评审的核心工具。它的用法不是"加起来不超过预算"这么简单,而是给每个组件一个回归测试的锚:任何一次改动后,组件耗时的分布若劣化超过容差,改动不合并。没有预算表的架构讨论,最终都会变成感觉之争。

图:五组件数据流与冷热路径分离

图:五组件数据流与冷热路径分离

三、边界:什么时候才需要分布式

单机范式不是教条,它有三条清楚的越界条件。容量越界:策略覆盖的品种与市场多到单机核数与内存带宽装不下行情处理时,按市场分组拆机,每个机房一组机器,组间不做热路径耦合。业务越界:需要跨交易所协同的套利,两边的"接入加簿记"各自本机化,协同决策放在其中一侧,中间那条跨机链路就是第四章微波专线的用武之地——此时架构设计的主要内容变成"把不得不跨机的部分压到最小"。风险越界:合规要求交易决策数据独立留存、风控引擎要求物理隔离时,会牺牲一点延迟把审计流独立成机——这是用微秒买可信,值不值由监管环境决定,不由工程师决定。

判断范式是否健康的试金石是问一句:新增一个市场、一个策略,是否要动热路径的现有组件。好的架构里,加市场是复制一组接入与簿记实例,加策略是往策略引擎里注册新逻辑,五组件的形状不变。如果每次业务扩展都在重构热路径,说明组件边界切在了错误的位置。

案例复盘:一次从三台机器到一台机器的架构收缩

背景:某团队的做市系统沿用了后台式架构:行情机、策略机、下单机各一台,中间走组播。系统运行多年,延迟始终在两百微秒上下,团队一度认为是代码写得不快。

操作:做延迟归因时发现真相:两百微秒里,行情机到策略机的跨机传输占了一百三十微秒,策略机到下单机再占五十微秒,真正的计算时间不足二十微秒。团队重构:三台机器的职责收进一台高主频服务器,组件间改用共享内存环形队列,收发包改轮询模式驱动。

结果:tick-to-trade 从两百微秒降到九微秒,且抖动显著收敛——原来跨机链路的微秒级抖动是延迟分布长尾的主因。机房托管费从三个机柜降到半个机柜。

解读:这个案例反转了直觉:架构布局的收益常常比代码优化的收益大一个量级。在错误的架构上做代码微优化,等于在漏气的轮胎上抛光轮毂。归因先行、布局其次、代码最后——这是性能工程的不变顺序。

变式:如果团队当时的目标是覆盖五十个市场,单机收缩就不再是答案,正确路径是按市场分组的分布式单机范式组合。范式选择永远是约束求解:延迟预算、容量需求、预算约束三个输入变了,最优解就变。

本节要点回顾

  • 单机范式三特征:同机部署、共享内存通信、热路径零系统调用,起点是跨机开销的物理事实;
  • 五组件在数据变形处切分:接入、簿记、策略、风控、网关,各有延迟预算与纪律;
  • 风控是内联闸门不是旁路服务,几十纳秒的检查买的是系统的生存权;
  • 冷热路径必须分离:冷路径只读镜像,可以慢,热路径的纪律它不用背;
  • 架构评审靠预算表与扩展性试金石,不靠感觉;布局收益常大于代码收益一个量级。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U