After the last post we all understand ring buffers and how awesome they are. Unfortunately for you, I have not said anything about how to actually populate them or read from them when you're using the Disruptor.
Recently we open sourced the LMAX Disruptor, the key to what makes our exchange so fast. Why did we open source it? Well, we've realised that conventional wisdom around high performance programming is... a bit wrong. We've come up with a better, faster way to share data between threads, and it would be selfish not to share it with the world. Plus it makes us look dead clever.
On the site you can download a technical article explaining what the Disruptor is and why it's so clever and fast. I even get a writing credit on it, which is gratifying when all I really did is insert commas and re-phrase sentences I didn't understand.
However, I find the whole thing a bit much to digest all at once, so I'm going to explain it in smaller pieces, as suits my NADD audience.
First up - the ring buffer. Initially I was under the impression the Disruptor was just the ring buffer. But I've come to realise that while this data structure is at the heart of the pattern, the clever bit about the Disruptor is controlling access to it.
Recently we open sourced the LMAX Disruptor, the key to what makes our exchange so fast. Why did we open source it? Well, we’ve realised that conventional wisdom around high performance programming is… a bit wrong. We’ve come up with a better, faster way to share data between threads, and it would be selfish not to share it with the world. Plus it makes us look dead clever.
On the site you can download a technical article explaining what the Disruptor is and why it’s so clever and fast.
The panel consisted of two messaging providers, one hardware (Solace Systems) and one software (29West/Informatica), and two “users”, Citihub and LMAX. Obviously both providers were arguing that theirs was the best solution. But what I found interesting is that I came away with the impression that everyone was really on the same side - everyone wants to use or to provide the best system, but there are different approaches. Which one you adopt is likely to be influenced by how your team work and the hardware you have (or can obtain).
The main point I took away, however, is that although speed is very important in ultra high performance trading (of course), control is becoming almost more important: specifically configuration and monitoring. Because it’s all well and good having a super-fast messaging infrastructure, but if you can’t get it to do what you want, or you can’t see what it’s doing, where the bottlenecks are, or even if you’re using it properly, it’s a massive waste of cash.
Throughout later presentations and panels, and some chat afterwards, I picked up the configuration/monitoring theme a few more times. Fast is one thing, high availability is another, which should not be ignored simply for speed of execution.
Something else I heard a lot is how Java is totally unsuitable for high performance systems. Well… we’d like to disprove that. I guess we need need to get out there and start talking about why this is a myth.
I was impressed with the event actually. It was such a contrast to TradeTech, which was all vendors and boys in suits who couldn’t wait to get to the pub. This summit hit our sweet spot - technology and trading. The presentations were aimed at people with both deep technical knowledge and a clear understanding of the business domain. It was somewhere we could talk quite comfortably about what we do, with a good mix of attendees who were seriously interested in the field.
Something I particularly liked was how the vendor pitches were kept to lightning talks - five minutes per pitch. This was an excellent idea. You got enough of a flavour to decide to find out more if it looked like something useful, but not so much you were bored or felt sold to.
The event was also a really good size, it seemed to encourage networking and chatting. People mingled more easily than at any of the other events I’ve been to recently, and not necessarily because they already knew each other. Mike and I were approached by a lot of people who were either curious to find out what LMAX did, or had already heard of us through some other channel. I even gave out a bunch of business cards, which finally justified the long, hard battle I had getting them (“Developers don’t need business cards” apparently - but what if I meet a cute guy? How am I supposed to give him my number?).
The only disappointment was not delivering on promises. The agenda distinctly mentions cocktails. But instead there was simply wine and beer. I forgave them because the wine was decent and there was plenty of it.
In conclusion, I was impressed and definitely want to go to more of these events. We’d love to get more involved at presenting at some too.