Protobuf (Protocol Buffers)
Protocol Buffers (Protobuf) — механизм сериализации структурированных данных, не зависящий от языка и платформы, разработанный Google. Файлы .proto определяют структуры данных, из которых генерируется эффективный код для сериализации и десериализации.
MIME-тип
application/x-protobuf
Тип
Бинарный
Сжатие
Без потерь
Преимущества
- + 10-100x smaller and faster than JSON/XML
- + Schema-driven with generated type-safe code
- + Backward-compatible schema evolution via field numbers
- + Standard wire format for gRPC
Недостатки
- − Not human-readable — binary format requires tooling
- − Requires .proto schema definition and code generation step
- − Not suitable for human-edited configuration files
Когда использовать .PROTOBUF
Используйте Protobuf для gRPC API, межсервисного взаимодействия, мобильных API с ограниченной пропускной способностью и везде, где нужна эффективная типизированная сериализация.
Технические детали
Файлы .proto определяют типы сообщений с нумерованными полями. Компилятор protoc генерирует код для C++, Java, Python, Go и других языков. Бинарная кодировка использует varint и wire types для компактности. Протокол поддерживает обратную совместимость — новые поля добавляются с новыми номерами.
История
Google разработал Protocol Buffers для внутреннего использования и открыл исходный код в 2008 году. Proto3 (2016) упростил язык, убрав обязательные поля и значения по умолчанию. Protobuf лежит в основе gRPC — RPC-фреймворка Google.