Вступить в клуб →
сложнаявопросМикросервисы и обмен событиями

Номер удалённого поля в protobuf отдали новому полю, и старые клиенты сошли с ума

Было:

message Order {
  int64 id = 1;
  string promo_code = 2;
}

Промокоды убрали, а под тем же номером добавили скидку:

message Order {
  int64 id = 1;
  int32 discount_percent = 2;
}

Сервер обновили, часть клиентов осталась на старом контракте. Что произойдёт?

  • Старые клиенты прочитают поле 2 по старому типу и получат мусор или ошибку
  • Ничего: protobuf сопоставляет поля по имени, promo_code просто будет пустым
  • gRPC откажет в вызове из-за несовпадения версий контракта
  • Старые клиенты увидят discount_percent как строку «10» и продолжат работу

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела