Question

J'ai plus de 100 canaux de flux vidéo à traiter en même temps. Je dois capturer la vidéo, générer des vignettes et les servir en tant que service Web. Pour la génération de vignettes, je peux utiliser JMF, etc. from-larger-image-files "> des vignettes de meilleure qualité à partir de fichiers image plus grands ). Mais mon souci est: comment évoluer? EJB Java EE ou simplement Java SE Threads? Quels sont les avantages et les inconvénients? Comment redimensionner horizontalement en utilisant EJB?

Je ne connais pas très bien le problème de l'évolutivité et j'apprécie beaucoup vos aimables suggestions.

Merci.

Était-ce utile?

La solution

Acceptez ... les threads devraient aider à évoluer sur une seule machine. Si vous souhaitez utiliser plusieurs machines, utilisez Terracotta.

Autres conseils

Les threads Java SE peuvent vous aider à faire évoluer votre ordinateur sur une seule machine, mais si vous devez évoluer horizontalement sur différentes machines, vous pouvez utiliser un EJB.

Si c’était moi, je le ferais probablement sous une couche de service Web distinct pouvant s’exécuter sur autant de machines que nécessaire, puis l’équilibrage de la charge entre ces machines.

Je ne vois pas de raison d'utiliser EJB dans cette situation. Vous devez vous demander où se trouve le goulot d'étranglement. Mon pari sera avec le traitement vidéo. Je profilerais votre application et verrais combien de threads peuvent être traités avant qu’ils ne passent plus de temps à attendre leur tranche de temps qu’ils ne traitent. Après un point, ajouter plus de threads n'augmentera pas le débit. À ce stade, vous savez ce qu'une machine va faire et combien de machines il vous faudra pour maintenir un certain débit. Une autre question est de savoir comment vous adaptez votre ordinateur.

Ce sont deux problèmes distincts.

Capturer / traiter semble être un problème de type exploitation. Ceux-ci sont trivialement mis à l'échelle horizontalement. La plupart des solutions impliquent une file d'attente de travaux, vous n'avez même pas besoin de le faire en Java; il suffit de trouver une solution simple que vous aimez. "render farm ffmpeg" ou des trucs comme ça devraient donner des résultats dans Google.

Votre partie "servir de service Web" est quelque peu indéfinie. Si vous voulez que ces vidéos soient accessibles, vous devrez peut-être simplement les mettre sur un serveur HTTP - celles-ci peuvent être facilement équilibrées et donc évolutives horizontalement - la vitesse de stockage ou la bande passante du réseau seraient probablement vos premiers goulots d'étranglement.

Laissez la pile J2EE formelle derrière.

Plutôt, une belle file de messages qui indique à JMS un nombre X de machines virtuelles exécutant un nombre Y de threads en tant que consommateurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top