Рет қаралды 50,386
Does TCP not meet your required latency consistently? Is UDP not reliable enough? Do you need to multicast? What about flow control, congestion control, and a means to avoid head of line blocking that can be integrated with the application? Or perhaps you’re just fascinated by how to design for the cutting edge of performance? Maybe you have tried higher level messaging products and found they are way too complicated because of the feature bloat driven by product marketing cycles.
Aeron takes it back-to-basics with a pure focus on performance and reliability. We have built it from the ground up with mechanical sympathy in its DNA. The data structures are lock-free, wait-free, copy-free, and even persistent for our functional friends. Interaction with the media is layered so you can swap between UDP, Inifiniband, or Shared Memory as required.
Aeron is open-source with implementations in Java and C++ that interoperate. There are no unnecessary features to bloat the implementation, yet the design is open so that it can be composed into higher level abstractions.
This talk will focus on the design of Aeron and what we learned trying to achieve very consistent performance. We will explore the challenges of dealing with reliable message delivery over UDP and the data structures necessary to support transmission and retransmission in in a lock-free and wait-free manner.
by Martin Thompson (@mjpt777)
Martin is a high-performance and low-latency specialist, with experience gained over two decades working on the bleeding edge of large transactional and big-data systems. He believes in Mechanical Sympathy, i.e. applying an understanding of the hardware to the creation of software as being fundamental to delivering elegant high-performance solutions. The Disruptor framework is just one example of what his mechanical sympathy has created.
Martin was the co-founder and CTO of LMAX. He blogs at mechanical-sympathy.blogspot.com, and can be found giving training courses on performance and concurrency when he is not cutting code to make systems better.