Entwickeln eines Clients zum Verbrauch von Streaming-Daten
Client-Design
- Eine HTTPS-Streaming-Verbindung zum Filter-Stream-endpoint herstellen.
- Asynchron POST-Anfragen an den Filter-Stream-Rules-endpoint senden, um dem Stream Regeln hinzuzufügen und zu löschen.
- Geringe Datenvolumina verarbeiten – die Streaming-Verbindung aufrechterhalten, Post-Objekte und Keep-Alive-Signale erkennen.
- Hohe Datenvolumina verarbeiten – die Stream-Erfassung mithilfe asynchroner Prozesse von der weiteren Verarbeitung entkoppeln und sicherstellen, dass clientseitige Puffer regelmäßig geleert werden.
- Die Nachverfolgung des Volumenverbrauchs clientseitig verwalten.
- Stream-Trennungen erkennen, bewerten und automatisch die Verbindung zum Stream wiederherstellen.
Verbindung mit einem Streaming-endpoint
Daten konsumieren
- fields in beliebiger Reihenfolge
- Unerwartete oder fehlende fields
- Nicht sortierte Posts
- Doppelte Nachrichten
- Neue, beliebige Nachrichtentypen, die jederzeit über den Stream eintreffen
Buffering
Die Streaming-endpoints senden data, sobald sie verfügbar sind, was häufig zu hohen Volumina führen kann. Wenn der X-Server nicht sofort neue data in den Stream schreiben kann (z. B. wenn Ihr Client nicht schnell genug liest; siehe handling disconnections für Details), puffert er die Inhalte serverseitig, damit Ihr Client aufholen kann. Ist dieser Puffer jedoch voll, wird eine erzwungene Trennung initiiert, die Verbindung wird beendet, und die gepufferten Posts werden verworfen und nicht erneut gesendet. Siehe unten für weitere Details. Eine Möglichkeit, Zeiträume zu identifizieren, in denen Ihre App zurückliegt, besteht darin, den Zeitstempel der empfangenen Posts mit der aktuellen Uhrzeit zu vergleichen und dies über die Zeit zu verfolgen. Obwohl Stream‑Backlogs aufgrund potenzieller Latenzen und Störungen im öffentlichen Internet nie vollständig vermieden werden können, lassen sie sich durch eine geeignete Konfiguration Ihrer App weitgehend reduzieren. Um das Auftreten von Backlogs zu minimieren:- Stellen Sie sicher, dass Ihr Client den Stream schnell genug liest. In der Regel sollten Sie beim Lesen des Streams keine nennenswerte Verarbeitung durchführen. Lesen Sie den Stream und übergeben Sie die Arbeit an einen anderen Thread/Prozess/data store, um Ihre Verarbeitung asynchron auszuführen.
- Stellen Sie sicher, dass Ihr Rechenzentrum über ausreichende eingehende Bandbreite verfügt, um große, anhaltende Datenvolumina sowie deutlich größere Spitzen (z. B. das 5‑ bis 10‑Fache des normalen Volumens) zu bewältigen. Beim Filtered stream hängen das Volumen und die entsprechend auf Ihrer Seite benötigte Bandbreite vollständig davon ab, welche Posts Ihre Regeln matchen.