Как масштабировать в Java - PullRequest
3 голосов
/ 16 июня 2009

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

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

Спасибо.

Ответы [ 5 ]

4 голосов
/ 16 июня 2009

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

0 голосов
/ 03 ноября 2009

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

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

0 голосов
/ 16 июня 2009

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

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

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

0 голосов
/ 16 июня 2009

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

0 голосов
/ 16 июня 2009

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

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

...