2010-12-11 21 views
3

Ähnlich wie google analytics Beacons von javascript sendet, die Ereignisse verfolgen, was sind die effizientesten Methoden, um diese Beacon-Daten zu sammeln und in kürzester Zeit an den Client zurückzugeben?Was ist der effizienteste Weg, um Analytics Beacons zu speichern?

Zum Beispiel, wenn ich einen Server zum Server Beacon Anruf habe ich möchte diesen Anruf so schnell wie möglich auf dem Client-Server zu machen.

PHP zu einer flachen Dateien? PHP in eine lokale Warteschlange? Java Server, der sich bei einer Warteschlange anmeldet und die Verbindung die entfernte Warteschlange die ganze Zeit aufrecht erhält? benutzerdefinierte C++ Server?

Dies wäre in der Größenordnung von 1000 Anfragen pro Sekunde.

Antwort

1

Es gibt 2 Aspekte zu diesem.

1) Der Beacon-Anruf des Clients sollte so schnell wie möglich erfolgen. Dies bedeutet, dass die eingehende HTTP-Anfrage 200 OK beantworten und so bald wie möglich beendet werden sollte, so dass sie wahrscheinlich nicht die eigentlichen Daten selbst schreiben sollte. Es sollte dies an einen anderen Prozess im Hintergrund übergeben, entweder durch eine Hintergrund-Shell-Ausführung oder durch Verwendung eines Warteschlangen/Job-Mechanismus wie Gearman.

2) Das Datenschreiben selbst, wenn es in einem Hintergrundfaden weg von der Aufmerksamkeit des Kunden getan wird, hat ein wenig mehr Zeitluxus. 1000 Schreibvorgänge pro Sekunde sollten für eine moderne, gut abgestimmte Datenbank mit Zeilensperrung, die im selben Moment nicht zu stark von SELECT ausgewählt wird, in Ordnung sein. Vielleicht könnte dies jedoch ein gutes Anwendungsszenario für eine key-value store für die sofortige Datenspeicherung sein. Dann könnte ein separater Analyse-/Berichtsprozess den Schlüsselwertspeicher für alle gespeicherten Daten offline abfragen, verarbeiten und schließlich in eine Datenbank kopieren.

Verwandte Themen