Тёмный

"Aeron: Open-source high-performance messaging" by Martin Thompson 

Strange Loop Conference
Подписаться 82 тыс.
Просмотров 50 тыс.
50% 1

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.

Наука

Опубликовано:

 

10 ноя 2014

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 18   
@ericdefazio4197
@ericdefazio4197 9 лет назад
Eagerly anticipating more information on Aeron from Mr. Mechanical Sympathy et. al. "I'm sick of seeing frameworks, our world has become obsessed with it" --Amen brother, Amen.
@NivagSwerdna
@NivagSwerdna 9 лет назад
Nice talk. Takes me back a few decades! On the subject of NAK in a multicast environment and using exponential delay to avoid storms... When working on a stock exchange project many moons ago we layed our own protocol on top of UDP and had the additional requirement that all receivers (1000 trader workstations) had to receive the data at the same time, in this case the network was designed with no active components (to avoid queuing at routers) and all worked fine with similar counters/sliding window as you described however during packet loss (e.g. RF from passing taxi) the naive implementation causes all consumers to NAK and causes a storm and subsequent chaos; our eventual solution was to have a hierarchy of 'watch dogs' where certain machines would be fast responders, other layers of the hierarchy would react slower... a fast reaction by a fast watchdog would cause a retransmission that subsequently appeased the other machines. By creating a hierarchy that reflected the failure modes in the network the storms were avoided.... and as you say very nice to see a room of 1000 machines operating nicely. I'll check out the project... sounds fun.
@AesaKamar
@AesaKamar 2 года назад
Exceptional! Fairly dense material, but thanks for showcasing some of the design considerations of the library. You do a great job of not losing the forest from the trees while still providing great jumping off points for people to dive into the technical rigor. Glad to see some of what's powering some pieces of the Akka library underlyingly.
@kesavanandm
@kesavanandm 9 лет назад
Frameworks v/s Libraries. Thumbs up! Underlining Simplicity and really putting it into practice here. All of this look simple yet effective. Clear cut separation of duties way before in the design phase. A fantastic point on page faults. Not having to mmap an extremely large file is a important problem to solve (without latency jitters). Eager to look at this. Designing keeping hardware in mind from the very start. Peeking into the C++ libraries now! Thank you.
@steveoc64
@steveoc64 9 лет назад
Timely solution - keen to get involved and learn more. Thinking of integrating this with golang channels as the API, should be fun to code in, and very performant.
@martinthompson9443
@martinthompson9443 9 лет назад
steveoc64 By using the BufferClaim strategy and a codec like SBE then golang channels could be very efficient. Especially as I'm planning on adding IPC support in the next month or so.
@eoinmccarthy8906
@eoinmccarthy8906 9 лет назад
Will do. Thanks for the link.
@dhaniwirawan5962
@dhaniwirawan5962 9 лет назад
its always nice to hear presentation from Martin
@eoinmccarthy8906
@eoinmccarthy8906 9 лет назад
Interesting stuff. Thanks for putting it up. Slightly naive question perhaps. At 26:37 - given that messages can be different sizes, how do you know how far along to move the high water mark?
@martinthompson9443
@martinthompson9443 9 лет назад
The message header contains the starting offset in the term plus the length. This allows for exact placement. The full protocol description can be found in the Wiki. github.com/real-logic/Aeron/wiki/Protocol-Specification
@interpss
@interpss 9 лет назад
have you compared performance efficiency of the Java implementation and C++ implementation?
@notaspectator
@notaspectator 8 лет назад
Curious what sort of benchmarks is this platform reaching ? its at version 0.9 now
@rahulagarwal2922
@rahulagarwal2922 6 лет назад
Is there any way to use shared memory/UDS instead of UDP for IPC?
@kekkler
@kekkler 10 месяцев назад
Yes on aeron you can use shared mem for ipc
@alexyleigh
@alexyleigh 9 лет назад
At 29:00 you mention an algorithm inspired by gene sequencing. I couldn't quite make out what the name of that algorithm is. Could you post it here?
@neoncyber2001
@neoncyber2001 8 лет назад
+Alex Leigh Diff
@ghazaus
@ghazaus 8 лет назад
Aeron is seriously good. We use it as part of Onyx and it really delivers on the claims.
Далее
Designing for Performance by Martin Thompson
56:56
Просмотров 16 тыс.
ФОКУС С БАНАНОМ🍌
00:32
Просмотров 283 тыс.
"How NOT to Measure Latency" by Gil Tene
42:59
Просмотров 103 тыс.
"Why Programming Languages Matter" by Andrew Black
56:39
Diving into Aeron Messaging
48:25
Просмотров 1,5 тыс.
Это Xiaomi Su7 Max 🤯 #xiaomi #su7max
1:01
Просмотров 2 млн