2016-07-29 17 views
0

Ich habe Zweifel hinsichtlich Geschwindigkeit und Latenz für die Anzeige von Echtzeitdaten.Echtzeitdaten für Benutzer mit gleicher Antwortzeit anzeigen

Nehmen wir an, dass ich die Daten der Lesezeit für die Benutzer anzeigen möchte, indem Sie in jeder Sekunde die ajax-Anforderungen abfragen, die die Daten aus der MySql-Tabelle durch einfache Abfrage abrufen.

Für die derzeit diese beiden Optionen in meinem Kopf sprudeln

  1. MySql/Amazon Aurora
  2. Dateisystem

diese Optionen unter die besser wäre? Oder irgendeine andere Lösung?

Wie ich praktisch überprüft, wenn wir eine Seite im Browser öffnen, gibt Ajax Anfragen Antwort in weniger als 500ms mit PHP, MySql, Nginx Stapel.

Aber wenn wir mehr Seiten öffnen dann gibt die gleiche Ajax Anfragen Antwort in mehr als 1 second, die für jeden Besucher weniger als 500ms sein sollte.

Also in diesem Fall, wenn Besucher steigen dann gibt Ajax Anfragen sehr schlechte Antwort.

Ich auch mit Node.js+MySql überprüft, aber das gleiche Ergebnis.

Ist es gut, json Dateien für Datensätze zu erstellen und Daten aus der Datei abzurufen? Oder irgendeine andere Lösung?

Antwort

0

In der Tat müssen Sie Datenbank verwenden, um tatsächliche Daten zu speichern, aber Sie können problemlos Speichercache hinzufügen (es könnte internes Wörterbuch oder separate Komponente sein), um tatsächliche Updates zu verfolgen.

als der typische Ajax-Anforderung wird so etwas wie folgt aussehen:

  1. Memcache, haben wir etwas Neues für Benutzer 123?

  2. Letztes Update war vor 10 Minuten

  3. aha, also nichts Neues, lassen Sie uns null zurück;

Wenn Sie schreiben Daten:

  1. Put Daten in die Datenbank

  2. Update-Lastupdated Zeit für Kunden in memcache

tatsächliche Schlüssel könnte anders sein - z.B. Chat-Room-ID. Idee ist, Datenbank nur zu lesen, wenn Aktualisierungen wirklich passierten.

Stufe 2:

Sie werden Sie Webserver verbrennen und auch Internet-Client mit einer hohen Anzahl von Anrufen.Sie können etwas tun:

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

Als Client wird Server 1 Mal pro 30 Sekunden anrufen. Der Client erhält sofort eine Antwort, wenn der Server neue Daten feststellt.

+0

Ja, Memcache ist eine gute Idee. Ich überprüfe das Gleiche mit Websocket. Aber in WebSocket für mich herausfordernde Aufgabe ist es zu überprüfen, wie viele Anzahl von Verbindungen möglich ist, um gleichzeitig zu verbinden. – Piyush