Kafka - Скорость потребителя при сериализаторе JSON - PullRequest
0 голосов
/ 21 июня 2020

Мы создаем среду микросервисов, которые помещают сообщения в очередь в формате JSON. При использовании этого сообщения мы используем сериализатор JSON для преобразования его в объект в C#, но из-за этого каждое сообщение, которое мы обрабатываем, включая бизнес-логи c, занимает 200-300 мс для обработки.

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

1 Ответ

0 голосов
/ 21 июня 2020

Кажется, этот вопрос касается времени, затраченного на десериализацию JSON, это не имеет большого отношения к потребителю kafka.

Если вы тратите много времени на десериализацию потребителя kafka thread, вам необходимо точно настроить max.poll.interval.ms и session.timeout.ms. Вы также можете контролировать количество сообщений, возвращаемых max.poll.records. Вам необходимо точно настроить параметры.

Если вы чувствуете, что у вас много времени для десериализации, вам следует отделить бизнес-обработку от потребления, поместив потребляемые JSON в другую очередь в памяти и обработав их параллельно в отдельных потоках (остерегайтесь проблемы обратного давления), и вы можете отключить автосинхронизацию потребителя c.

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

...