Question

est le streaming d'une option viable? il y aura une différence de performance sur la fin du serveur selon lequel choisir? est mieux que l'autre pour ce cas?

Je travaille sur une application GWT avec Tomcat en cours d'exécution sur la fin du serveur. Pour comprendre mes besoins, imaginez la mise à jour des cours des actions de plusieurs actions en même temps.

Était-ce utile?

La solution

Voulez-vous que le processus soit client- ou conduite par le serveur? En d'autres termes, voulez-vous pousser de nouvelles données aux clients dès qu'il est disponible, ou préférez-vous que les clients demander de nouvelles données à chaque fois qu'ils le jugent bon, même si cela pourrait ne pas être une fois / seconde? Quelle est la probabilité que le client sera en mesure de rester à attendre une réponse? Même si vous attendez les événements aient lieu une fois / seconde, combien de temps faut-il entre une demande d'un client et le retour du serveur? Si elle est plus d'une seconde, je vous attends à se pencher vers pousser les événements aux clients, bien que l'inverse, je vous attendez à être d'accord vote. Si la réponse est plus long que l'intervalle, alors vous êtes essentiellement en continu de toute façon, car il y a un nouvel événement prêt au moment où le client reçoit le dernier, de sorte que le client pourrait essentiellement sondage recevoir en permanence et toujours des événements - dans ce cas, le streaming les données serait en fait plus léger, puisque vous supprimez les frais généraux de connexion / négociation du processus.

Je suppose que la charge du serveur à être plus élevé pour une base client (pull) abonnement, au lieu d'une configuration de diffusion en continu, puisque le client devra renégocier la connexion à chaque fois, au lieu de laisser une connexion ouverte, mais chaque connexion ouverte dans un modèle de diffusion en continu, il faudrait les ressources du serveur ainsi. Cela dépend de ce que le compromis entre agressivité votre processus de négociation est par rapport à la quantité de mémoire / traitement est nécessaire pour chaque connexion ouverte. Je ne suis pas expert, mais, donc il peut y avoir d'autres facteurs.

Mise à jour: pourparlers de ce gars au sujet du au commerce compromis entre long polling et le streaming, et il semble dire que, avec HTTP / 1.1, le processus de renégociation de connexion est trivial, donc ce n'est pas autant d'un problème.

Autres conseils

Il n'a pas vraiment d'importance. Les frais généraux renégociations de connexion est si mince avec HTTP1.1, vous ne remarquerez aucune différence de performance significative d'une façon ou d'une autre.

Les avantages du long scrutin ne sont pas la compatibilité et la fiabilité -. Aucun problème avec les procurations, les ports, la détection se déconnecte, etc

Les avantages de la « vraie » en streaming pourraient être réduits en tête, mais comme déjà mentionné, cet avantage est beaucoup, beaucoup moins qu'il est fait pour être.

Personnellement, je trouve un serveur comète bien conçu pour être la meilleure solution pour un grand nombre de mises à jour et / ou serveur-push.

Certes, si vous cherchez à pousser des données, le streaming semble offrir de meilleures performances, si votre serveur peut gérer le nombre prévu de connexions continues. Mais il y a une autre question que vous ne répondez pas: Êtes-vous Internet ou intranet? Streaming a été signalé à avoir des problèmes à travers les proxies, autant que vous attendez. Donc, pour une solution à usage général, vous seriez probablement mieux servis par sondage à long - pour un intranet, où vous comprenez l'infrastructure réseau, le streaming est très probablement une plus simple, une meilleure solution de performance pour vous

.

Le StreamHub GWT Adapter Comet a été conçu exactement pour ce scénario de le streaming des cotations boursières. Exemple ici: GWT en streaming Stock citations . Il met à jour les cours des actions de plusieurs actions en même temps. Je pense que la mise en œuvre est sous la comète qui est essentiellement en streaming sur HTTP.

Edit: Il utilise une technique différente pour chaque navigateur. Pour citer le site:

  

Il existe plusieurs sous-jacents   techniques utilisées pour la mise en œuvre Comet   y compris caché iFrame,   XMLHttpRequest / script longue interrogation,   et plugins intégrés tels que Flash.   L'introduction de HTML 5 WebSockets   pour les futurs navigateurs fournira un   mécanisme alternatif pour HTTP   Diffusion. StreamHub utilise un « meilleur ajustement »   approche utilisant les plus performants   et technique fiable pour chaque   navigateur.

streaming sera plus rapide, car les données ne traverse le fil d'une façon. Avec interrogation, le temps d'attente est au moins deux fois.

Polling est plus résistant aux pannes de réseau, car il ne repose pas sur une connexion reste ouverte.

Je vais pour le vote juste pour la robustesse.

Pour les cours des actions en direct, je ne serais absolument garder la connexion ouverte et assurer alerte l'utilisateur / rebranchement à la déconnexion.

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