Overview
Aeron has three related components that build on each other.
- Aeron Transport (commonly known as just Aeron), which can be used standalone as a message transport
- Aeron Archive, which adds message persistence to Aeron Transport
- Aeron Cluster, which adds a clustering solution on top of Aeron Archive and Aeron Transport
Each component has its own set of files.
Aeron Transport
Aeron is a messaging system, set apart from other messaging systems by its primary goal:
A design goal for Aeron is to be the highest throughput with the lowest and most predictable latency of any messaging system.
UDP is used when the processes are on different machines. IPC is used when they're on the same machine.
By default, Aeron Transport creates files below the /dev/shm
directory on Linux systems. /dev/shm
is
Shared Memory - a section of memory shared between different processes, not files on disk.
As such, it doesn't survive a machine restart, so these files are effectively transient.
Note the "Transport" part of the name "Aeron Transport" is a relatively new addition (as per aeron.io). Most people know of it as just Aeron. I think the new part is a welcome addition, but it isn't mentioned in the codebase or in older articles on Aeron, so bear that in mind.
Aeron Archive
Aeron Archive builds on top of Aeron Transport - it allows the streams of messages sent through Aeron to be captured and recorded to disk, so they can be replayed later. It adds a durable message store. Aeron Transport does not store messages on disk and requires the recipient of a message to be present when the sender sends. Aeron Archive can act as that recipient, so downstream services don't have to be present when messages are sent to them.
Aeron Cluster
Aeron Cluster builds on top of both Aeron Transport and Aeron Archive. Some systems can be implemented as a state machine, where their state only changes as a result of processing a sequence of inputs, e.g. a financial exchange. Aeron Cluster allows such state machines to be run in a fault-tolerant fashion with multiple redundant copies running, kept in sync using a Raft consensus algorithm.
Aeron Cluster uses Aeron Archive to store the sequence of inputs, so if a cluster node is restarted, it can read the archive and process the stored messages to recreate its internal state.