Ответ
gRPC обеспечивает обратную совместимость через механизм версионирования protobuf-сообщений. Основные принципы:
- Правило добавления полей: новые поля добавляются с уникальными тегами, старые клиенты их игнорируют.
- Удаление полей: помечаются как
reservedилиdeprecatedвместо физического удаления. - Семантическое версионирование: мажорные изменения требуют новой версии сервиса.
Пример совместимого изменения:
message User {
string id = 1;
string name = 2;
// Добавлено в новой версии
optional string email = 3;
}
Старые клиенты продолжат работать, просто не получат поле email. Новые клиенты могут проверять его наличие через has_email().