@rodion4dev

Как передавать большие файлы между микросервисами?

Добрый день!

Сразу извиняюсь если тег поставил некорректный: бывают с этим проблемы. Прошу и разрешаю скорректировать

Тезисно:
- Есть хранилище тяжёлых файлов (примерно по 1ТБ на каждый)
- Есть набор микросервисов-воркеров, которые по заданию в определённый момент хотят загрузить файл из хранилища и в определённый момент выгрузить его обратно
- Между хранилищем и микросервисами - сесть одна, локальная
- Сами сервисы написаны на Python
- Передача файлов в данный момент организована открытием подпроцессов (стандартной библиотекой subprocess) с командой scp /local-file user@host:remote

Считаю текущий вариант не оптимальным и почти неуправляемым. Есть какие-то более лучшие практики организации передачи больших файлов туда-обратно? Желательно, чтобы это хорошо работало в Docker контейнерах сквозь docker volumes.

Рассматриваю вариант в сторону чистого Nginx (обычной отдачей статики) или найденного minio решения (которое ещё не изучил).
  • Вопрос задан
  • 832 просмотра
Пригласить эксперта
Ответы на вопрос 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Зависит от характера процессинга файлов и разделения зоны ответственности. Есть как варианты s3-хранилищ, так и стриминг через кафку, так и никуда не девающиеся сетевые протоколы (nfs и iscsi если правильно уже помню аббревиатуры)
Ответ написан
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel
Самый быстрый способ передачи между nix системами командой nc. Можно её использовать вместо scp.
Если профиль процессинга таков что микросервис часто использует одни и те же тяжёлые файлы, то можно держать на машине с сервисом локальную копию такого часто используемого файла. Синхронизировать с хранилищем командой rsync. При этом будут передаваться только сделанные изменения, трафик существенно сократится, работать будет быстрее.
Ну и первым приходит в голову очевидный вопрос -- а почему не запускать обработки на машине хранилища, что бы тяжёлые файлы не гонять?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы