explaingit

aeron-io/aeron

8,632JavaAudience · developerComplexity · 5/5LicenseSetup · hard

TLDR

Aeron is a high-performance messaging library for sending data between programs with ultra-low latency. It supports UDP networking and in-process messaging in Java, C, and C++, with optional fault-tolerant clustering and stream recording.

Mindmap

mindmap
  root((repo))
    Transport modes
      UDP unicast
      UDP multicast
      IPC same machine
    Client languages
      Java
      C and C++
      .NET
    Optional modules
      Archive record and replay
      Cluster fault tolerance
    Use cases
      Financial trading
      Real-time data streams
      Distributed systems
    Performance
      Ultra-low latency
      High throughput
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Send millions of messages per second between financial trading systems with sub-microsecond latency over UDP or in-process channels

USE CASE 2

Record a live message stream to disk and replay it later at full speed for debugging or historical analysis using the Archive module

USE CASE 3

Build a fault-tolerant replicated service that keeps running when machines fail, using the Cluster module with Raft consensus

Tech stack

JavaCC++.NETUDP

Getting it running

Difficulty · hard Time to first run · 1h+

Requires Java or C/C++ build toolchain, Cluster and Archive modes need multiple machines and careful network configuration.

Licensed under Apache 2.0, free to use and distribute for any purpose including commercial, with attribution required.

In plain English

Aeron is a messaging library designed to move data between programs as fast as possible with very consistent timing. The central idea is that many systems, particularly in financial trading or real-time data processing, need to send and receive streams of messages where both throughput (how many messages per second) and latency (how long each message takes to arrive) matter enormously. Aeron is built specifically to push those numbers to their limits. It supports three ways of sending messages. UDP unicast sends data from one machine to one other machine over a network. UDP multicast sends data from one machine to many receivers at once over a network. IPC (inter-process communication) moves messages between programs running on the same machine, bypassing the network entirely for maximum speed. Clients are available in Java, C, and C++, and a separate .NET client also exists. Programs using any of these clients can exchange messages with each other. Beyond basic messaging, Aeron includes two major optional modules. The Archive module can record a live message stream to persistent storage and replay it later, either in real time or at a different speed. The Cluster module adds fault tolerance: it replicates a service across multiple machines using a well-known algorithm called Raft, so the service keeps running even if some machines fail. Aeron is owned by Adaptive Financial Consulting, a firm that offers training, consulting, and premium enhancements on top of the open-source version. These include features like kernel bypass networking via DPDK (a technique that bypasses the operating system for even lower latency) and fast encryption. The README points users to a detailed wiki for programming guides, configuration options, and architecture documentation rather than including all of that in the README itself. The project is open source under the Apache 2.0 license. The original authors, Martin Thompson and Todd Montgomery, created Aeron before the team joined Adaptive in 2022.

Copy-paste prompts

Prompt 1
Show me how to set up an Aeron publisher and subscriber in Java to send 1 million messages per second over UDP unicast between two machines
Prompt 2
How do I use Aeron Archive to record a live message stream to disk and replay specific time ranges from that recording in Java?
Prompt 3
Set up an Aeron Cluster with 3 nodes using Raft so the cluster keeps processing messages without interruption if one node goes down
Prompt 4
Write a Java example that uses Aeron IPC to pass order book updates between two threads in the same process as fast as possible
Open on GitHub → Explain another repo

← aeron-io on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.