-
Notifications
You must be signed in to change notification settings - Fork 890
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 uses an underlying unreliable media transport, which could be anything, eg: UDP or Infiniband.
-
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.
-
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.
-
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.
-
Multiple client threads can be reading from or write to the channel at given moment in time.