Встречается на собеседованиях • сегодня

Как обеспечить порядок сообщений при записи без ключа в Kafka

Для обеспечения порядка сообщений в Kafka без ключа можно использовать следующие подходы:

  1. Использование одного партиции: Если все сообщения отправляются в одну партицию, Kafka гарантирует порядок в пределах этой партиции. Однако это ограничивает параллельность обработки.
python
from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers='localhost:9092')
topic = 'ordered_topic'

Все сообщения в одну партицию (partition=0)

producer.send(topic, value=b'message1', partition=0)
producer.send(topic, value=b'message2', partition=0)
producer.flush()

text

2. **Глобальная последовательность**: Использовать внешний сервис (например, Redis или БД) для генерации последовательных ID и использовать их как ключи.

3. **Ограничение producer'ов**: Разрешить только одному producer'у записывать в топик.

Важно: без ключа Kafka распределяет сообщения по партициям раунд-робин, что нарушает порядок. Поэтому для гарантированного порядка либо используйте ключи, либо одну партицию.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы