Увеличение производительности производителя кафки - PullRequest
0 голосов
/ 21 января 2019

Я нашел эту статью , когда работал над подсчетом производительности моего производителя. В ней Джей Крепс говорит, что для одного продюсера потока и 3x синхронной репликации разделов он получает 421 823 записей в секунду. Его записи по 100 байт каждый, у него 6 разделов и 6 брокеров. Он также использует посылку на основе обратного вызова, что означает, что он может гарантировать порядок сообщений.

Я использую Kafka в качестве службы с одним брокером, 6 разделов, 1x репликация. Я отправляю записи примерно одинакового размера и получаю 23 записи в секунду. В отличие от Джея, я использую схему реестра для сериализации avro. Я пробовал все типы отправки, предоставляемые API Kafka Producer:

  • звонит .get на будущее
  • отправка сообщений с обратным вызовом
  • отправка сообщений без обратного вызова

Я даже близко не приблизился к номеру, указанному выше. Я хочу гарантировать порядок сообщений, поэтому я хотел бы, чтобы хотя бы ответный звонок передавался вместе с записью.

Я знаю, что преследовать его тест будет сложно, и это не моя цель. Я просто чувствую, что есть что-то фундаментальное, чего мне не хватает Могу ли я попросить несколько предложений? Я предоставлю столько дополнительного контекста, сколько необходимо.

1 Ответ

0 голосов
/ 23 января 2019

Итак, после некоторых исследований выяснилось, что у меня был блокирующий вызов в реестре схемы, который я делал для каждой партии, которая была отправлена ​​в Kafka. После того, как это было обработано, пропускная способность достигла 8500 записей в секунду.

Если вы используете реестр схемы и не хотите делать постоянные обращения к нему

  • убедитесь, что для auto.register.schemas установлено значение false
  • если вы используете GenericRecord, убедитесь, что ваши Schema объекты сгенерированы одинаково
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...