Вопрос проверяет знание Protocol Buffers — эффективного формата сериализации данных, используемого для обмена данными между микросервисами и хранения структурированных данных.
Protocol Buffers (protobuf) — это механизм сериализации структурированных данных, разработанный Google. Он используется для обмена данными между сервисами, хранения конфигураций и в качестве формата для RPC (например, gRPC). Основная идея — описать структуру данных в .proto файле, а затем сгенерировать код для нужного языка программирования.
Вы определяете сообщения (messages) с полями, каждое из которых имеет тип и номер. Номер поля используется для бинарной кодировки, что делает protobuf компактным. Пример .proto файла:
syntax = "proto3";
message Person {
string name = 1;
int32 age = 2;
repeated string phone_numbers = 3;
}После компиляции вы получаете классы/структуры для работы с данными. Сериализация и десериализация выполняются быстро и с минимальным размером.
import person_pb2
person = person_pb2.Person()
person.name = "Alice"
person.age = 30
person.phone_numbers.append("+123456789")
# Сериализация
data = person.SerializeToString()
# Десериализация
new_person = person_pb2.Person()
new_person.ParseFromString(data)
print(new_person.name) # AliceProtocol Buffers стоит применять, когда требуется высокая производительность сериализации, строгая типизация и совместимость между разными языками. Это особенно полезно в микросервисах, где важна скорость и компактность данных.