In praise of LMAX.
Concurrency is a necessary evil beast in any application. Multicore architecture has ncessiated the use of programming for concurrency if there is a need for enhancing application performance.
Recently, on the martin fowler's blog, I came across an interesting architecture, LMAX which was used by in a financial application to run over 6 Million transaction simultaneously, over a single thread of execution only!
Even if this architecture is limited to finance domain, it makes up for an excellent solution for dealing with concurrency. With its single point of handling of the business logic processing there might seem a potential bottleneck, but is negated via alternative mechanisms to recreate this controller - Event Sourcing.
The concept of in-memory solution for performance is not new, but having concurrency without the taxing side effects of transactions is indeed interesting.
I'll be doing some more study through it during this weekend, and update here if necessary.
- Found reference from Martin Fowler's blog : http://martinfowler.com/articles/lmax.html
- One implementation of LMAX (Disruptor): http://code.google.com/p/disruptor/
- Disruptor's technical paper that gives an excellent overview : http://disruptor.googlecode.com/files/Disruptor-1.0.pdf