2. 硬件基础设施稳定性:服务器选型、网络架构、机房部署与冗余设计

做高频交易这些年,我踩过最大的坑,往往不是策略逻辑写错了,而是硬件在关键时刻掉链子。你想想看,行情数据每秒几万笔,你的订单比别人慢一微秒就可能被吃掉。所以硬件基础设施,说白了就是整个系统的地基。地基不稳,上层再漂亮的算法都是空中楼阁。

这一章,我把自己在机房摸爬滚打的经验掰开揉碎了讲。咱们从服务器选型开始,一路聊到网络架构、机房部署,最后说说冗余设计——那些年我交过的学费,希望能帮你省下来。

2.1 服务器选型:不是越贵越好,是越稳越好

很多人一上来就问:「是不是得买最贵的服务器?」我的回答是:不一定。高频交易对服务器的要求很特殊,它不追求通用计算能力,而是追求极致的确定性低延迟

2.1.1 CPU 选型:主频 vs 核心数

我个人习惯,高频交易服务器首选高主频、少核心的 CPU。为什么?因为交易逻辑大多是单线程的,多核心反而会因为 NUMA 架构引入额外的延迟。

参数 推荐值 说明
主频 ≥ 4.0 GHz(Turbo 可达 5.0+) 越高越好,单线程性能是关键
核心数 4-8 核(物理核) 不要超线程,关闭 HT 减少抖动
缓存 L3 ≥ 20MB 大缓存能减少内存访问延迟
指令集 支持 AVX-512 某些行情解析场景能用上
我的经验: 我曾经在选型时贪便宜买了低频多核的 CPU,结果行情峰值时,单线程处理不过来,导致订单延迟飙升。后来换回高主频 CPU,问题立刻解决。记住,高频交易里,单核性能就是王道

2.1.2 内存:容量够用就行,延迟要低

高频交易的内存使用量其实不大,行情数据都是实时处理的,不会囤积太多。所以内存容量 32GB 或 64GB 通常就够。但内存的频率时序很重要。

  • 频率: DDR4-3200 或 DDR5-4800 以上
  • 时序: CL 值越低越好(比如 CL14 优于 CL16)
  • 通道: 双通道或四通道,充分利用带宽

嗯,这里要注意:不要用 ECC 内存。ECC 虽然能纠错,但每次访问都会多一次校验,增加延迟。高频交易场景下,我们宁愿接受极低概率的软错误,也不愿意多等那几纳秒。

2.1.3 网卡:Solarflare 还是 Mellanox?

网卡是高频交易服务器的灵魂。我个人只用两种:Solarflare(现属 Xilinx/AMD)Mellanox(现属 NVIDIA)。它们都支持用户态网络协议栈,能绕过内核,直接把数据从网卡送到应用内存。

关键特性:
  • 支持 PTP(精确时间协议),硬件时间戳精度达纳秒级
  • 支持 TCP 卸载和用户态 TCP(如 OpenOnload)
  • 支持多队列和 RSS,减少中断抖动

我建议至少配双网卡:一块用于行情接收,一块用于交易报单。物理隔离,避免互相干扰。

2.2 网络架构:微秒级的较量

网络架构这块,说白了就是「怎么让数据跑得最快」。高频交易网络和普通数据中心网络完全是两码事。普通网络追求吞吐量,我们追求极低延迟极低抖动

2.2.1 网络拓扑:扁平化是王道

传统数据中心喜欢用三层架构(接入层、汇聚层、核心层)。但高频交易里,每多一层交换机,就多几微秒延迟。所以我推荐扁平化拓扑,甚至直接点对点直连

高频交易网络拓扑(扁平化设计) 交易所行情/交易网关 行情交换机(低延迟) 交易交换机(低延迟) 行情服务器 A 行情服务器 B 交易服务器 A 交易服务器 B 行情与交易物理隔离,减少互相干扰

你看这个图,行情和交易走不同的交换机,物理上完全隔离。这样即使行情流量突发,也不会影响交易链路的稳定性。我在项目中就遇到过,行情数据量暴增时,共享链路的交易报单被堵住,那损失...不提了。

2.2.2 交换机选型:低延迟是唯一标准

普通交换机延迟在 1-10 微秒,但高频交易用的交换机,延迟要控制在亚微秒级。我常用的品牌是 Arista 和 Cisco Nexus 系列,它们有专门的低延迟模式。

