Skip to content

Design Overview

Martin Thompson edited this page Aug 19, 2018 · 12 revisions

Design Overview

Currently out of date and needs rewritten

So how does Aeron implement its Protocol? This diagram shows a the communication for a channel with a single producer and a single consumer. Channels support multicast through multiple consumers.

Aeron Architecture

  1. Aeron uses an underlying unreliable media transport, which could be anything, eg: UDP or Infiniband.

  2. Aeron has a Media Driver which implements support for these protocols. It can operate within the same process as the client code or outside. Media drivers can be implemented using Java, C or even FPGAs and sit within either user or kernel space.

  3. Communication between the Client API/Stack and the Media Driver for control is implemented as a messaging protocol on a series of ring buffers. Each channel requires two ring buffers, one for sending messages and one for receiving messages. This also includes a control channel for administrative/internal communication. These use memory mapped file based shared memory.

  4. The Client API/Stack sits in process. After configuration, the client stack is abstract of the Media Driver. This presents an API to the client code to send or receive messages.

  5. Multiple client threads can be reading from or write to the channel at given moment in time.