Aeron是一个开源高性能消息传输机制(单向),支持高效可靠的UDP单播、UDP多播和IPC消息传输。
1. 架构
Aeron 主要由三部分组成:Media Driver、Publications 和 Subscriptions
1.1 Media Driver
Media Driver 负责管理 publications 和 subscriptions 所使用的用来发送和接收数据的 Media(UDP或IPC)。
各组件作用:
-
Driver Conductor Driver Conductor 负责接收来自 Aeron 客户端的 publishers 和 subscribers 的指令,并编排 Media Driver 的操作。另外还负责域名解析任务
-
Receiver Receiver 管理所有从 media 中接收到的数据,数据传输轮询器接收 UDP 数据,并使用 Java NIO 与操作系统的网络堆栈进行交互。除了从 media 接收数据外,接收器还管理接收到的 images,根据需要发送 NAK 和状态消息。
-
Sender Sender 通过 media 管理数据的传输
-
Client Conductor Client Conductor 负责与 Driver Conductor 进行沟通
Media Driver 会在本地管理一个目录,在生产环境中这个目录应该放到 /dev/shm(共享内存)上。
Media Driver 线程模型:
-
DEDICATED(默认模式) 在专用线程模式中(ThreadingMode.DEDICATED)Media Driver 将使用3个线程,每个线程都有特定