Выбор ответа Junior Kafka спрашивают часто обновлено

Зачем сообщению ключ

Вопрос

Изменения статусов заказов отправляются в топик из 12 партиций. Как гарантировать, что изменения одного заказа будут прочитаны в правильном порядке?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Отправлять с ключом orderid: все события заказа попадут в одну партицию. Партиция выбирается по хешу ключа, поэтому один ключ всегда в одной партиции (пока число партиций не меняется), а внутри партиции порядок гарантирован.

Варианты ответа

  1. Отправлять с ключом order_id: все события заказа попадут в одну партициюправильный ответ
  2. Отправлять без ключа: Kafka сама упорядочит события по времени отправки
  3. Создавать отдельный топик из одной партиции для каждого заказа
  4. Сортировать сообщения на консьюмере по времени получения перед обработкой

Разбор

Партиция выбирается по хешу ключа, поэтому один ключ всегда в одной партиции (пока число партиций не меняется), а внутри партиции порядок гарантирован. Без ключа события раскидываются по партициям. Топик на заказ немасштабируем. Сортировка по времени получения не восстановит порядок отправки и требует буферизации.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.