Какой формат сообщений использовать в Kafka для высоконагруженного сервиса: JSON или бинарный?
Для высоконагруженного сервиса в Kafka предпочтительнее использовать бинарный формат сообщений, например, Protocol Buffers, Avro или Thrift.
Читать ответПодготовка к интервью
715 вопросов по Kafka с технических собеседований
Что проверяют на интервью
На странице собраны вопросы по Kafka — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: kafka, backend, api.
Каталог
Для высоконагруженного сервиса в Kafka предпочтительнее использовать бинарный формат сообщений, например, Protocol Buffers, Avro или Thrift.
Читать ответKafka изначально не поддерживает работу по протоколу gRPC, так как Kafka — это распределённая система обмена сообщениями, использующая собственный протокол поверх TCP для передачи данных между брокерами и клиентами.
Читать ответОсновные шаблоны взаимодействия Kafka с микросервисами:
Читать ответОсобенности Apache Kafka:
Читать ответВ проекте использовались оба брокера — Kafka и RabbitMQ — по разным причинам:
Читать ответKafka не гарантирует абсолютную доставку сообщений (exactly-once delivery) из коробки, но обеспечивает как минимум один раз (at-least-once) доставку.
Читать ответsegmentio/kafka-go — это одна библиотека на Go для работы с Apache Kafka, разработанная компанией Segment. Она предоставляет удобный и эффективный API для продюсеров и консьюмеров Kafka.
Читать ответОптимистичная блокировка при обработке сообщений из Kafka и обновлении базы данных обычно выглядит так:
Читать ответВ Kafka сообщения распределяются по партициям топика. При наличии 6 партиций и 6 консюмеров в одной группе каждый консюмер обычно получает ровно одну партицию, то есть нагрузка распределяется равномерно.
Читать ответКоличество партиций в Kafka топике зависит от нескольких факторов:
Читать ответВажно понимать, что количество сообщений, появляющихся в базе, зависит от того, сколько сообщений было отправлено в Kafka и как настроена обработка.
Читать ответДля реализации интерфейса Processor в Go нужно хранить состояние по каждому Url, чтобы на каждый входящий документ обновлять агрегированное состояние и возвращать скорректированное сообщение.
Читать ответ