Sehen Sie diese report comparing Tomcat and Jetty for Comet:
Tomcat etwas bessere Leistung zu haben, neigt, wenn es wenige sehr beschäftigt Verbindungen. Es hat einen leichten Vorteil in der Anforderungslatenz, was am offensichtlichsten ist, wenn viele Anfragen/Antworten über einige Verbindungen ohne signifikante Leerlaufzeit gesendet werden.
Anlegestelle ist tendenziell besser skalierbar, wenn es viele Verbindungen mit beträchtlicher Leerlaufzeit gibt, wie dies bei den meisten Websites der Fall ist. Der kleine Speicherbedarf von Jetty und die erweiterte NIO-Nutzung ermöglichen eine größere Anzahl von Benutzern pro verfügbarem Speicher. Der kleinere Footprint bedeutet auch, dass weniger Speicher und CPU-Cache vom Servlet-Container belegt werden und mehr Cache verfügbar ist, um die Ausführung von nicht-trivialen Anwendungen zu beschleunigen.
Landungssteg hat auch eine bessere Leistung in Bezug auf dem statischen Inhalt, wie Landungssteg der Lage ist, vorab im Speicher abgebildeten Dateipuffer mit NIO sammeln Schreibvorgänge kombiniert zu verwenden, um das Betriebssystem zu instruieren, ohne Eingabe von Benutzerspeicherdateiinhalt bei maximaler DMA Geschwindigkeit zu senden Raum oder die JVM.
Wenn Ihre Anwendung Perioden haben wird, wo es Verbindungen im Leerlauf oder Kunden sind, die einfach auf eine Antwort vom Server warten, dann würde Jetty eine bessere Wahl über Tomcat sein. Ein Beispiel wäre ein Börsenticker, bei dem die Kunden wenige Anfragen senden und nur auf Updates warten.
Darüber hinaus waren die Jetty-Team die Pioniere für Comet, und die meisten Informationen und Beispiele, die ich gefunden habe, neigen dazu, nur auf Jetty konzentrieren. Wir verwenden Jetty seit 2008 auf einem Comet-Server und waren mit den Ergebnissen zufrieden.
Die andere Sache zu berücksichtigen ist, dass Jetty als eigenständiger Webserver konzipiert ist. Das bedeutet, dass Sie keinen Apache-Server vor Jetty benötigen. Wir führen Jetty Standalone auf Port 80 aus, um alle Anfragen unserer Anwendung zu bedienen, einschließlich der Comet-Anfragen.
Wenn Sie Tomcat für Comet-Anfragen verwenden, müssen Sie höchstwahrscheinlich den direkten Zugriff auf Port 8080 erlauben und Apache umgehen, da Apache möglicherweise Ihr langes Polling negiert.
Meiner Meinung nach, bevorzuge ich eine kurze Abfrage Ansatz mit einem Semaphor (Spinning Lock), um diese Art von Service wann immer möglich zu behandeln. Wenn Sie ein paar hundert Millisekunden Genauigkeit opfern können (im schlimmsten Fall sind es normalerweise nur einige zehn Millisekunden), können Sie die Vorteile nutzen, eine viel größere Anzahl gleichzeitiger Benutzer unterstützen zu können. –
@TravisJ Ja eine der Optionen, aber das Ziel ist es, die Facebook-ähnliche Funktionalität zu erreichen, wo wir Echtzeit-Updates haben und wir von Facebook sehen können, dass der Client immer eine Anfrage stellt. –
Welcher Teil von Facebook? Nicht alle von Facebook sind Live-Inhalte. Meinst du den Live-Chat? –