Creazione di un client per consumare dati in streaming
Progettazione del client
- Stabilire una connessione di streaming HTTPS all’endpoint filter stream.
- Inviare asincronamente richieste POST all’endpoint delle regole del filter stream per aggiungere ed eliminare regole dallo stream.
- Gestire bassi volumi di dati – mantenere la connessione di streaming, rilevare gli Oggetti Post e i segnali di keep-alive.
- Gestire alti volumi di dati – disaccoppiare l’ingestione dello stream dall’elaborazione aggiuntiva utilizzando processi asincroni e assicurarsi che i buffer lato client vengano svuotati regolarmente.
- Gestire il monitoraggio del consumo di volume lato client.
- Rilevare le disconnessioni dello stream, valutarle e riconnettersi automaticamente allo stream.
Connessione a un endpoint di streaming
Consumo dei dati
- Campi in qualsiasi ordine
- Campi imprevisti o mancanti
- Post non ordinati
- Messaggi duplicati
- Nuovi tipi di messaggi arbitrari che arrivano nello stream in qualsiasi momento
Buffering
Gli endpoint di streaming invieranno i data non appena sono disponibili, il che in molti casi può comportare volumi elevati. Se il server di X non può scrivere subito nuovi data nello stream (ad esempio, se il tuo client non legge abbastanza velocemente; vedi handling disconnections per maggiori informazioni), eseguirà il buffering dei contenuti lato server per consentire al tuo client di recuperare. Tuttavia, quando questo buffer è pieno, verrà avviata una disconnessione forzata per interrompere la connessione e i Post in buffer verranno eliminati e non reinviati. Vedi di seguito per maggiori dettagli. Un modo per individuare quando la tua app sta restando indietro è confrontare il timestamp dei Post ricevuti con l’ora corrente e monitorare questo scostamento nel tempo. Sebbene i backlog dello stream non possano essere completamente eliminati a causa della latenza potenziale e di eventuali problemi sulla rete pubblica, possono essere per lo più evitati con una corretta configurazione della tua app. Per ridurre al minimo il verificarsi di backlog:- Assicurati che il tuo client legga lo stream abbastanza velocemente. In genere non dovresti eseguire alcuna elaborazione mentre leggi lo stream. Leggi lo stream e delega l’attività a un altro thread/process/data store per eseguire l’elaborazione in modo asincrono.
- Assicurati che il tuo data center abbia una banda in ingresso sufficiente per gestire grandi volumi di data sostenuti, nonché picchi significativamente maggiori (ad es. 5–10x il volume normale). Per filtered stream, il volume e la corrispondente larghezza di banda richiesta dalla tua parte dipendono interamente dai Post che le tue regole fanno corrispondere.