MessagePack (бинарная сериализация)
MessagePack — эффективный формат бинарной сериализации, разработанный как компактная альтернатива JSON. Он кодирует те же структуры данных (карты, массивы, строки, числа) в бинарном формате, который обычно на 30–50% компактнее JSON.
MIME-тип
application/x-msgpack
Тип
Бинарный
Сжатие
Без потерь
Преимущества
- + Smaller and faster than JSON with no schema required
- + Drop-in JSON replacement — same data model
- + Implementations in 50+ programming languages
Недостатки
- − Not human-readable in binary form
- − No schema validation — same weakness as JSON
- − Less widely adopted than JSON or Protobuf
Когда использовать .MSGPACK
Используйте MessagePack для API, где размер данных критичен, для слоёв кэширования, как формат хранения в Redis и при обмене данными между разноязычными сервисами.
Технические детали
MessagePack использует однобайтовые префиксы для определения типов: положительные fixint (0x00–0x7f), fixmap (0x80–0x8f), fixarray (0x90–0x9f), fixstr (0xa0–0xbf). Он поддерживает nil, boolean, int (8–64 бит), float (32/64), str, bin, array, map, ext и timestamp. Формат не содержит схемы — типы самоописывающие.
История
Фурухаси Садаюки создал MessagePack в 2008 году как альтернативу JSON с меньшими затратами ресурсов. Формат получил распространение в Redis (RESP3 поддерживает msgpack), Fluentd и различных игровых движках.