Aeron 源码分析

Aeron 是一个高效率、低延迟的可靠消息传输系统,由 Martin Thompson 和 Todd Montgomery 于 2014 年开源。它基于 UDP 单播/多播和共享内存 IPC,在应用层实现可靠性保证。设计目标是成为最低延迟、最高吞吐的可靠消息传输系统。

本项目从源码出发,逐模块拆解 Aeron 的核心机制。

文档

# 文档 内容
1 架构概述 Aeron 是什么、设计原则、分层架构、一次消息的完整生命周期
2 代码结构分析 顶层目录、Gradle 构建系统、Java/C/C++ 代码组织
3 MediaDriver 实现分析 驱动核心三线程模型、Agent 事件循环、Proxy 模式
4 LogBuffer 与协议 三区段 Term Buffer、flyweight 协议帧、帧头布局
5 Client API 与 IPC ClientConductor、Publication/Subscription、共享内存 IPC
6 流控与拥塞控制 Min/Max/Multicast 流控、拥塞控制窗口、NAK 重传
7 Archive 实现分析 Recording/Replay 持久化、Catalog 索引、Segment 文件存储
8 Cluster 实现分析 Raft 共识、Election 选举状态机(18 状态)、Snapshot
9 C 与 C++ 实现 C Client/Driver 独立实现、与 Java 版本的对应关系
10 性能优化技巧 Lock-Free CAS、堆外内存、VarHandle、缓存行对齐、sendmmsg、热路径无分配

快速开始

git clone --recurse-submodules https://github.com/chen3feng/aeron-analysis.git
cd aeron-analysis

源码通过 git submodule 引入,固定在文档生成时的 commit。在 VS Code 中打开,Cmd/Ctrl + 点击 代码引用即可跳转到对应行。

特点

  • 精确行号:每个代码引用形如 [file.java:123](aeron/path/to/file.java#L123),可点击直接跳转
  • 可验证:所有行号基于 submodule 中的固定 commit,不会溯源失效
  • 架构图:ASCII 流程图和调用链,无需外部工具即可阅读

源码

源码分析基于 Aeron 项目,版本锁定在 commit 27fb77ed971065cfbe424519cb5b9ad672ece942

License

MIT


本站访问量

This site uses Just the Docs, a documentation theme for Jekyll.