{"repo":"foreverchens/match-engine","free":true,"listed":false,"github":"https://github.com/foreverchens/match-engine","clone":"git clone https://github.com/foreverchens/match-engine.git","description":"基于环形数组+双向链表+红黑树的冷热分区数据结构+disruptor同步事件队列的 单线程撮合引擎","language":"Java","stars":15,"topics":["matching-engine","exchange","match-engine","order-book","ring-buffer","trading-engine","trading","crypto"],"license":"Apache-2.0","category":"trading","readme_excerpt":"撮合引擎 Match Engine 高性能撮合核心，专注于限价 / 市价订单簿、低延迟撮合、快照与 WAL 持久化。项目兼顾架构可读性与二次开发体验，适合作为数字资产交易所、量化撮合模块或分布式撮合原型的基线实现。 项目总览 - 核心特性 ：单线程撮合 + 冷热双区订单簿（RingBuffer + TreeMap），自动重心再平衡，支持 LIMIT/FOK IOC 市价撮合，写前日志与快照保证恢复能力。 - 技术栈 ：Spring Boot WebFlux、Disruptor 事件驱动、R2DBC MySQL、可选 Redis 扩展；静态页面 trade.html 用于快速体验。 - 应用场景 ：数字货币交易所、衍生品撮合、模拟撮合教学、低延迟撮合实验、撮合算法 Benchmark。 - 快速上手 ： mvn spring-boot:run 即可启动，Swagger + Curl 示例帮助你在 3 分钟内打通下单、撤单、撮合全流程。 关键词 / Tags matching engine , order book , limit order book , IOC , crypto exchange , 高性能撮合 , 低延迟 , 环形缓冲 , 红黑树 , WAL , snapshot , 订单簿 , 撮合算法 , order queue , recenter , dynamic migration , spring webflux , disruptor --- 架构与数据结构亮点 双区订单簿拓扑 核心订单簿采用冷热区分层存储，充分利用 CPU cache locality 与红黑树的有序检索，动态图解如下： 数据结构要点 - Hot Zone：固定长度 2^n RingBuffer，O(1) 定位当前活跃价位，Cache 友好，适配 高频撮合 / HFT 场景。 - Cold Zone：TreeMap（红黑树）承载远离重心的价位，保证有序检索与 O(logN) 复杂度。 - Dynamic Migration：RecenterManager 通过成交价序列计算偏移，触发冷热区迁移与窗口重心再平衡。 - PriceLevel：内部是 FIFO OrderQueue，支持 submit/remove/patchQty/dump ，并通过 OrderNodePoolFixed 复用节点，最大限度削减 GC. 业务链路与组件关系 用户下单从接口到撮合线程的调用时序： 核心类图概览： --- 数据备份与恢复 使用“单写线程 + 影子快照”的组合模型，在不中断撮合线程的情况下生成点时快照，并配合 WAL（Write-Ahead Log）实现精确恢复。 详情见 https://ychen5325.notion.site/26316248953d80ffb884edb31a91bc27 读写并行时序图 - 快照策略 ：后台线程按需触发 snapEpoch ；在 Prepare 阶段确保旧写完成，再开始扫描对象池。每个在 t0 之后写入的对象会先复制旧像到 ShadowPool。 - 一致性保障 ：快照不会阻塞撮合线程；通过 lastMutEpoch 与影子副本确保输出的是 t0 时刻的强一致状态。 - 恢复流程 ：加载最新快照 → 从快照时间戳开始回放 data/wal 下的 WAL 日志 → 恢复到拍摄点后的完整状态。 - 读写流示意 ： 提示：快照文件默认写入 data/snapshots/ ，WAL 落盘在 data/wal/ 。自定义路径可以在 appl","default_branch":null,"files":null,"tree":[],"storefront":"/r/foreverchens","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/foreverchens/match-engine/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}