0

少量の頻繁に変更されるデータ (JSON や XML などを使用) を複数の受信者に適度に高い頻度でブロードキャストするシステムの仕様を検討しています (更新は毎秒 1000 秒になります)。

私たちは当初、HTTP POST を使用して各エンドポイントにデータをブロードキャストすることを考えていましたが、おそらく数秒に 1 回です (クライアントは他の人の Web アプリケーションであるため、クライアントは異なります)。私たちが望んでいる負荷/頻度。少なくとも何らかの方法でメッセージをバージョン管理/タイムスタンプする必要があると思います。

送信の準備ができているすべてのものを準備し、どこに行く必要があるかを選択するためにRabbitMQを使用しています(それが重要な場合はDjangoアプリから)が、すべてのエンドポイントでMQを使用することはできません.

HTTP POST は、まったく正しくないようです。他に何を調べる必要がありますか?これは node や socket.io などの新しいリアルタイム フレームワークのようなものが適合する場所ですか? 私たちはこれを支援するための適切な専門家を見つけることができてうれしく思います.正しい方向に舵を切る必要があるだけです.

ありがとう!

4

1 に答える 1

0

複数のクライアントに対して毎秒何千もの POST を実行したくありません。あなたはHTTPオーバーヘッドをあなたの側に導入しようとしています.

オプション 1: キューを読み取れない、または読み取らないクライアントの場合、POSTS は機能しますが、サーバーとすべての HTTP オーバーヘッドを強制終了しないように、更新をバンドルできますか? 1 ~ 2 分に 1 回、すべての集計データを取得してクライアントに送信しますか? この方法では、1 分または 2 分ごとに 1 つのクライアントに 60 以上の POST リクエストが送信されることはありません。すべてのヘッダー情報とデータの断片を送信するのではなく、すべてのヘッダー情報を 1 回だけ送信してデータを追加するだけなので、帯域幅の節約にも役立ちます。

オプション 2: 適切な 'ole ソケット接続の使用について考えたことはありますか? クライアントへのソケットを開きますか、それともその逆で、その上にデータをプッシュしますか? これにより、HTTP のオーバーヘッドが回避され、クライアントはデータが到着する速度で読み取ることができます。クライアントがデータを受信する必要がなくなった場合は、接続を閉じることができます。それは難解な側ですが、ターゲットサーバーを完全に殺すことは避けます.

クライアントに MQ を読み取らせることができる場合は、クライアント専用のグループをセットアップして作業を楽にしてください。これにより、万能のサイズを試みるのではなく、キューを読み取れない、または読み取らないクライアントのみを処理する必要があります。解決。

于 2012-02-08T17:14:47.860 に答える