Pregunta

Tengo más de 100 canales de transmisión de video para procesar todos al mismo tiempo. Necesito capturar el video, generar miniaturas y mostrarlas como un servicio web. Para la generación de miniaturas, puedo usar JMF, etc. (Noté que hay otra publicación que habla sobre cómo generar y acceder: miniaturas de mejor calidad de archivos de imágenes más grandes ). Pero mi preocupación es: ¿cómo escalar? ¿Java EE EJB o simplemente Java SE Threads? ¿Cuáles son los contras y los pros? ¿Cómo escalar horizontalmente con EJB?

No estoy familiarizado con el problema de la escalabilidad, y realmente aprecio sus amables sugerencias.

Gracias.

¿Fue útil?

Solución

De acuerdo ... los hilos deberían ayudar a escalar en una sola máquina. Si desea escalar entre diferentes máquinas, use Terracotta.

Otros consejos

Los subprocesos Java SE pueden ayudarlo a escalar en una sola máquina, pero si va a necesitar escalar horizontalmente en diferentes máquinas, EJB sería una forma de hacerlo.

Si fuera yo, probablemente lo manejaría en un nivel de servicio web independiente que podría ejecutarse en tantas máquinas como fuera necesario, y luego cargar el equilibrio entre esas máquinas.

No veo una razón para usar EJB en esta situación. Tienes que preguntarte dónde está el cuello de botella. Mi apuesta será con el procesamiento del video. Me gustaría perfilar su aplicación y ver cuántas hebras pueden procesarse antes de que pasen más tiempo esperando su intervalo de tiempo que procesan. Después de un punto, agregar más subprocesos no agregará más rendimiento. En ese momento, sabe qué hará una máquina y cuántas máquinas necesitará para mantener un determinado rendimiento. Cómo escalar a través de la máquina es otra pregunta.

Estos son dos problemas distintos.

La captura / procesamiento suena como un problema de granja de render. Esos son escalados trivialmente horizontalmente. La mayoría de las soluciones implican una cola de trabajos, ni siquiera necesita hacer esto en Java; Solo encuentra una solución simple que te guste. " render ffmpeg farm " o cosas por el estilo deberían dar resultados en Google.

Su parte de 'servir como servicio web' es algo indefinida. Si desea que esos videos sean accesibles, es posible que solo tenga que colocarlos en un servidor HTTP, ya que estos pueden tener una carga equilibrada fácilmente y, por lo tanto, ser escalable horizontalmente. La velocidad de almacenamiento o el ancho de banda de la red probablemente sean sus primeros cuellos de botella.

Deja atrás la pila J2EE formal.

Más bien, una buena cola de mensajes que habla de JMS con X número de JVM que ejecutan Y número de subprocesos como consumidores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top