Выбор ответа Middle Качество данных и контракты спрашивают часто обновлено
Совместимость схемы события
Вопрос
В схеме события Kafka нужно переименовать поле amount в amount_rub. Как сделать это без поломки потребителей?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Добавить новое поле, писать оба, перевести потребителей, затем удалить старое (или новая версия). Переименование это несовместимое изменение: старые потребители не найдут поле.
Варианты ответа
- Переименовать в одном релизе: реестр схем сам сопоставит старое имя с новым у потребителей
- Переименовать и попросить потребителей перезапустить консьюмеры, чтобы они подтянули новую схему
- Добавить новое поле, писать оба, перевести потребителей, затем удалить старое (или новая версия)правильный ответ
- Удалить поле и добавить новое в одном изменении схемы с режимом совместимости BACKWARD
Разбор
Переименование это несовместимое изменение: старые потребители не найдут поле. Плавная миграция через период с двумя полями или новая версия события сохраняет совместимость. Переименование одним релизом или удаление с добавлением ломает всех читающих. Перезапуск консьюмеров не поможет, у них в коде старое имя.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.