кол-во видео файлов на хранении у сервера.
также нужно обеспечить высокую скорость загрузки видео на сервер и чтениях их с сервера на клиенте.
Если я правильно понимаю тут важна ширина моего канала и скорость записи и чтения данных на диске.
Поэтому выбор пал на NVMe + 400 Мбит/с канал. - поравьте если тут что-то не так.
Но есть проблема с тем, что одно видео в среднем весит около 200 МБ
В день пользователи могут загрузить 100 таких файлов.
Получается NVMe на 200ГБ будет забит за 10 дней. Следовательно это тупо так делать изначально.
Вопрос куда мне перетащить хранение файлов, чтобы не потерять скорость загрузки?
а если рассмотреть сторонние сервисы (по типу облак)?
просто грузи на HDD, побольше оперативной памяти. И так будет нормально работать. хдд 2-3гбс спокойно держит с файловым кешем.
тогда вопрос: куда пользователь загружает свой файл? Сразу на облако или сначала на NVMe сервер, а потом этот сервер уже передаёт файл в облако на хранение
а имеет смысл серверную логику хранить на NVMe?
что такое серверная логика? если скриптовый код программы - да имеет. И бд на быстрых дисках надо тоже.
да, у меня Node + Nest.js
У нас реализовано так - пользователь или редактор загружает статику - она складируется на одном сервере (так сказать - в админке) Если файл только загружен - доступ к нему возможен только с этого сервера. И об этом знают фронтенды. И дальше возможны два варианта: 1. Статика доступна по другому доменному имени. В этом случае фронтенд всегда знает, что с этого доменного имени файл надо брать с админки. Плюс, сам файл оседает в кеше фронтенда, чтобы каждый раз не лазить в админку за ним, а отдавать от себя. Когда у бэкенда дойдут руки переложить файл в долговременное хранилище - бэкенд переписывает в генерящихся страницах ссылки на файл (меняет доменное имя) и статика отдается из долговременного хранилища (также оседая в кеше фронтенда, если вдруг она станет горячей) 2. Банальный try_files. Фронтенд всегда опрашивает долговременное хранилище на наличие файла. Хранилка использует try_files - если у нее нет файла - проксит запрос в админку на его получение, отдает фронту и кладет себе в кеш на случай, если за файлом придет второй фронт или кэш заэкспайрится. Это работает до тех пор, пока админка не соизволит доставить файл в хранилище - в этом случае try_files будет отдавать файл уже из хранилища
прикольно, кстати да, надо просмотренные видео хранить на клиенте, чтобы он каждый раз их не запрашивал на сервере заново
А как сделали перенос файлов? Очередь какая-то или крон бегает?
rsync банальный 🙂 Либо он сам по крону, либо (если вариант 1) запускается бэкендом на каждый файл, чтобы при успешном синке поменять ссылку на файл в бд
это про скачку файлов или видео по запросу? если это про второе, то интересно услышать какое было использовано хранилище.
обычные выделенные сервера. например ovh
диски какого размера были?
в рейде?
Обсуждают сегодня