約1更新/秒のストリーミング対ロングポーリング
-
22-08-2019 - |
質問
は、実行可能な選択肢をストリーミングしていますか? サーバー側のパフォーマンスの違いは、私が選択したかに依存があるでしょうか? この場合の一方が他方より優れているのですか?
私は、Tomcatは、サーバー側で実行されているとGWTアプリケーションに取り組んでいます。私のニーズを理解するために、同時にいくつかの銘柄の株価を更新想像します。
解決
あなたはプロセスがクライアント - またはサーバー主導になりたいですか?言い換えれば、それは一回/秒ではないかもしれないにもかかわらず、あなたはできるだけ早くそれが利用可能だとしてクライアントに新しいデータをプッシュしたいですか、クライアントは、彼らが合うたびに新しいデータを要求するということ?クライアントは答えを待つために固執することができるようになりますlikelyhoodは何ですか?あなたは、イベントが一度/秒起こることを期待していても、どのくらいの時間は、クライアントからの要求とサーバからのリターンの間で時間がかかりますか?それは長い秒よりなら、私はあなたがクライアントにイベントをプッシュする方に傾くことを期待したい、周りに他の方法が、私はポーリングは大丈夫であることを期待したいです。この場合には、ストリーミング - 応答間隔よりも長くかかる場合、クライアントは、本質的に継続的にポーリングして、常にイベントを受け取ることができるように、クライアントは最後の1を受け取る時までに準備ができて新しいイベントが、ありますから、あなたは、本質的に、とにかくストリーミングしていますあなたはプロセスからの接続/ネゴシエーションのオーバーヘッドを削除しているので、データは実際には、より軽量になります。
私は、クライアントの代わりに接続が開いたままで、接続するたびに再交渉しなければならないため、代わりにストリーミングの構成により、クライアントベース(プル)サブスクリプションの高いようにそのサーバーの負荷を疑うだろうがストリーミングモデルの各オープン接続は、同様にサーバリソースを必要とします。これは、トレードオフがあなたの交渉プロセスは、メモリ/処理は、各オープン接続のために必要とされるどのくらいの対がどのように積極的なの間にあるかに依存します。でも、私は何の専門家だ、そう、他の要因があるかもしれません。
他のヒント
それは本当に問題ではありません。接続再ネゴシエーションのオーバーヘッドがHTTP1.1ととてもスリムで、あなたは重大なパフォーマンスの違い一つの方法または別のに気付くことはありません。
ロングポーリングの利点は、互換性と信頼性です - 。プロキシで問題なく、ポート、切断を検出するなど
「真」のストリーミングの利点は、潜在的にオーバーヘッドを減少するであろうが、すでに述べたように、この利点は、あることが作られているよりもはるかに少ないくらいです。
個人的に、私はよく設計された彗星サーバがアップデートおよび/またはサーバプッシュ多数のための最善の解決策であることがわかります。
確かに、ストリーミングは、サーバーが連続接続数の期待値を扱うことができれば、より優れたパフォーマンスを提供するように思われます。しかし、あなたは対応していない別の問題があります:あなたは、インターネットやイントラネットはありますか?ストリーミングは、あなたが期待する限り、プロキシ間でいくつかの問題を持っていることが報告されています。だから、汎用ソリューションのために、あなたはおそらく、より良いロングポーリングによって提供されるだろう - あなたはネットワークインフラストラクチャを理解し、イントラネット、のために、ストリーミングは非常に可能性があなたのためのシンプルな、より優れたパフォーマンスのソリューションです。
。StreamHub GWT彗星アダプタ株価ストリーミング。ここでの例:引用符はを。それは同時に、いくつかの銘柄の株価を更新します。私は実装が下に、本質的にHTTP経由でストリーミングされる彗星だと思います。
編集:それは各ブラウザごとに異なる技術を使用しています。ウェブサイトを引用するには:
根本的に異なるいくつかあります。 彗星を実装するために使用される技術 非表示のiframeを含みます、 XMLHttpRequestを/スクリプトロングポーリング、 およびFlashなどのプラグインを組み込み。 HTML 5 WebSocketをの導入 将来のブラウザにして提供します HTTPのための代替メカニズム ストリーミング。 StreamHubは「ベストフィット」を使用しています 最もパフォーマンスを活用したアプローチ それぞれのための信頼できる技術 ブラウザます。
ストリーミングが速くなります。ポーリングでは、レイテンシは少なくとも二倍である。
それは開いたままにされている接続に依存しないので、ポーリングは、ネットワークの停止により弾力的である。
私はちょうど堅牢性のポーリングのために行くと思います。
ライブ株価のために私は絶対にオープン接続を維持し、切断上のユーザのアラート/再接続を確実にするでしょう。