Почему системы очередей быстрые?
Система очередей, например Apache Kafka, доставляет сообщения с низкой задержкой благодаря последовательному вводу-выводу и принципу нулевого копирования. Эти техники свойственны и для других платформ потокового обмена данными типа RabbitMQ, Tarantool. На картинке данные передаются между Producer'ом и Consumer'ом в несколько этапов:
1.1 - 1.3 Продюсер записывает данные в Kafka топик сначала в RAM, потом на SSD
Если консюмер читает данные с копированием
2.1 Данные загружаются с диска в кэш ОС
2.2 - 2.3 Данные копируются из кэша ОС в буфер Kafka
2.4 Данные копируются из буфера на сетевую карту
2.5 Сетевая карта отправляет данные консюмеру
Если Консюмер читает данные с нулевым копированием
3.1 Данные загружаются с диска в кэш ОС
3.2 Кэш ОС напрямую копирует данные на сетевую карту с помощью
sendfile()3.3 Сетевая карта отправляет данные консюмеру
При втором подходе время чтения-записи сокращается примерно на половину.
#base
