0

ショーのリアルタイム データの速度と遅延について疑問があります。

単純なコレクション クエリで MySql テーブルからデータを取得する ajax リクエストを毎秒起動して、読み取り時間データをユーザーに表示したいとします。

そのために、現在、これら2つのオプションが私の頭の中で泡立っています

  1. MySql / アマゾン オーロラ
  2. ファイルシステム

これらのオプションの中で、どれがより良いでしょうか? または他の解決策はありますか?

実際に確認したところ、ブラウザでページを開いた場合、スタック500msを使用するよりも短い時間で ajax リクエストが応答します。PHP, MySql, Nginx

しかし、より多くのページを開くと、同じ ajax リクエストは、すべての訪問者1 secondよりも少ないはずのよりも多くの応答を返します。500ms

したがって、この場合、訪問者が増加すると、ajax リクエストの応答が非常に悪くなります。

私もチェックしましNode.js+MySqlたが、同じ結果です。

jsonレコード用のファイルを作成し、ファイルからデータを取得するのは良いことですか? または他の解決策はありますか?

4

1 に答える 1

0

実際、データベースを使用して実際のデータを保存する必要がありますが、実際の更新を追跡するためにメモリ キャッシュ (内部辞書または別のコンポーネントである可能性があります) を簡単に追加できます。

通常の ajax リクエストよりも次のようになります。

  1. Memcache、ユーザー 123 にとって何か新しいことはありますか?

  2. 最終更新は 10 分前です

  3. ああ、新しいことは何もないので、null を返しましょう。

データを書き込む場合:

  1. データをデータベースに入れる

  2. memcache 内のクライアントの最終更新時刻を更新する

実際のキーは異なる場合があります (チャット ルーム ID など)。アイデアは、更新が実際に発生したときにのみデータベースを読み取ることです。

レベル2:

多数の呼び出しで、Web サーバーとクライアントのインターネットを燃やします。あなたは何かをすることができます:

DateTime start = DateTime.Now;
while(Now.Subtract(30 seconds) < start)
{
   if (hasUpdates) return updates;
   sleep(100);
}

クライアントよりも、30 秒に 1 回サーバーを呼び出します。サーバーが新しいデータに気付くと、クライアントはすぐに応答を受け取ります。

于 2016-08-22T22:13:07.307 に答える