6

非常に「ライブ」なデータに依存する Web アプリケーションを使用しているため、何かが変更された場合は 1 秒ごとに更新する必要があります。

次のソリューションの長所と短所は何だろうと思っていました。

解決策 1 - たくさん投票する

したがって、1 秒ごとにサーバーにリクエストを送信し、データを取得します。データを取得したら、すべてをやり直す前に 1 秒待ちます。状態が変化した場合はクライアント側を検出し、適切にアクションを実行します。

解決策 2 - たくさんブロックする

そのため、30 秒後にタイムアウトするサーバーへの要求を開始します。サーバーは、1 秒に 1 回チェックすることで、サーバー上のデータを監視します。サーバーは、データが変更されたことに気付くと、データをクライアントに送り返し、クライアントは適切なアクションを実行します。

シナリオ

基本的に、データのサイズはかなり小さいですが、ライブ イベントに基づいてランダムな間隔で変化します。問題は、Web UI は 2,000 インスタンスの領域で何かを実行することになるため、UI から 1 秒あたり 2,000 のリクエストが来るのか、それとも最大 30 秒かかる 2,000 の実行時間の長いリクエストがあるのか​​ということです。

特に、同様のボリュームで AJAX リクエストを処理したことがある場合は、ヘルプとアドバイスをいただければ幸いです。

4

3 に答える 3

2

このような場合の一般的な解決策の 1 つは、静的 json ファイルを使用することです。サーバー側のスクリプトは、データが変更されたときにそれらを更新し、高速で軽量な Web サーバー (nginx など) によって提供されます。ファイルは静的で小さいため、ウェブサーバーはキャッシュ内で非常に高速にそれを行います。

于 2011-05-09T01:05:29.757 に答える
2

より良いアーキテクチャを検討してください。この種のメッセージング システムの実装は、 nodeJSのようなもので正しく行うのは簡単です。メッセージのディスパッチは瞬時に行われ、どちらの側でもデータをポーリングする必要はありません。

システム全体を書き直す必要はありません。データ プロデューサーはPOST、更新をファイルに書き込むのではなく、単純に nodeJS サーバーに更新できます。ボーナスとして、ディスク IO で時間を無駄にする必要さえありません。

nodeJS をまったく知らずに開始した場合でも、チャットの例をハックするだけで済むため、数時間で完了する可能性があります。

于 2011-05-07T14:50:31.563 に答える