Pergunta

Eu tenho mais de 100 canais de fluxos de vídeo para processar tudo ao mesmo tempo. Eu preciso para capturar o vídeo, gerar miniaturas, e servi-los como um serviço web. Para a geração de miniaturas, eu posso usar JMF etc. (eu notei que há um outro post falando sobre como gerar e acesso: melhores miniaturas de qualidade a partir de arquivos de imagem maiores ). Mas a minha preocupação é: como escalar? Java EE EJB ou simplesmente Java SE Threads? O que é os prós e contras? Como escalar horizontalmente usando EJB?

Eu não sou tão familiarizado com problema de escalabilidade, e eu realmente aprecio suas sugestões amáveis.

Graças.

Foi útil?

Solução

Concordo ... tópicos devem ajudar a escala em uma única máquina. Se você deseja dimensionar em diferentes máquinas -. Uso Terracotta

Outras dicas

Java SE Threads pode ajudá-lo a escalar em uma única máquina, mas se você está indo para necessidade de escala horizontal em diferentes máquinas, EJB seria uma maneira de fazê-lo.

Se fosse comigo, eu provavelmente cultivá-la para um nível de serviço da web separada que poderia correr em quantas máquinas conforme necessário, e depois carregar equilíbrio entre essas máquinas.

Eu não vejo uma razão para usar EJB nesta situação. Você tem que se perguntar onde está o gargalo. Minha aposta será com o processamento de vídeo. Eu perfil de seu aplicativo e ver como muitos segmentos pode ser o processamento antes que eles estão gastando mais tempo de espera para a sua fatia de tempo do que eles estão processando. Depois de um ponto de adicionar mais threads não vai acrescentar mais taxa de transferência. Nesse ponto, você sabe o que uma máquina vai fazer e quantas máquinas você vai precisar para sustentar um certo rendimento. Como você escala em toda a máquina é outra questão.

Estes são dois problemas distintos.

Captura / Processamento soa como uma render farm-like problema. Aqueles são dimensionadas trivialmente horizontalmente. A maioria das soluções envolvem uma fila de postos de trabalho, você não precisa mesmo de fazer isso em Java; apenas encontrar uma solução simples você gosta. "Render ffmpeg fazenda" ou coisas assim devem produzir resultados no Google.

Seu 'servindo como um serviço web' parte é um pouco indefinido. Se você quer que os vídeos para ser acessível, você pode só precisa colocá-los em um servidor HTTP server aqueles podem ser facilmente e, assim, ser horizontalmente scalable- velocidade de armazenamento e largura de banda de rede provavelmente seriam seus primeiros gargalos lá com balanceamento de carga.

Deixe a trás formais pilha J2EE.

Em vez disso, uma boa fila de mensagens que fala JMS com um número X de JVMs executando número Y de tópicos como consumidores.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top