← 返回文章列表
March 25, 2026
5 分鐘閱讀

Aeron:驅動半個HFT行業的訊息傳遞系統揭秘

Aeron:驅動半個HFT行業的訊息傳遞系統揭秘
#aeron
#hft
#低延遲
#訊息傳遞
#java
#ipc
#raft
#金融
🛰️
Part 2 of 4 · Collection
Low-Latency Trading Infrastructure

Aeron訊息傳遞架構 Aeron:Media Driver、共享記憶體、三重緩衝日誌——定義低延遲訊息傳遞標準的架構。

談到高頻交易領域的訊息傳遞系統,有一個名字在每次討論中都會被提起——Aeron。由Martin Thompson及Real Logic團隊(後來併入Adaptive Financial Consulting)開發,Aeron已成為在微秒決定一切的世界中資料傳輸的事實標準。

本文將逐一拆解Aeron的各個元件:Transport、Archive、Cluster和Sequencer。我們將深入瞭解其內部架構、核心優勢,以及開始出現問題的地方。


概要

  • Aeron——面向低延遲應用的開源(Apache 2.0)訊息傳遞系統
  • IPC延遲:通過共享記憶體約250納秒往返
  • 吞吐量:每秒2000萬+條訊息
  • 四大產品:Transport(核心)、Archive(錄製/回放)、Cluster(Raft)、Sequencer(全序)
  • 語言:Java(主要)+ C客戶端(功能不完整)
  • 使用者:數十家HFT公司、做市商和交易所

第一部分:Aeron Transport——一切的核心

架構:Media Driver

Aeron Media Driver

Aeron的核心元件是Media Driver。它是一個獨立程序(或嵌入式庫),負責管理所有資料傳輸。應用程式通過共享記憶體(/dev/shm中的mmap檔案)與Media Driver通訊。

┌──────────┐                    ┌──────────────┐                    ┌──────────┐
│ Publisher │ ── shm commands ─→│ Media Driver  │←─ shm commands ── │Subscriber│
│   (App)   │ ←─ shm responses─│  (process)    │─→ shm responses  │  (App)   │
└──────────┘                    │              │                    └──────────┘
                                │ Log Buffers  │
                                │ (data path)  │
                                └──────┬───────┘
                                       │
                                    Network
                                  (UDP/IPC)

核心資料結構:

  • ManyToOneRingBuffer(MPSC)——客戶端向Media Driver傳送命令
  • BroadcastTransmitter/Receiver——Media Driver向客戶端傳送響應
  • Log Buffers——用於資料的三重緩衝追加式日誌
  • Position Counters——用於協調位置的原子計數器

Log Buffers:三重緩衝

Aeron中的資料通過Log Buffers傳輸——三個交替使用的term buffer。當一個緩衝區寫滿後,會切換到下一個(term rotation)。這使得publisher可以寫入一個緩衝區,而subscriber同時從另一個緩衝區讀取。

每個term buffer的大小從64 KB到1 GB不等,在建立Publication時固定。

協議

Aeron在UDP之上使用自定義wire protocol:

  • Data frames——帶頭部的實際資料(stream ID、session ID、term ID、offset)
  • Status Messages——流量控制(receiver報告其位置)
  • NAK——重傳請求(receiver驅動)
  • Setup——連線建立
  • Heartbeat——活躍性檢查

效能

公佈的效能指標:

指標 數值
IPC(共享記憶體)RTT ~250納秒
UDP單播RTT(裸金屬) ~10微秒
UDP單播RTT(雲端,AWS) <100微秒
吞吐量 >2000萬條/秒
Aeron Premium(核心旁路)P99 39微秒
Aeron Premium P99.9 43微秒

這些數字令人印象深刻。但有一個關鍵點——它們是在Java上獲得的,因此受到JVM相關因素的影響。


第二部分:Aeron Archive——錄製與回放

Archive解決了將訊息持久化到磁碟並支援從任意位置回放的問題。

工作原理

  1. Archive程序通過Aeron Transport訂閱資料流
  2. 所有訊息被寫入分段檔案儲存到磁碟
  3. 需要時進行回放:Archive從已錄製的資料建立新的Publication
  4. 客戶端訂閱回放流並接收歷史訊息

應用場景

  • 審計——監管機構要求儲存所有訊息
  • 故障恢復——新節點通過回放"追趕"領導者
  • 分析——回放資料流用於策略回測
  • 除錯——重現精確的事件序列

第三部分:Aeron Cluster——Raft共識

Raft共識

