Вопрос

У меня есть более 100 каналов видеопотоков для обработки всех одновременно.Мне нужно записать видео, сгенерировать миниатюры и предоставить их в качестве веб-сервиса.Для создания эскизов я могу использовать JMF и т.д.(Я заметил, что есть еще один пост, в котором говорится о том, как создавать и получать доступ: эскизы лучшего качества из файлов изображений большего размера).Но меня беспокоит вот что:как масштабировать?Java EE EJB или просто потоки Java SE?Каковы минусы и плюсы?Как масштабировать по горизонтали с помощью EJB?

Я не настолько знаком с проблемой масштабируемости, и я действительно ценю ваши добрые предложения.

Спасибо.

Это было полезно?

Решение

Соглашайся...потоки должны помочь масштабироваться на одной машине.Если вы хотите масштабировать на разных машинах - используйте Terracotta.

Другие советы

Потоки Java SE могут помочь вам масштабироваться на одной машине, но если вам понадобится горизонтальное масштабирование на разных машинах, EJB будет одним из способов сделать это.

Если бы это был я, я бы, вероятно, выделил его на отдельный уровень веб-сервиса, который мог бы работать на стольких машинах, сколько необходимо, а затем распределил нагрузку между этими машинами.

Я не вижу причин использовать EJB в этой ситуации.Вы должны спросить себя, где находится узкое место.Моя ставка будет сделана на обработку видео.Я бы профилировал ваше приложение и посмотрел, сколько потоков может быть обработано, прежде чем они будут тратить больше времени на ожидание своего временного интервала, чем на обработку.После определенного момента добавление дополнительных потоков не увеличит пропускную способность.На этом этапе вы знаете, что будет делать машина и сколько машин вам понадобится для поддержания определенной пропускной способности.Как вы масштабируетесь по всей машине - это другой вопрос.

Это две разные проблемы.

Захват / обработка звучит как проблема, похожая на ферму рендеринга.Они тривиально масштабируются по горизонтали.Большинство решений включают в себя очередь заданий, вам даже не нужно делать это на Java;просто найдите простое решение, которое вам нравится."render farm ffmpeg" или что-то подобное должно давать результаты в Google.

Ваша часть "предоставление в качестве веб-сервиса" несколько неопределенна.Если вы хотите, чтобы эти видео были доступны, возможно, вам просто нужно поместить их на HTTP-сервер - они могут быть легко сбалансированы по нагрузке и, следовательно, масштабироваться по горизонтали - скорость хранения или пропускная способность сети, вероятно, будут вашими первыми узкими местами там.

Оставьте формальный стек J2EE позади.

Скорее, хорошая очередь сообщений, которая передает JMS с X количеством JVM, выполняющих Y количество потоков в качестве потребителей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top