|
Кэш для видео
|
|||
---|---|---|---|
#18+
Коллеги, посоветуйте навскидку с такой задачкой. Приложение для хранения документов. Документы могут быть разного формата, картинки, документы, чертежи. В зависимости от mime type документа, мы показываем документы в браузере в разных просмотрщиках (pdf показываем в pdfviewer, картинки в js просмотрщике и т.д). Появился заказ на то, чтобы проигрывать еще и видео. Сами документы (в том числе и видео) лежат в архиве (в зависимости от заказчика это может быть HCP, AZURE, SFTP, Amazon S3 и другие. Т.е. мы работаем с архивом через абстракцию, другими словами, у нас на руках обычный InputStream. Так вот, простое решение есть. Есть сервлет, который умеет обрабатывать range requests. Т.е. допустим, видеоплейер запрашивает видеофайл с середины. Мы в сервлете делаем InputStream#skip(long n) до нужной позиции, и отправялем нужные байты браузеру. Все работает, и на первое время мы с этим решением скорее всего и останемся. Но! Во взрослой системе, наверное надо же какой-то быстрый кеш использовать для этого? Т.е. видео прочитали из архива и сохранили в каком-нибудь быстром кеше и в следующий раз, когда другой пользователь хочет посмотреть это же видео, или тот же польователь, но с другой позиции - мы уже будем раздавать это видео из кеша, который должен быть быстрее архива. Типа как на этой картинке Если я прав, то что, навскидку, можно использовать для кеша, Redis? Memcache? Сильно не пинайте, я в таких вопросах новичек, поэтому пришел за советом. Есть какие-нибудь готовые решения? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2020, 16:31 |
|
Кэш для видео
|
|||
---|---|---|---|
#18+
rabiter Так вот, простое решение есть. Есть сервлет, который умеет обрабатывать range requests. Т.е. допустим, видеоплейер запрашивает видеофайл с середины. Мы в сервлете делаем InputStream#skip(long n) до нужной позиции, и отправялем нужные байты браузеру. Все работает, и на первое время мы с этим решением скорее всего и останемся. Но! Во взрослой системе, наверное надо же какой-то быстрый кеш использовать для этого? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2020, 09:38 |
|
Кэш для видео
|
|||
---|---|---|---|
#18+
rabiter Если я прав, то что, навскидку, можно использовать для кеша, Redis? Memcache? Сильно не пинайте, я в таких вопросах новичек, поэтому пришел за советом. Есть какие-нибудь готовые решения? Зачем?! "Все украдено до нас" Подойдет любой кеширующий прокси. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2020, 11:12 |
|
Кэш для видео
|
|||
---|---|---|---|
#18+
rabiter Во взрослой системе, Например, буферизация видео как тут в виде полосочки СПРАВА Это есть у вас? Ведь непонятно какую задачу вы решаете кэшированием. Какую? Столько понаписали и не обозначили ПРОБЛЕМУ. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2020, 11:43 |
|
Кэш для видео
|
|||
---|---|---|---|
#18+
Андрей Панфилов Вы страдаете херней У меня тоже возникло такое ощущение, поэтому пришел сюда за советом. Андрей Панфилов нет вообще никакого смысла выкачивать контент сначала себе, а потом отдавать клиенту... клиент нужно сразу отдавать прямые ссылки на контент Ок, понял. Но в нашем случае не вариант видимо. Потому что разные кастомеры могут использовать разные архивы (FtAPI, Centera, SFTP, NetAPP, HCP, AZURE, SFTP, Amazon S3) - зависит от заказчиков. И чтобы их всех поддерживать, нужна абстракция вокруг них, которая приводит их всех под один общий знаменатель (уничтожая при этом плюшки некоторых их них). Т.е. вот так вот дать кастомеру прямую ссылку на файл в архиве - сомневаюсь, что возможно. Андрей Панфилов все CDN такое умеют (иначе они нахер не нужны), AWS тоже. Продукт ставиться окружение заказчива, в основном это какая-то корпоративная сеть. Думаю CDN там не пахнет и близко. Но вообще спасибо за наводку. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2020, 15:27 |
|
Кэш для видео
|
|||
---|---|---|---|
#18+
mad_nazgul rabiter Если я прав, то что, навскидку, можно использовать для кеша, Redis? Memcache? Сильно не пинайте, я в таких вопросах новичек, поэтому пришел за советом. Есть какие-нибудь готовые решения? Зачем?! "Все украдено до нас" Подойдет любой кеширующий прокси. Я понял идею, спасибо! У нас не сервис, а коробочный продукт. Т.е. установка приложения идет на окружение заказчиков. Т.е. надо будет как-то настраивать проксю на стороне кастомера. Но идея я понял и всяз на вооружение. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2020, 15:29 |
|
Кэш для видео
|
|||
---|---|---|---|
#18+
rabiter нужна абстракция вокруг них, которая приводит их всех под один общий знаменатель (уничтожая при этом плюшки некоторых их них). Т.е. вот так вот дать кастомеру прямую ссылку на файл в архиве - сомневаюсь, что возможно. - у заказчика файлы в AWS - ломимся в AWS, генерирует прямые сслыки, отдаем клиенту - у заказчика файлы в файловой системе - заставляем какой-нить nginx раздавать эти файлы - у заказчика файлы в какой-то жопе - делаем отдельный сервис, который будет отдавать контент и на него кидаем ссылки ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2020, 15:40 |
|
Кэш для видео
|
|||
---|---|---|---|
#18+
Андрей Панфилов rabiter нужна абстракция вокруг них, которая приводит их всех под один общий знаменатель (уничтожая при этом плюшки некоторых их них). Т.е. вот так вот дать кастомеру прямую ссылку на файл в архиве - сомневаюсь, что возможно. - у заказчика файлы в AWS - ломимся в AWS, генерирует прямые сслыки, отдаем клиенту - у заказчика файлы в файловой системе - заставляем какой-нить nginx раздавать эти файлы - у заказчика файлы в какой-то жопе - делаем отдельный сервис, который будет отдавать контент и на него кидаем ссылки Да, я понял вас, спасибо больше за совет! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2020, 16:01 |
|
|
start [/forum/topic.php?fid=59&msg=39935250&tid=2120885]: |
0ms |
get settings: |
11ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
34ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
152ms |
get tp. blocked users: |
0ms |
others: | 310ms |
total: | 517ms |
0 / 0 |