避坑指南: 我曾经贪便宜买过某品牌的「企业级」交换机,标称延迟 1 微秒,实际跑起来抖动高达 5 微秒。后来换了 Arista 7150 系列,延迟稳定在 400 纳秒左右。所以,不要只看标称值,要实测抖动

2.2.3 布线:光纤还是铜缆?

机柜内部,我推荐用直连铜缆(DAC),延迟最低,功耗也小。机柜之间,用单模光纤,传输距离远,延迟也低。记住,每米光纤大约增加 5 纳秒延迟,所以尽量缩短布线距离。

2.3 机房部署:距离就是金钱

高频交易里,物理距离直接转化为延迟。光在光纤中每公里大约传输 5 微秒,所以你的服务器离交易所越近,延迟就越低。

2.3.1 托管机房:和交易所做邻居

大多数交易所都提供托管服务(Co-location),就是把你的服务器直接放在交易所的机房里。这样网络延迟可以控制在 1 微秒以内。我建议,只要预算允许,一定要用托管服务。

嗯,这里有个细节:托管机房的机柜位置也很重要。尽量选离交易所网关最近的机柜,哪怕只差 10 米光纤,也差了几十纳秒。

2.3.2 机柜内部布局:气流与走线

机柜内部,我习惯按从上到下的顺序部署:

  1. 顶部: 交换机(方便走线)
  2. 中部: 交易服务器(散热最好)
  3. 底部: 存储或备用设备(发热量小)

走线方面,前后分离:网线走前面,电源线走后面。这样维护时不会扯到网线,避免意外断连。我曾经见过同事换硬盘时不小心踢掉了网线,导致交易中断了 3 秒...那 3 秒的损失,够买一柜子服务器了。

2.4 冗余设计:别让单点故障毁了你的交易

冗余设计,说白了就是「鸡蛋不要放在一个篮子里」。高频交易对连续性要求极高,哪怕中断 1 秒,都可能造成巨大损失。

2.4.1 电源冗余:双路供电 + UPS

每台服务器必须配双电源模块,分别接入不同的 PDU(电源分配单元)。PDU 再接入不同的 UPS(不间断电源)。这样一路电源故障,另一路能无缝切换。

我的配置标准:
  • 服务器:双电源,支持热插拔
  • PDU:双路,A/B 路独立
  • UPS:N+1 冗余,至少支持 15 分钟满载运行
  • 发电机:柴油发电机,自动切换

2.4.2 网络冗余:双链路 + 主备切换

网络层面,我采用双链路主备模式。主链路正常工作时,备链路处于待命状态。一旦主链路故障,备链路在微秒级内接管。

具体实现上,可以用网卡绑定(Bonding) 或者 交换机堆叠。我个人偏好网卡绑定,因为它不依赖交换机特性,兼容性更好。

2.4.3 服务器冗余:冷备 vs 热备

服务器冗余有两种策略:

策略 切换时间 成本 适用场景
冷备 分钟级 非核心系统
热备 毫秒级 核心交易系统

对于核心交易系统,我建议用热备。两台服务器同时运行,一台主用,一台备用。主用服务器实时同步状态到备用服务器。一旦主用故障,备用服务器立即接管,交易不中断。

我的经验: 热备的关键是状态同步。我曾经遇到过主备切换后,备用服务器因为状态没同步完整,导致订单号重复,被交易所拒绝。后来我们改用确定性重放机制,确保备用服务器能精确复现主服务器的状态。

2.4.4 数据冗余:RAID 还是分布式?

高频交易的数据量不大,但写入速度持久性很重要。我推荐用 RAID 10(镜像+条带化),兼顾性能和冗余。不要用 RAID 5,它的写入性能太差,而且重建时间太长。

如果预算充足,可以用 NVMe 全闪阵列,延迟比 SSD 低一个数量级。嗯,不过价格也贵一个数量级,自己权衡吧。


好了,硬件基础设施这块,我把自己这些年积累的经验都倒出来了。从服务器选型到网络架构,从机房部署到冗余设计,每一个环节都可能成为系统的瓶颈。记住一句话:高频交易没有「差不多」,只有「行」和「不行」

下一章,咱们聊聊操作系统层面的稳定性保障。到时候见。

专注资料整理