中心化交易所的核心竞争力可以用三个词来概括:深度、速度和确定性。深度源于做市商和真实用户的报价密度;速度源于撮合引擎和网络路径;确定性则源于透明的撮合规则和可验证的故障转移机制。 一家在牛市期间崩盘、在闪崩时订单簿混乱,或在新上市后产生重复成交记录的交易所,无论投入多少营销费用,都无法留住专业用户。SoonTech白标中心化交易所(CEX)的匹配引擎和订单簿子系统将这三大特性转化为可量化的工程指标: 每对交易对的稳态匹配延迟以微秒计,端到端往返时间在低毫秒级,主备切换仅需数秒且不会丢失或重复订单。 本文将全面详解匹配原理、订单类型、订单簿结构、内存匹配、持久化与恢复、市场数据流、自交易防范、性能基准测试、灾难恢复、机构级访问以及运营建议。

如果将交易所比作一栋大楼,那么匹配引擎就是其核心交易大厅。 每一笔买单和卖单都进入这里进行匹配;每一个价格、成交量和深度层级都由这里生成;每一项清算、结算和风险决策都依赖于它输出的成交报告。当匹配引擎暂停时,整个交易所便陷入停滞;当它产生错误结果时,下游的清算、结算、风险控制和市场数据展示都会受到影响。
中心化交易所(CEX)与去中心化交易所(DEX)之间最根本的区别恰恰在于此。DEX将匹配规则编码在智能合约中,由矿工或验证者按共识顺序执行,这使得规则可审计,但带来了高延迟、高成本以及订单类型受限等问题。 而中心化交易所(CEX)则在交易所运营的高性能服务器上进行匹配,这虽然能提供低延迟和丰富的订单类型,但也迫使运营商通过严谨的工程设计和独立审计来弥补中心化信任带来的缺陷。
对于白标中心化交易所(CEX)运营商而言,匹配引擎还决定了其能够服务哪些客户群体。散户用户对数十甚至数百毫秒的延迟并不敏感。 做市商、高频交易部门和套利公司则极其敏感。他们会运行自己的延迟探测程序来测量往返时间、市场数据更新间隔以及取消确认延迟,并根据这些数值决定是否连接以及报价的规模。 未经性能调优的匹配引擎无法吸引严肃的流动性提供者,交易所将陷入深度不足、用户流失、深度进一步缩减的恶性循环。
现代订单簿市场普遍采用价格-时间优先原则。 该规则包含两层含义。首先,较高的买价优先于较低的买价,较低的卖价优先于较高的卖价,因为最佳价格对交易对手最有利。其次,当多个订单停留在同一价格时,最早到达的订单优先成交。
价格优先原则确保了高效的价格发现。时间优先原则确保了“先到先得”的公平性。二者共同产生了一个确定性的匹配序列:一旦知晓订单簿状态,即可精确推导出订单是否成交、以何价格成交以及与谁成交。 这种确定性对专业用户至关重要,因为他们的策略是基于对挂单何时被触发的预期构建的。如果匹配过程不透明,他们就无法进行回测,也不会提供持续的流动性。
SoonTech的匹配引擎严格执行价格-时间优先原则。当订单进入匹配核心时,会附加两个时间戳:一个记录在网关接收订单时,用于风险控制和审计;另一个记录在订单实际进入匹配队列时,用于订单簿排序。 这两个时间戳均以微秒为精度,并持久化存储于交易日志中。一旦发生争议,操作员可以重放从接收至执行的完整生命周期,而非根据零散的日志进行推测。
有些交易所会暗中给予做市商或 VIP 订单隐性优先权。这虽能在短期内取悦特定客户,却会侵蚀市场对公平性的认知,并在市场波动时期引发信任危机。SoonTech 默认不会为任何账户实施隐性优先权。做市商应通过更紧凑的报价和更快的撤单速度来赢得优势,而非依靠规则层面的偏袒。
匹配引擎的表达能力体现在其支持的订单类型上。两种基础类型是限价单和市价单。限价单必须以指定价格或更优价格成交,未成交部分将保留在订单簿中。市价单要求以任何可用价格立即成交,并从最佳价格水平向下清空订单簿。
除上述两种外,专业交易还需要一系列高级订单类型来控制执行成本和风险。SoonTech支持以下常见类型。
首先,立即成交或取消(IOC)。该委托一经提交即尝试匹配,任何未成交部分将立即取消,而非保留在订单簿中。IOC 适合希望快速成交,但又不希望保留在订单簿中的委托暴露交易意图的交易者。
其次,立即全额成交或取消(FOK)。该订单要么立即全额成交,要么全部取消;不允许部分成交。FOK 适用于大额交易,因为部分成交会暴露策略意图。
第三,仅挂单(Post-Only)。如果新提交的订单会立即与挂单匹配,则该订单将自动被取消。仅挂单模式可确保做市商身份及相应的做市商返佣,因此被做市商广泛采用。
第四,止损单。用户设定触发价格。当市场触及该价格时,交易引擎会将止损单转换为市价单或限价单,并将其注入撮合系统。止损单不显示在订单簿中,而是存放在独立的触发队列中。
第五,冰山订单。大额订单在订单簿上仅显示少量可见数量,其余部分则隐藏。当可见部分成交后,隐藏部分中将释放另一笔同等规模的订单。冰山订单使大额交易者能够在不冲击订单簿的情况下建仓或减持头寸。
第六,TWAP和VWAP算法订单。这些订单由算法执行模块处理,该模块会根据时间窗口或成交量参与计划,将主订单拆分为多个子订单,从而进一步降低市场冲击。
所有订单类型均通过相同的匹配循环运行,但会挂接至不同的生命周期事件:下单前、匹配过程中及匹配后。通过将高级订单类型设计为可插拔模块,而非将其硬编码到匹配循环中,交易引擎得以持续演进。
订单簿是按价格层级组织的所有未匹配限价单的集合。每个价格层级包含停留在该价格的订单,并按到达顺序排队。当有市价单或可成交限价单进入时,引擎会从最佳价格层级开始逐层扫单,直至满足成交量或订单簿被清空。
成交簿的性能取决于三项操作:插入订单、取消订单以及在成交过程中移除订单。简单的数组实现虽然在功能上可行,但在每秒数十万或数百万次操作下会成为瓶颈。SoonTech 采用了多项结构优化。
首先,买入价和卖出价层级采用无锁跳跃表或数组索引的价格桶进行组织。 对于 tick 大小固定的交易品种,数组索引速度最快;对于 tick 大小可变的交易品种,跳跃表或红黑树可在 O(log n) 时间内定位价格层级。在每个价格层级内,订单存储在双链表中,该链表保留时间顺序,并允许在取消订单时以 O(1) 时间复杂度移除订单。
其次,每笔订单都有一个全局唯一的订单 ID,且有一个哈希表将该 ID 直接映射到内存中的订单对象。 取消操作可通过 ID 在 O(1) 时间内定位订单,且订单对象持有指向其价格层级和链表节点的反向指针,因此删除操作同样为 O(1)。若无此设计,高频取消操作将退化为对整个订单簿的全面扫描。
第三,引擎维护一个内存中的快照视图,该视图在每次匹配后都会增量更新。市场数据模块从该快照中生成深度、订单簿顶部价格和中间价,而非每次都重新扫描订单簿。该快照与匹配状态严格一致,因此交易场所绝不会出现“两个数据源”的情况。
匹配引擎的极致性能基于一个简单事实:内存操作比磁盘操作快几个数量级。如果订单簿存储在磁盘数据库中,每次匹配都会产生毫秒级的 I/O 操作,这是任何硬件都无法弥补的。因此,每个严肃的匹配引擎都会采用基于写前日志和周期性快照的内存匹配。
内存匹配意味着订单簿、订单对象和成交记录均驻留在进程内存中。匹配循环是一项纯粹的 CPU 操作,不涉及磁盘或网络,且一个订单通常在不到十微秒的时间内完成其在订单簿中的流转路径。
然而,内存是易失性的。如果没有持久化机制,系统崩溃或断电都会导致状态丢失。因此,匹配引擎会在每次状态变化时向预写日志追加一条记录。顺序追加是速度最快的磁盘I/O模式之一,因为它无需寻道,且操作系统和磁盘可以批量处理大型连续写入操作。 结合将多个状态变更合并为单次刷写的组提交机制,每笔订单的持久化开销降至不到一微秒。
仅靠日志是不够的。日志会无限增长,且从头回放日志进行重启的速度很慢。引擎会定期将完整的订单簿快照保存到磁盘上。重启时,系统会加载最新的快照,并回放快照之后的日志,从而将状态恢复到最后一次已确认操作的时刻。 SoonTech 每秒或每完成数万笔成交时触发一次快照,并将快照和日志存储在不同的物理磁盘或可用区中,以避免相关数据丢失。
持久化还涉及工程上的权衡取舍。强制在每次匹配后执行 fsync 会严重影响吞吐量;而跳过 fsync 则存在断电时丢失最后几条记录的风险。 SoonTech 采用带时间限制刷新机制的组提交:日志记录进入页面缓存,后台线程每 50 毫秒或当字节阈值被触发时执行 fsync。 若在此时间窗口内发生崩溃,可能会丢失最新的一批未刷新记录,但这些订单仍存在于网关中,可在恢复后重放,因此用户余额绝不会出现偏差。
匹配引擎不仅生成成交结果,还会输出完整的市场数据集:最新成交价、日最高价和最低价、24 小时成交量、订单簿最高价、多级深度以及K线图。这些数据为交易界面、做市商报价和量化策略提供支持,必须兼具速度与稳定性。
市场数据的生成采用事件驱动模式。订单簿中的每次状态变化或成交都会触发一个内部事件,市场数据模块通过消费该事件来增量更新其视图。采用增量更新而非全量重计算的方式,确保了该模块在每秒数万笔交易的情况下仍能保持响应速度。
数据流面向三类用户。最新价格和K线等公开市场数据会发送给所有订阅者;订单状态、成交记录和余额等私有数据仅发送给相关账户。深度层级数据流根据权限有所不同:免费用户可能只能看到委托簿顶部,而付费或机构用户则可查看20个深度层级或完整深度。
数据传输采用 WebSocket 长连接,并使用 Protobuf 或 MessagePack 编码以减少带宽和解析成本。 SoonTech的市场数据网关采用了多项协议优化:连接复用(使多个订阅共享一个套接字)、增量压缩(避免重传未变更的字段)、心跳检测(用于检测断开连接)以及背压机制(确保速度较慢的消费者被断开连接,而非拖慢整个集群的速度)。
流式传输中最常见的故障并非速度慢,而是数据乱序。由于网络抖动,成交报告可能在订单状态更新之前生成,却在更新之后才到达,导致客户端处于不一致状态。SoonTech 为每条消息标记两个序列号:一个是按连接递增的序列号,另一个是来自匹配日志的全局事件序列号。 客户端使用全局序列号检测缺失,使用连接级序列号检测重排序;一旦发现任何异常,便会获取完整的 REST 快照以重新同步。
当来自同一账户或相关账户的买单与卖单相互匹配时,就会发生自交易。 自交易可能是意外的策略冲突(例如套利程序的两条腿在同一价格处匹配),也可能是旨在虚增成交量、操纵收盘价或误导市场的恶意行为。成熟的交易场所会在匹配核心通过自交易预防(STP)机制来处理这一问题。
SoonTech 支持多种 STP 策略。其中最严格的是“取消最新订单”(Cancel Newest):如果新进订单将与同一 STP 组中的挂单匹配,则新订单将被取消。 “取消最旧订单”则会取消待成交的对向订单,并允许新订单继续与其他流动性进行匹配。“取消双方”会同时取消双方订单。“减量取消”仅取消重叠部分的数量,其余部分则保持待成交或继续执行。
STP 组在账户层面具有灵活性。默认情况下,主账户及其子账户属于同一个组,但机构客户可以为不同的策略子账户申请独立的组,以确保互不相关的策略不会相互取消。每项 STP 操作都会写入日志,供风险和合规部门审查。
除了 STP 之外,交易引擎还必须处理其他公平性问题。虚假报价(Spoofing)是指下达大额订单后迅速取消,以制造虚假深度。分层下单(Layering)是指在多个价格水平下单,以诱导价格波动。 动量点火策略会采取激进交易以触发其他算法。仅靠匹配规则无法防范此类行为;必须将交易日志输入风险和监控模型,由其向合规团队标记异常的“取消订单比率”、短期价格影响及相关模式。
仅以峰值 TPS 来讨论匹配性能具有误导性,因为 TPS 取决于订单构成、订单簿深度和取消率。一个仅进行匹配、不处理实时市场数据或不运行风险检查的演示系统,其 TPS 可能达到 100 万,但一个在满负荷运行下能持续维持数万 TPS 的生产引擎,才是业界领先的。 SoonTech 还衡量另外四项更具意义的指标。
首先是匹配延迟,即从订单输入到匹配核心内部生成成交报告所耗费的纯CPU时间。这是引擎的固有延迟,通常为5至20微秒。
其次,往返时间,即从用户发送订单到收到成交报告所耗时间,包括网络访问、身份验证、风险检查、序列化、匹配、持久化及数据流传输。在同地部署情况下,该时间在1至5毫秒之间;远程用户则受物理距离限制。
第三,持续吞吐量,即引擎在不产生队列、超时或延迟恶化的情况下,能够持续处理的每秒订单数量。单对交易对可维持每秒数万笔订单,而集群的水平扩展会随着交易对数量的增加而提升总吞吐量。
第四,尾部延迟。对做市策略而言,关键指标不是平均值,而是P99和P999。健康的引擎应将P99控制在数十微秒内;若出现突发性飙升,通常表明存在垃圾回收暂停、中断风暴、NUMA跨节点访问或日志刷新阻塞等问题,必须立即进行排查。
延迟必须在生产环境中持续监测,而不仅仅是在上线时测量。 每个 SoonTech 部署都嵌入了探针账户,该账户以固定速率在真实交易对上发送微小规模的合成订单,并记录端到端延迟。探针结果会反馈至仪表盘,并在 P99 超过阈值时触发警报。这种自我健康检查机制能在外部监控系统发现问题之前,就及时捕捉到性能退化。
匹配引擎可能是最后一个发生故障的组件,但每台机器都可能发生故障。灾难恢复设计需要回答一个核心问题:当一台机器、一个机架、一个可用区或整个区域发生故障时,如何在几秒内恢复匹配,且不丢失订单、不产生重复订单,也不出现“脑裂”现象?
基础架构采用主动-备用模式。主节点正常进行匹配,并将日志流式传输至备用节点,后者持续回放日志并保持近乎同步。当主节点发生故障时,监控系统会在数秒内检测到心跳丢失,随即提升备用节点为主动节点,并切换网关流量。 主备架构的关键在于故障转移时的一致性:必须对旧的主节点进行隔离,以防止其在恢复后重新加入并导致出现两个主节点;同时,新主节点所处的状态不得落后于最后确认的状态。
更高级的架构是主动-主动或多主动架构。针对同一对数据的匹配操作在多个节点上冗余运行,这些节点通过 Raft 或 Paxos 等共识协议就序列和结果达成一致,客户端可以连接到任意节点。 多主架构原则上可实现零停机故障转移,但会增加几百微秒到一毫秒的共识延迟,并带来相当大的工程复杂性。对延迟要求极高的配对通常仍采用主-备模式;而能够容忍额外延迟的配对则采用多主模式以获得更高的可用性。
SoonTech 默认采用跨可用区的高同步性主备架构。主节点和至少一个备节点位于同一数据中心的不同机架中,以实现毫秒级复制;此外,在远程区域还部署了一个灾难恢复节点,通过异步复制确保在站点级故障时系统仍能正常运行。 一个独立的领导者选举器负责协调故障转移,以防止“脑裂”现象。每季度举行的“演练日”会故意使主节点失效、断开网关连接并引入网络分区,以验证 RTO 目标在实际中能否达成。
专业机构不会通过 Web 用户界面进行交易。它们运行自己的交易系统、订单管理系统(OMS)/执行管理系统(EMS)以及风险网关,并需要标准化的连接方式。 金融市场的主导标准是 FIX(金融信息交换)协议,这是一种基于会话的文本或二进制编码协议,涵盖订单输入、取消、成交报告、持仓查询和风险控制。
SoonTech 为机构客户提供专用的 FIX 网关,该网关兼容 FIX 4.4 字段规范,并支持会话恢复、序列重新同步、对称与非对称加密、源 IP 白名单以及客户端证书。该 FIX 网关本身不进行匹配操作;其功能是将 FIX 消息转换为内部订单事件,并将成交报告回译为 FIX 格式。
机构通常还需通过 FIX 或专有协议实现跨市场主经纪商连接、将设备部署在匹配引擎旁以实现最低物理延迟的机房托管服务、与零售端不同的专用 API 速率限制,以及粒度更精细的专用深度流。SoonTech 将这些功能整合为机构级服务,操作员可根据客户需求逐个启用。
一个常被忽视的细节是:沙箱环境与生产环境在结构上必须完全一致。在沙箱环境中完成开发后,机构面临的最大问题往往并非 API 不匹配,而是会遇到仅存在于生产环境中的错误代码、速率限制或风险规则。 SoonTech 的沙箱运行与生产环境完全相同的匹配代码和配置模型,仅在数据层进行隔离,因此从沙箱到生产环境的迁移过程尽可能顺畅无阻。
匹配引擎的真正考验始于上线之后。基于为多家白标客户部署的经验,我们提出以下几条实用建议。
首先,分阶段推出交易对。上线时一次性开放数十个交易对会分散做市商的精力,导致各处订单簿深度不足。建议先从少数几个已有流动性承诺且信心度较高的交易对开始,待订单簿深度和用户体验稳定后再逐步扩展。
其次,在正式上线前引入做市商。公开上线前,应引入至少两到三家做市商,以确保基础深度,避免开盘时点差过大。报价义务、最大点差和最小挂单量应通过合同明确规定,并持续对照交易日志进行核验。
第三,预留扩展空间。在正常情况下,匹配服务器的CPU使用率应低于30%,内存使用率应低于50%,以便在市场波动时吸收三到五倍的流量峰值。容量规划应以昨日峰值的3至5倍为目标,而非平均值。
第四,构建全面的可观测性。匹配延迟、日志延迟、市场数据扇出延迟、备用复制延迟、日志队列深度、连接数、取消率以及STP触发条件,都应显示在带有警报的实时仪表盘上。监控是运营的“眼睛”;没有它,引擎就如同盲飞。
第五,反复演练、反复演练、再反复演练。每次故障转移、每次升级以及每次参数变更,都应首先在沙箱和预发布环境中进行端到端的演练,并制定回滚方案。只有在非生产环境中反复经历混乱,才能在生产环境中保持从容。
匹配引擎并非一个简单的现成模块;它是交易所核心竞争力的长期载体。其性能、稳定性和公平性共同决定了用户是否愿意将资产和策略托付给该平台。SoonTech的白标中心化交易所(CEX)匹配引擎和订单簿在价格-时间优先级、 内存架构、订单类型表达能力、市场数据流、自营交易防范、灾难恢复以及机构级访问等方面进行了系统性投入,使运营商能够从第一天起就拥有经过生产环境验证的坚实基础设施,从而将精力集中于做市商关系维护、用户增长和牌照申请。工程深度的积累最终将转化为业务深度的提升。
A:在同一数据中心的裸机或低延迟虚拟机上,从订单输入到成交报告的纯匹配延迟通常为 5 至 20 微秒。 用户可见的往返时延包括网络、身份验证、风险检查、序列化、持久化及扇出,在同地部署时为 1 至 5 毫秒,跨区域时则根据物理距离而更高。
A:价格-时间优先级仅决定订单匹配顺序,本身无法防止虚假报价或分层操作。SoonTech 在此基础上叠加了自营交易防范、异常“取消转成交”监控以及短期价格影响检测功能,并将可疑的日志模式标记并上报给合规团队。市场操纵主要属于监管违规行为,由监控和审计部门负责处理。
A:每次状态变更都会写入预写日志(WAL),并采用分组提交和定时刷新机制。在极端情况下,即使最新未刷新的记录丢失,这些订单仍存在于网关中,并在恢复时被重放,因此账户余额绝不会出现偏差。借助定期快照,重启恢复仅需数十秒。
A:在标准的强同步部署中,复制延迟在亚毫秒到几毫秒之间,故障检测和主从角色转换可在数秒内完成。由于备机镜像了主机的状态,已确认的填充数据不会丢失;切换过程中到达的订单会在网关处排队或重试,而不会产生重复的填充数据。
A:支持。冰山订单已在匹配核心中实现,仅可见数量显示在订单簿上,隐藏部分将在可见部分成交后释放。TWAP和VWAP由独立的算法执行模块处理,该模块将父订单拆分为子订单,随后这些子订单将根据相同的价格-时间优先级规则进行匹配。
A: SoonTech 提供支持标准会话管理、序列重新同步、证书认证及 IP 白名单功能的 FIX 4.4 网关。对延迟敏感的做市商还可申请机房托管和专用市场数据通道,将其设备部署在与匹配引擎相同的数据中心内,以最大限度地降低物理延迟。
🌐 借助 SoonTech 构建安全且可扩展的 Web3 平台。
探索我们针对白标加密货币交易所、预测市场、MPC 钱包、撮合引擎、流动性集成及合规性的解决方案。