Реализация обмена в формате Protobuf
Вариация на тему, как подружить ужа с ежом. А точнее — реализовать обмен JSON сообщениями через Kafka, используя протокол Protobuf.
- Описание
- Подробнее
Описание
Появилась потребность реализовать интеграцию с внутренними сервисами через Kafka, используя протокол Protobuf. Почему именно Protobuf? Потому что целевые сервисы-приемники реализованы на golang, для которого Protobuf как КД 2/КД 3 для 1С, и в целом в контуре был принят внутренний стандарт по использованию proto. Хотя скорее всего разработчики просто ленивые и не хотели сами писать парсер сообщений.
Что такое Protobuf?
Protocol Buffers (Protobuf) — протокол сериализации данных, разработанный компанией Google. Предназначен для эффективного и быстрого обмена структурированными данными между разными компьютерными системами, языками программирования и платформами.
Почему Protobuf?
- Компактность по сравнению с текстовыми форматами, такими как XML или JSON.
- Скорость сериализации и десериализации данных из-за оптимизированной структуры данных.
- Языковая независимость — протокол поддерживает генерацию кода на множестве популярных языков программирования.
- Обратная совместимость — можно добавлять новые поля или изменять схему данных, не разрушая работу уже существующих систем, которые используют старую версию схемы.
Как работает Protobuf?
Протокол работает в несколько этапов:
- Описание структуры данных в файле с расширением .proto. В этом файле используется простой синтаксис, независимый от языка программирования.
- Генерация кода с помощью компилятора protoc. Он генерирует код для работы с этой структурой на нужном языке.
- Сериализация и десериализация данных — после генерации кода можно работать с данными в бинарном формате, используя методы сериализации и десериализации, созданные компилятором.
Т.е. если вкратце, то протокол Protobuf — это такой стильный-модный-молодежный а-ля SOAP со строгой типизацией, структурой и т.д. Сам себя проверяет, позволяет генерировать парсеры сообщений под нужный стек на основании описанной структуры, сам моет сам убирает, короче огонь! Но тут на сцену выходит платформа 1С.. вся в белом желтом.. и средств для работы с протоколом конечно же нет. Почти.
На помощь загрустившим нам и платформе в желтом выходит, например, python + возможность вызывать скрипты средствами платформы.
Идея не новая, реализация следующая:
