Designing for low latency is hard. We need principles to help us navigate the performance landscape. I'll present here a ranked set of guidelines to lead you through the maze of trade-offs that you will meet in designing a low latency application:
1. No Garbage – none, really?
2. Natural Batching and why you need it.
3. Threads are evil.
4. No exceptions!
5. The Single Writer Principle.
6. Sharing isn’t caring.
7. Good programmers copy, great programmers … don't.
We'll look at the implementation of these principles in the Aeron messaging system and the measured benefit of using them.
Applying these principles to the design of any application – low latency or otherwise – will result in a less complex, more efficient, more maintainable system.
Dmytro Vyazelenko
Safepoint Ost GmbH
Independent consultant working on Aeron ( and helping organizations solve their Java performance issues. Public speaker and disorganizer of the JCrete and JAlba unconferences.