Выбор ответа Middle Качество данных и контракты спрашивают часто обновлено

Совместимость схемы события

Вопрос

В схеме события Kafka нужно переименовать поле amount в amount_rub. Как сделать это без поломки потребителей?

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

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

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

Коротко

Правильный ответ: Добавить новое поле, писать оба, перевести потребителей, затем удалить старое (или новая версия). Переименование это несовместимое изменение: старые потребители не найдут поле.

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

  1. Переименовать в одном релизе: реестр схем сам сопоставит старое имя с новым у потребителей
  2. Переименовать и попросить потребителей перезапустить консьюмеры, чтобы они подтянули новую схему
  3. Добавить новое поле, писать оба, перевести потребителей, затем удалить старое (или новая версия)правильный ответ
  4. Удалить поле и добавить новое в одном изменении схемы с режимом совместимости BACKWARD

Разбор

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

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

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