the blog for developers

Talk: LMAX Architecture for High Performance SEDA in Java

Last week I gave a talk at the JAX 2012 conference on Java. The topic of the talk was the LMAX architecture using disruptors. The team at the LMAX exchange found out that their problems were not adequately solved by RDBMS systems or SEDA architectures based on queues. The same went for their playing with Actor concurrency. The main trouble comes from not hardware aligned execution and that a lot of CPU power is spent on managing locks and concurrency with queues.

SEDA architectures are a special kind of concurrency problem. A work unit (web request, trade, …) moves through a system of stages and workers do their work on each stage. Reducing the problem space of concurrency, the idea was to do away with the queues and introduce a new data structure: the ring buffer.

I was first introduced to the LMAX architecture in an excellent blog post from Martin Fowler. My talk was heavily influenced by that blog post, but I’ve added a different perspective in it and make it smoother to digest.

Beside the good technical paper, there are blog posts focusing on Cache line padding and lock free publishing to the ring gave me some insights.

The source code for my talk was written by Lars Grindt and can be found on github.

I’m glad my employer brands4friends gives me the opportunity to speak at conferences.

About the author

stephan Stephan Schmidt has been working with internet technologies for the last 20 years. He was head of development, consultant and CTO and is a speaker, author and blog writer. He specializes in organizing and optimizing software development helping companies by increasing productivity with lean software development and agile methodologies. Want to know more? All views are only his own. You can find him on Google +

Discuss on Hacker News Vote on HN