Frage

Streaming ein gangbarer Weg? wird es einen Unterschied in der Leistung sein, auf dem Server Ende je nachdem, welche wähle ich? ist eine besser als die andere für diesen Fall?

Ich arbeite an einer GWT-Anwendung mit Tomcat auf dem Server Ende ausgeführt wird. Um meine Bedürfnisse zu verstehen, stellen Sie sich die Aktienkurse von mehreren Aktien zu aktualisieren gleichzeitig.

War es hilfreich?

Lösung

Haben Sie den Prozess wollen client- oder seinen server angetrieben? Mit anderen Worten, machen Sie neue Daten an die Clients schieben wollen, sobald es verfügbar ist, oder würden Sie lieber, dass die Kunden fordern neue Daten, wann immer sie es für richtig, auch wenn das vielleicht nicht einmal sein / Sekunde? Wie hoch ist die Wahrscheinlichkeit, dass der Kunde in der Lage sein wird, um zu bleiben für eine Antwort zu warten? Auch wenn Sie die Ereignisse auftreten einmal / Sekunde erwarten, wie lange dauert es zwischen einer Anforderung von einem Client und die Rückkehr aus dem Server? Wenn es länger ist als eine Sekunde, würde ich erwarten, dass Sie die Ereignisse zu drängen, um die Kunden lehnen, wenn auch umgekehrt, würde ich Polling erwarten in Ordnung zu sein. Wenn die Antwort dauert länger als das Intervall, dann sind Streaming Sie im Wesentlichen sowieso, da es eine neue Veranstaltung der Zeit fertig ist der Client die letzte erhält, so im Wesentlichen der Kunde ständig abfragen könnte und immer Events erhalten - in diesem Fall, Streaming die Daten würden leichter tatsächlich sein, da Sie die Verbindung / Verhandlung über Kopf aus dem Prozess sind zu entfernen.

Ich würde diese Serverbelastung vermutet für ein Client-basierte (pull) Abonnement höher zu sein, statt einer Streaming-Konfiguration, da würde der Kunde muss die Verbindung jedes Mal neu zu verhandeln, anstatt eine Verbindung offen zu verlassen, aber jede offene Verbindung in einem Streaming-Modell würde auch Server-Ressourcen benötigen. Es hängt davon ab, was der Kompromiss ist zwischen dem, wie aggressiv Ihre Verhandlungsprozess ist im Vergleich, wie viel Speicher / Verarbeitung für jede offene Verbindung erforderlich ist. Ich bin kein Experte, aber so kann es andere Faktoren sein.

UPDATE: Dieser Kerl spricht über die handels- offs zwischen lang~~POS=TRUNC Polling und Streaming, und er scheint mit HTTP / 1.1, die Verbindung Neuverhandlung Prozess trivial ist, zu sagen, dass das so ist nicht so sehr ein Problem.

Andere Tipps

Es ist nicht wirklich wichtig. Die Verbindung Neuverhandlung Aufwand ist so schlank mit HTTP1.1, Sie werden keine signifikanten Leistungsunterschiede der einen oder anderen bemerken.

Die Vorteile von Lang Polling sind Kompatibilität und Zuverlässigkeit -. Keine Probleme mit Proxies, Häfen, Erkennung trennt, etc.

Die Vorteile von „true“ Streaming möglicherweise Overhead reduziert werden würden, aber wie bereits erwähnt, diese Leistung ist viel, viel weniger als es gemacht, sein.

Ich persönlich finde einen gut konzipiertes Komet-Server die beste Lösung für eine große Anzahl von Updates und / oder Server-Push sein.

Natürlich, wenn Sie schauen, Daten zu drücken, würde Streaming scheint eine bessere Leistung zu bieten, wenn Ihr Server die erwartete Anzahl von kontinuierlichen Verbindungen verarbeiten kann. Aber es gibt ein weiteres Problem, dass Sie beziehen sich nicht auf: Sind Sie Internet oder Intranet? Streaming wurde berichtet, einige Probleme über Proxies haben, so wie man es erwarten würde. Also für eine Allzweck-Lösung, würden Sie wahrscheinlich besser durch lange Umfrage serviert - für ein Intranet, in dem Sie die Netzwerkinfrastruktur zu verstehen, ist das Streaming sehr wahrscheinlich eine einfachere, bessere Performance Lösung für Sie

.

Der StreamHub GWT Comet Adapter wurde entwickelt, um genau für dieses Szenario Streaming-Aktienkurse. Beispiel hier: GWT Streaming Auf Zitate . Es aktualisiert die Aktienkurse von mehreren Aktien gleichzeitig. Ich denke, die Umsetzung unter Comet ist, die im wesentlichen über HTTP-Streaming.

Edit: Es verwendet eine andere Technik für jeden Browser. Um die Website zu zitieren:

  

Es gibt verschiedene darunter liegende   Techniken Comet zu implementieren   einschließlich versteckten iFrame,   XMLHttpRequest / Script Lange Polling,   und Embedded-Plug-in wie Flash.   Die Einführung von HTML 5 WebSockets   in den künftigen Browsern eine liefern   alternativer Mechanismus für HTTP   Streaming. StreamHub verwendet eine "best-fit"   Ansatz unter Verwendung der leistungsstärksten   und zuverlässige Technik für jeden   Browser.

Streaming wird schneller sein, da die Daten nur den Draht einen Weg kreuzt. Mit Polling ist die Latenzzeit mindestens zweimal.

Polling zu Netzwerkausfällen belastbarer ist, da sie nicht auf einer Verbindung angewiesen wird offen gehalten.

ich für die Abfrage gehen würde nur für die Robustheit.

Für Live-Aktienkurse würde ich unbedingt halten die Verbindung offen, und der Alarm / Wiederverbindung auf disconnect gewährleisten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top