Skip to content

Design Overview

Martin Thompson edited this page Jun 30, 2017 · 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

0 - Aeron uses an underlying unreliable media protocol, which could be anything, eg: UDP or Infiniband.

1 - 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.

2 - Communication between the Client API/Stack and the Media Driver 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.

3 - 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.

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