Несколько хороших ответов вчера было, но я хочу поделиться полным ответом, который дал эксперт на собеседовании:
Изменения делятся на:
Минорные — добавили поле с default или сделали его optional. Старые консьюмеры просто игнорируют новое поле. Всё работает.
Мажорные — удалили поле, изменили тип или сделали обязательным то, что было опциональным. Консьюмеры падают. Это ломающее изменение
В Kafka схема это часть контракта. Вместо того чтобы хранить схему в каждом сервисе, используют Schema Registry.
Это отдельный сервис, который:
- хранит все версии схем;
- проверяет совместимость новых версий со старыми;
- не даёт зарегистрировать схему, если она нарушает выбранную стратегию
Настройка уровня топика определяет, что можно менять:
Backward — новая схема читает старые данные. Продюсер может обновиться первым, консьюмер — позже
Forward — старая схема читает новые данные. Консьюмер может обновиться первым
Full — и то и другое, но требования строже
None — можно ломать всё что угодно (но на практике так никто не делает)
Если вы пытаетесь зарегистрировать несовместимую схему — Schema Registry вернёт ошибку
Если возникли сомнения и проблемы при ответе на вопрос, то на курсе «Архитектура. База» мы работает с kafka и проектируем интеграционные взаимодействия с этим компонентом. Старт уже 7 сентября!

