30 秒看懂
Ron Minsky 与 Brian Nigito 讨论电子交易所架构及其背后的网络选择。他们回顾从串行 TCP 传输转向组播的过程,解释排序与恢复机制,并讨论面向硬件的优化、专用设备和通用技术的权衡。
- 1公平性与扇出串行传输促使参与者抢先连接或建立多个连接,因此需要另一种分发机制。
- 2两种不同的数据流讲者区分了私有订单及响应连接与共享的组播行情数据流。
- 3一次排序,广泛分发中央排序器可以为下游应用确定事件顺序,恢复机制负责处理丢失的消息。
- 4机械同理心理解硬件边界可以帮助判断设计是否可行,以及哪里值得优化。
- 5序列化与复制逐份发送会占用线路时间;硬件复制可以并行向多个接收方传递同一数据流。
要点建议
- 交易所必须快速、公平地传播共同的市场信息,同时保留可靠的交易记录。
- 组播让网络硬件为多个接收方复制同一数据流,在受控的托管网络中特别有用。
- 序列号和独立恢复机制为尽力而为的组播数据流增加排序和丢失处理能力。
- 当吞吐量满足需求时,小型、有序的关键路径可以简化交易所架构。
- 硬件限制、序列化延迟和数据复制成本决定了实际系统设计。
- 专用技术有助于处理高要求工作负载,但通用技术生态在价格和性能上也有强大优势。
按章节阅读整理后的全文
电子交易所如何运作
Nigito 介绍订单、成交和使用交易所信息的众多参与者。可靠性和公平性影响系统设计。
Ron Minsky 介绍了 Brian Nigito,后者的职业经历横跨交易所和交易公司。他们将讨论金融市场背后的基础设施,特别是网络和 IP 组播,以及其约束与开放互联网和云系统有何不同。
Nigito 解释说,证券交易所是在监管规则下运营的正式市场。参与者包括为自己或客户交易的公司、清算机构和行情数据提供商。其他交易所也会使用其信息,因为适用规则要求它们的报价相互关联。
Minsky 指出,实体交易大厅已逐渐让位于高度电子化的交易所。Nigito 将电子通信的历史追溯到数十年前,同时指出规则和实践逐步转向持续可访问的电子报价。
在消息层面,订单表达了以不劣于某一价格买入或卖出一定数量证券的意愿。它可能立即成交、留在订单簿中或被取消。当兼容的买卖意愿相遇时,成交消息会向双方报告交易及其条款。
Minsky 将订单簿描述为核心数据结构,周围有许多需要不同信息的使用者。交易员需要关于自身活动的私有报告,也需要公开、匿名的行情数据。可靠性很重要,因为遗漏或不一致的交易记录可能造成严重后果。
Nigito 补充了公平性:竞争参与者会研究各自收到信息的速度,并寻求规则允许的每一项优势。让许多人几乎同时收到数据流,既是系统问题,也是市场设计问题。
从串行传输到组播
对话回顾逐客户端传输的公平性问题,并解释受控的托管网络为何使 UDP 组播成为可能。私有订单流仍使用独立连接。
在 Island,早期方案使用相似的机器,让每个参与者经历大致相同的处理工作。这在某些方面公平,但效率很低:数千台机器大部分时间处于空闲状态。当多个客户端共享一台机器时,按连接顺序串行发送消息又暴露出新问题。
参与者争相建立第一个连接。轮询顺序减少了这种优势,但客户端随后建立多个连接并采用最快收到的副本。为每个连接配备专用机器会浪费资源,因此架构需要另一种分发机制。
TCP 是开放互联网中合理的选择,早期系统也以此传送部分行情数据。随着公司在受控的私有网络中将设备托管在交易所基础设施附近,UDP 和组播变得更可行:发送方只需发送一份数据,由网络硬件负责复制。
Nigito 简述了网络分层。基本的数据包传递是尽力而为的;TCP 使用排序、重传等机制构建可靠、有序的点对点数据流。每个接收方需要独立的 TCP 连接和数据流。UDP 更轻量,可以将数据发往多个机器加入的组播组。
Minsky 问网络内部复制为什么有帮助。Nigito 说,交换机可以快速、规律地向多个端口重复发送比特,而通用服务器逐份写入会产生重复工作。组播树将复制分散到网络各处,使复制可以在靠近接收方的位置发生。
早期部署有时使用广播,将所有内容重复发送到所有地方。Nigito 回忆,内核开发者指出 TCP 为网络健康作出权衡,这对互联网很重要,但可能产生延迟波动。受控且丢包率低的网络让 UDP 更适合共享数据流。
两位讲者区分了两种数据流。订单提交、取消和私有响应通常使用 TCP 连接;共享的匿名行情数据通常使用组播。托管和交叉连接让交易公司靠近交易所网络,提供比公共互联网更加可控的环境。
他们提醒说,这种情况尤其具有股票市场的代表性。外汇和固定收益市场可能采用双边报价和询价工作流。不同产品、参与者和历史背景意味着并非每个市场都会趋于相同模式。
Nigito 回忆曾有人尝试用 UDP 提交订单。当公司已经需要为许多其他交易所管理 TCP 连接时,这种方式的采用有限。相比之下,组播对共同公开数据流的优势非常大,因此广受欢迎。
排序、分发与恢复
排序器确定事件顺序,组播将数据流传播给下游应用。序列号、重传和快照用于处理丢失和迟到的接收方。
Minsky 观察到,互联网视频并没有成为人们曾设想的组播应用场景:观众经常在不同时间观看不同内容。但市场参与者需要相同的实时交易所数据流。除了向客户发布行情,组播在内部也有作用。
在交易所内部,事件顺序至关重要。Nigito 描述了如何保持中央排序工作精简,并将有序数据流分发给其他应用,以生成成交报告、清算信息和匿名公开数据。
Minsky 将其概括为交易处理架构:排序器为请求选择顺序并发布,下游组件负责具体计算和报告。Nigito 指出,一些交易所将排序与撮合分开;其他交易所的组织方式有所不同。
组播本身并不是可靠的有序数据流。序列号让接收方能够发现丢失或乱序的消息;独立恢复服务可以重传缺失部分。这将快速分发与针对应用恢复顺序的机制结合起来。
Nigito 说,通用可靠组播协议常常允许慢接收方拖慢发布。在大规模系统中,几乎总有人遇到问题。他参与的系统改用排序和专门恢复机制,使主数据流可以继续服务于跟得上的参与者。
领域知识还提供了另一条捷径:迟到的接收方可以获得当前状态的精简快照,而不必从头重放每个事件。同样,如果知道排队中的订单与其取消操作会相互抵消,就可能找到通用字节流无法提供的优化。
Minsky 总结了这种权衡:交易所重视向绝大多数参与者快速、公平地分发信息,落后的接收方则单独恢复。Nigito 说,确定应用不需要解决哪些问题,是简化设计的重要方法。
速度与简单的关键路径
市场碎片化使可预测的响应时间与交易相关。讲者讨论单核运行排序、轮询、数据复制和简单组件。
市场碎片化使速度和可预测的响应与路由决策密切相关。在一个场所等待的参与者可能错过其他地方的机会。Nigito 认为,更快且更稳定的响应可以帮助参与者更有效地报价和路由。
Minsky 举例说,一家公司可能愿意在多个场所中的任意一个买入一定数量,但不愿意同时在所有场所买入。如果没有一条跨市场指令表达这一偏好,它可能在多个地方挂单,并在一处成交后取消其他订单。速度会改变这一策略的风险和权衡。
Minsky 回忆说,得知 Nasdaq 的一种架构可以让所有交易通过一台机器的单个核心处理,而运行的主要是普通 Java 程序时,他感到惊讶。这个设计既快得难以置信,又似乎受到奇怪的限制。Nigito 强调这是团队共同完成的工作,而集中处理关键顺序可以简化系统。
与其假设工作必须分布式处理,不如问经过仔细优化后,整个关键路径能否放入一个核心。硬件能力和理论边界提供了基准。并非每个交易所都采用相同架构,但这种方法可以消除大量协调复杂性。
实现技术也在演变。中断驱动网络通过在通知核心之前批量处理工作,在 CPU 开销与延迟之间作权衡。当核心足够多时,程序可以改为轮询网卡,专用一个核心在数据到达时立即发现它。
传统 socket 接口可能需要把数据复制到应用程序拥有的缓冲区。更底层的设计可以让网络设备将数据放入内存,由应用轮询,然后在处理完毕后释放内存供复用。减少复制并使每个事件的服务时间可预测,有助于平滑队列。
Nigito 回忆 Island 的一条设计原则:如果一个组件复杂到无法在一个周末正确重写,就应该重新审视它。Minsky 说他们目前的系统并不都符合这一标准,但两人都重视背后的问题:在完成任务的同时,能否更简单?
机械同理心与定制硬件
硬件知识和谨慎实验指导优化。在极高消息速率下,可编程设备和专用网络交换设备可能提供帮助。
Nigito 将这种理解硬件的心态称为“机械同理心”:充分了解物理机器,以便设计接近其能力边界的系统。粗略估算边界有助于判断方案能否运行,以及实现距离实际极限还有多远。
培养这种直觉需要好奇心、实验和计算机体系结构基础。现代处理器会预测并优化工作,因此简单基准测试可能产生误导。有用的能力是选择与所研究问题真正相关的测量,并持续了解硬件。
Minsky 区分了可扩展性与效率:通用分布式设计并不总是比针对实际工作负载规模的具体方案更简单或更快。Nigito 补充说,过去硬件持续大幅进步,使软件层得以增长;某些领域进步放缓可能让效率变得更重要。
Nigito 说,定制硬件并非对 Jane Street 的每项业务都同样重要。面对极高消息速率时,可编程网络硬件可以根据数据包更深处的信息过滤,例如证券标识,并在网络和处理能力成为约束时帮助汇总多个场所的数据。
讲者比较了网络设备。传统存储转发交换机先接收并检查数据包;直通交换机在字节到达时就开始转发;第一层交叉点设备则根据固定配置以电信号复制数据。后者高度专用,但对某些行情分发场景很有用。
Nigito 给出依赖硬件的示例数字:较早的存储转发交换机约为 7 至 10 微秒,直通交换机约为 300 至 500 纳秒,交叉点设备本身约为 3 至 5 纳秒。还必须加上线缆和其他系统成本;这些并非普遍适用的端到端保证。
极快的网络改变了一台计算机与多台计算机之间的界限。Nigito 估计,核心间通信约为 100 纳秒,优化后的网卡路径为数百纳秒,具体取决于机器。在他描述的系统中,经过极少处理的数据帧可以在不到一微秒内进入用户空间并再次发出。
物理限制与网络权衡
序列化延迟解释了组播的部分优势。对话比较 InfiniBand、RDMA 和通用 Ethernet,并展望未来的 I/O 与链路速率。
物理链路也很重要。序列化延迟是以给定线路速率将数据包比特放到线上所需的时间。不同的输入与输出速率可能需要缓冲;在足够数据可用之前,无法以更高的速率发出完整数据包。
在 10 Gb/s 下,讲者近似使用每字节一纳秒的数字。向 600 个接收方分别发送 1,000 字节消息,每份约消耗一微秒,因此后面的接收方等待更久。发送一份并由硬件复制,既能改善分发延迟,也能提高发送方可用吞吐量。
InfiniBand 带来了硬件可靠性、零拷贝接口和远程直接内存访问等思路。RDMA 将直接内存访问扩展到不同机器之间,允许数据进入远端内存,而不需要接收方 CPU 逐字节复制,但它需要不同的 API。
Nigito 回忆,一些部署中的硬件流控和超负荷接收方会向发送方施加反压,使行情数据变慢,而且原因难以诊断。在某些工作负载中,尽力而为的 Ethernet 加上显式恢复机制更容易理解。可靠性和流控既有好处,也带来权衡。
对话转向基于 Ethernet 的 RDMA 方案 RoCE,以及专用技术与通用技术之间更广泛的选择。Nigito 回忆,专用电信硬件曾被运行在日益强大的通用处理器上的软件所取代。
通用硬件拥有庞大的生态系统,持续改善价格和性能。但当处理器、内存的发展趋势或特定工作负载证明有必要时,专用化又可能值得。Minsky 指出,即使基于 FPGA 的定制系统,也建立在大型厂商规模化生产的可编程硬件之上。
从对话发生时展望未来,Nigito 预计用户空间轮询和零拷贝 I/O 会更加标准化,包括 Linux io_uring 中出现的类似思路。他还预计更高的网络速率会变得更重要,但更快的链路并不自动意味着更低延迟。
较高的信号速率可能带来额外的固定延迟,包括纠错成本,具体取决于硬件和链路。对于足够大的消息,缩短的序列化时间可能抵消这部分成本。两位讲者强调,这种权衡取决于实际设备、工作负载和市场需求。
同频道的其他文章
15:33EN → 简体中文
1:48:29EN → 简体中文
1:36:37EN → 简体中文
1:05:45EN → 简体中文
1:25:00EN → 简体中文
1:16:29EN → 简体中文