Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.
Числа
Что измеряют числа бенчмарков ruststream-rdkafka и каких выводов они сделать не позволяют.
Сравнение с сырым клиентом
Три цикла одной строки сравнимы между собой: они шли в одном процессе, чередуясь, на одном брокере. Со строкой, которую публикует другой крейт брокера, строка не сравнима: транспорты выполняют на сообщение разную работу.
Брокер работает на той же машине, через loopback. Без сетевой задержки та же стоимость сообщения составляет большую долю времени, чем с кластером за сетью. Читайте процент как верхнюю границу того, что платит развёрнутый сервис.
Строка «упирается в брокер» - та, где сырой клиент большую часть прогона ждал сокета. Работа крейта и рантайма тогда укладывается в это ожидание, и разница выходит около нуля. Это нижняя граница стоимости, а не её измерение.
Стоимость кода
Счёт инструкций включает код этого крейта, рантайм над ним и вызовы librdkafka на потоке сервиса. Он немного меняется от прогона к прогону, потому что брокер настоящий. Тот же счёт стоит больше времени там, где код промахивается мимо кэша, поэтому счёт инструкций - не время.
Каждое число - установившийся режим, разность между прогоном на 1000 доставок и прогоном на 2000. Запуск сервиса, вступление в группу и первые выделения памяти за ними - холодный старт, который оплачивается один раз.
Чего они не значат
Строка - это один консьюмер, который читает одну тему из одной партиции, небольшое тело и кластер из одного узла. Она измеряет, сколько стоит доставка внутри этого крейта, а не сколько способна пропустить Kafka.
Тема из нескольких партиций, пул партиций воркеров и транзакционный конвейер отвечают каждый на свой вопрос, и сравнение не измеряет ни один из них. График кода считает обработчик пакетов и ответ на том же стенде.
Числа - снимок одной машины в один день, а рядом с ними записана сборка. Их перемеряют вручную, на машине, отданной только прогону: различия, которые они показывают, меньше шума общей машины.