Перейти к содержанию

Обмен файлами

В обмене между учётными системами часто встречаются бинарные вложения: изображения товаров, сканы документов, PDF-отчёты, файлы выгрузок. DataHUB предлагает для них отдельную модель — обмен по ссылкам: сам файл уходит в выделенное хранилище, а в сообщении передаётся только URL объекта и его метаданные.

Базовая модель

Вместо одного шага «отправить файл вместе с документом» обмен файлами раскладывается на два:

  1. Отправитель загружает файл в общее хранилище и получает на него ссылку.
  2. Отправитель формирует обычное сообщение обмена, в котором вместо файла лежит ссылка на него и метаданные (имя, размер, MIME-тип, контрольная сумма).
  3. Получатель принимает сообщение и видит ссылку.
  4. Получатель скачивает файл из хранилища по ссылке — когда нужно, как нужно, столько раз, сколько необходимо.

Шина в этом потоке отвечает за второй шаг — доставку сообщения со ссылкой. За загрузку, хранение и выдачу самого файла отвечает отдельное файловое хранилище.

Почему не «всё внутри сообщения»

Передача файлов прямо в payload (inline) технически работает и для редких маленьких вложений приемлема. На промышленном масштабе у inline-подхода набирается серьёзный пакет проблем:

  • Дорогая веерная рассылка. Если один файл нужно отправить нескольким получателям, при inline он физически дублируется в каждой очереди шины — трафик и место умножаются.
  • Замедление основного транспорта. Пока получатель читает мегабайтное сообщение, очередь не движется — остальные сообщения ждут.
  • Высокая стоимость ретрая. Если сообщение не подтверждено и пошло на повтор — повторяется не только заголовок, но и весь файл.
  • Нет переиспользования. Один и тот же файл, переданный в трёх разных сообщениях, физически передаётся три раза.

С файловым хранилищем эти проблемы исчезают: файл лежит в одной точке, передача идёт ссылкой (десятки байт), скачивание — параллельно и только когда реально нужно.

Ссылки на файлы в сообщениях — внутренние и постоянные: учётные системы хранят их у себя и обращаются к хранилищу напрямую. Состав метаданных, которые передаются вместе со ссылкой, определяется контрактом класса сообщения.

Где хранятся файлы

DataHUB не хранит файлы внутри себя — для этого используется внешнее S3-совместимое объектное хранилище. Выбор конкретного провайдера (облачный, локальный MinIO, существующее корпоративное хранилище) и параметры подключения — задача развёртывания. Сравнение вариантов, требования к bucket'у, режимы развёртывания — в Развертывание / S3 хранилище.

Что дальше