Cluster是基於Raft共識的容錯複製狀態機。用於訊息丟失不可接受的關鍵系統(撮合引擎、訂單管理)。

工作原理

  1. Leader接收所有傳入命令
  2. 通過Aeron Transport將每條記錄複製到followers
  3. 多數節點確認後——記錄被視為committed
  4. 已committed的記錄被應用到狀態機

特性

  • 自動leader選舉和故障轉移(<1秒)
  • 強一致性(通過leader實現線性化讀取)
  • 熱系統升級
  • 吞吐量:Raft共識下每秒數百萬條訊息

第四部分:Aeron Sequencer——統一事件排序

Sequencer是為資本市場最佳化的新產品(2025年)。

問題

在做市和交易所中,所有參與者看到相同的事件順序至關重要。Sequencer提供全序排列(total ordering)——為所有訊息建立統一的全域性序列。

架構

  • 構建於Aeron Cluster之上
  • 分散式日誌,複製到多臺機器
  • 多讀者——多個應用讀取同一日誌
  • 團隊解耦——團隊在統一排序框架內獨立工作

侷限性

Sequencer是Adaptive Financial Consulting的商業產品。閉源。繼承了Cluster的所有弱點。


Aeron的弱點

JVM開銷與GC暫停

儘管有諸多優點,Aeron存在一些根本性的侷限:

1. JVM依賴

即使使用了off-heap記憶體,JVM safepoints仍會暫停所有執行緒。GuaranteedSafepointInterval=300000只是一個權宜之計,而非真正的解決方案。JIT預熱在啟動後的最初幾分鐘增加了不可預測性。

C客戶端存在,但功能不完整——沒有Archive,沒有Cluster。

2. Media Driver開銷

獨立程序意味著通過共享記憶體的額外一跳。嵌入模式則繫結到JVM。兩種情況都帶來額外的不可預測性。

3. 固定的Log Buffers

三個term buffer,大小在建立時固定。沒有自適應記憶體管理。太大則浪費記憶體;太小則頻繁term rotation。

4. 沒有原生核心旁路

網路僅支援UDP。不支援io_uring、DPDK、AF_XDP。Aeron Premium添加了核心旁路,但它是閉源付費產品。

5. SBE——獨立依賴

XML schema、Java程式碼生成器、獨立的構建步驟。沒有語言內整合。

6. 沒有零複製網路

資料從套接字複製到log buffer。在Linux 6.0+上,io_uring支援零複製傳送/接收,但Aeron並未利用這一特性。


替代方案

專案 語言 優勢 劣勢
Aeron Java/C 成熟、經過驗證、完整生態系統 JVM開銷,開源版無核心旁路
ZigBolt Zig 20納秒SPSC、零複製編解碼器、無GC 年輕專案(v0.2.1)
Chronicle Queue Java 持久化,每天數十億條訊息 JVM GC,重量級
ZeroMQ C 簡單API,多種傳輸方式 無可靠性層,無叢集支援
DPDK C 極致效能 複雜,需要硬體支援

我們Marketmaker.cc開發了ZigBolt——基於Zig語言的開源Aeron替代方案。沒有JVM,沒有GC,具有comptime編解碼器和20納秒SPSC延遲。詳情請參閱我們的ZigBolt文章


結論

Aeron是一個傑出的工程專案,為低延遲訊息傳遞樹立了標準。其架構設計(三重緩衝日誌、基於NAK的可靠性、Raft叢集)已成為行業典範。

但世界在不斷前進。Zig和Rust等語言可以在沒有JVM開銷的情況下實現相同(甚至更好)的結果。通過io_uring和DPDK的核心旁路開啟了純UDP無法企及的可能性。而comptime程式碼生成使得獨立的XML schema和Java程式碼生成器成為歷史遺產。

Aeron將在數十家公司的生產環境中繼續執行多年。但對於新專案,值得考慮替代方案——包括ZigBolt


參考連結:


引用

@article{soloviov2026aeron,
  author = {Soloviov, Eugen},
  title = {Aeron: 驱动半个HFT行业的消息传递系统揭秘},
  year = {2026},
  url = {https://marketmaker.cc/zh/blog/post/aeron-messaging-overview},
  description = {Aeron架构解析——Transport、Archive、Cluster、Sequencer。优势与劣势。}
}
免責宣告:本文提供的資訊僅用於教育和參考目的,不構成財務、投資或交易建議。加密貨幣交易涉及重大損失風險。

Authors

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

緊跟市場步伐

訂閱我們的時事通訊,獲取獨家 AI 交易見解、市場分析和平台更新。

我們尊重您的隱私。您可以隨時退訂。