Выбор ответа Junior Kafka спрашивают часто обновлено
Зачем сообщению ключ
Вопрос
Изменения статусов заказов отправляются в топик из 12 партиций. Как гарантировать, что изменения одного заказа будут прочитаны в правильном порядке?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Отправлять с ключом orderid: все события заказа попадут в одну партицию. Партиция выбирается по хешу ключа, поэтому один ключ всегда в одной партиции (пока число партиций не меняется), а внутри партиции порядок гарантирован.
Варианты ответа
- Отправлять с ключом
order_id: все события заказа попадут в одну партициюправильный ответ - Отправлять без ключа: Kafka сама упорядочит события по времени отправки
- Создавать отдельный топик из одной партиции для каждого заказа
- Сортировать сообщения на консьюмере по времени получения перед обработкой
Разбор
Партиция выбирается по хешу ключа, поэтому один ключ всегда в одной партиции (пока число партиций не меняется), а внутри партиции порядок гарантирован. Без ключа события раскидываются по партициям. Топик на заказ немасштабируем. Сортировка по времени получения не восстановит порядок отправки и требует буферизации.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.