Обмен файлами
В обмене между учётными системами часто встречаются бинарные вложения: изображения товаров, сканы документов, PDF-отчёты, файлы выгрузок. DataHUB предлагает для них отдельную модель — обмен по ссылкам: сам файл уходит в выделенное хранилище, а в сообщении передаётся только URL объекта и его метаданные.
Базовая модель
Вместо одного шага «отправить файл вместе с документом» обмен файлами раскладывается на два:
- Отправитель загружает файл в общее хранилище и получает на него ссылку.
- Отправитель формирует обычное сообщение обмена, в котором вместо файла лежит ссылка на него и метаданные (имя, размер, MIME-тип, контрольная сумма).
- Получатель принимает сообщение и видит ссылку.
- Получатель скачивает файл из хранилища по ссылке — когда нужно, как нужно, столько раз, сколько необходимо.
Шина в этом потоке отвечает за второй шаг — доставку сообщения со ссылкой. За загрузку, хранение и выдачу самого файла отвечает отдельное файловое хранилище.
Почему не «всё внутри сообщения»
Передача файлов прямо в payload (inline) технически работает и для редких маленьких вложений приемлема. На промышленном масштабе у inline-подхода набирается серьёзный пакет проблем:
- Дорогая веерная рассылка. Если один файл нужно отправить нескольким получателям, при inline он физически дублируется в каждой очереди шины — трафик и место умножаются.
- Замедление основного транспорта. Пока получатель читает мегабайтное сообщение, очередь не движется — остальные сообщения ждут.
- Высокая стоимость ретрая. Если сообщение не подтверждено и пошло на повтор — повторяется не только заголовок, но и весь файл.
- Нет переиспользования. Один и тот же файл, переданный в трёх разных сообщениях, физически передаётся три раза.
С файловым хранилищем эти проблемы исчезают: файл лежит в одной точке, передача идёт ссылкой (десятки байт), скачивание — параллельно и только когда реально нужно.
Ссылки на файлы
Ссылки на файлы в сообщениях — внутренние и постоянные: учётные системы хранят их у себя и обращаются к хранилищу напрямую. Состав метаданных, которые передаются вместе со ссылкой, определяется контрактом класса сообщения.
Где хранятся файлы
DataHUB не хранит файлы внутри себя — для этого используется внешнее S3-совместимое объектное хранилище. Выбор конкретного провайдера (облачный, локальный MinIO, существующее корпоративное хранилище) и параметры подключения — задача развёртывания. Сравнение вариантов, требования к bucket'у, режимы развёртывания — в Развертывание / S3 хранилище.
Что дальше
- Структура сообщения обмена — где живёт ссылка на файл в составе сообщения.
- Типы данных / Ссылка на файл — как ссылка описывается типом.
- Развертывание / S3 хранилище — практика развёртывания и сравнение вариантов хранилищ.