Написать скрипт загрузки файлов (nodejs)

5 000 руб. за проект • безналичный расчёт, электронные деньги
21 апреля 2019, 19:41 • 8 откликов • 79 просмотров
Написать небольшой Upload-сервис, который будет принимать файлы по HTTP и отправлять их на N (3) серверы хранения.

Входящие файлы
Прием файлов по HTTP.
Несколько точек входа:
- /public/
- /media/
- ...

В зависимости от точки будет выбран адрес, где хранить файлы:

public => /var/www/public

media => /var/www/media и т.п.



Запись в хранилище
Каждый входящий файл должен попасть на каждый сервер (аналог RAID 1)
В идеале - работаем с потоками:



  • Поток на M1

  • Поток на M2

  • Поток на M3

  • Поток на MN…

  • Поток на локальную файловую систему


Таким образом пока файл приходит, он одновременно уходит параллельно на три сервера.
Как только файл записан успешно на локальный диск, то отправлять успешный ответ.


Обработка ошибок
В случае, если запись на один из серверов невозможна, файл, который не удалось записать на X сервер, откладывается для последующей повторной отправки на этот сервер (для этого мы и пишем копию файла локально).
Также отправляется уведомление об ошибке в систему мониторинга (по HTTP).

Запуск повторной отправки
Отдельная консольная команда, которая пробует повторно отправить все файлы из очереди.

Тесты приветствуются.