Questo endpoint è stato aggiornato per includere i metadati di modifica dei Post. Scopri di più su questi metadati nella pagina dei fondamenti “Modifica dei Post”.
stream Decahose
- URL espansi e migliorati: - espande completamente gli URL accorciati e fornisce ulteriori metadata (titolo e descrizione della pagina)
- Partizionamento dello stream - 2 partizioni, ciascuna contenente il 50% del volume dello stream Decahose
- Affidabilità migliorata - diversificazione geografica dei sistemi backend
ENTERPRISE
Streaming dei like
- I like sono forniti tramite uno stream indipendente e separato
- Storicamente i like erano chiamati “Favorites”. Il payload nel formato nativo arricchito mantiene questa nomenclatura
- Gli stream includono solo like pubblici
- Pubblico significa che l’utente che mette il like, il creatore del Post e il Post sono tutti pubblici sulla piattaforma
- I like sono molto simili ai Retweet e rappresentano un segnale pubblico di coinvolgimento
- Gli elementi del payload includono:
- Oggetto Post originale
- Oggetto Actor che ha creato il Post originale
- Oggetto Actor che ha eseguito l’azione di like
- Solo i contenuti originali possono ricevere like
- I Retweet non possono ricevere like. Un like a un Retweet viene applicato al Post originale
- I Tweet con citazione possono ricevere like
- Le attività di like includono le Gnip Enrichments applicabili (ove acquistate/applicate)
- Prodotti/Funzionalità supportati
- Gli stream dei like supportano Backfill (ove acquistato/applicato)
- Non esiste supporto Replay per gli stream dei like
- Non esiste supporto Search o Historical per i like
- Non ci sono piani immediati per aggiungere il supporto ai like in PowerTrack
- Per il campione del 10% di Post forniti in Decahose, lo stream include il 100% dei like pubblici applicabili
- Partizioni: 2
- Struttura URL
Guide
Ripristino e ridondanza
- Per supportare ambienti multipli, possiamo distribuire Additional Streams per il tuo account. Questi stream sono indipendenti tra loro e dispongono di uno stream_label diverso per facilitarne la distinzione.
- Per favorire il mantenimento della connessione, ogni stream Decahose supporta Redundant Connections. L’architettura più comune prevede che uno stream abbia due connessioni e, lato client, due consumer indipendenti — idealmente su reti diverse. Con questo design, si ottiene ridondanza tra reti lato client, server e percorsi del datastore. Nota che su ciascuna connessione viene fornita una copia completa dei dati e il lato client deve tollerare e gestire i duplicati.
- Un “heartbeat” viene inviato ogni 10 secondi; tuttavia, con lo stream Decahose il volume di dati è così elevato che anche una breve assenza di Post (ad es. pochi secondi) può indicare un problema di connessione. Pertanto, sia il “silenzio dei dati” sia l’assenza di un heartbeat possono essere usati per rilevare una disconnessione.
Stream aggiuntivi
Panoramica
Recovery è uno strumento di ripristino dei dati (da non utilizzare per la raccolta primaria) che offre accesso in streaming a una finestra mobile di 5 giorni dei dati storici recenti di X. Va utilizzato per recuperare i dati quando l’applicazione che consuma i dati perde eventi dallo stream in tempo reale, sia per una breve disconnessione sia per qualsiasi altra situazione in cui non riesci a ingerire dati in tempo reale per un certo periodo.Utilizzo di Recovery
Con lo stream Recovery, la tua App può effettuare richieste che funzionano nello stesso modo delle richieste agli stream in tempo reale. Tuttavia, la tua App deve specificare nell’URL i parametri che indicano la finestra temporale richiesta. In altre parole, una richiesta Recovery chiede all’API “Post dal tempo A al tempo B”. Questi Post vengono quindi recapitati tramite la tua connessione di streaming in modo che imita lo stream in tempo reale, ma a una velocità leggermente inferiore al tempo reale. Vedi l’esempio seguente: “https://stream-data-api.x.com/stream/powertrack/accounts/someAccountName/publishers/twitter/powertrack.json?startTime=2023-07-05T17:09:12.070Z” I Post vengono recapitati a partire dal primo (più vecchio) minuto del periodo di tempo specificato, proseguendo in ordine cronologico fino all’ultimo minuto. A quel punto, viene inviato tramite la connessione un messaggio “Recovery Request Completed” e il server chiude la connessione. Se la tua richiesta inizia in un momento della giornata in cui si sono verificati pochi o nessun risultato corrispondente, è probabile che trascorra un certo periodo di tempo prima che vengano recapitati i primi risultati: i dati verranno recapitati quando Recovery troverà corrispondenze nella porzione dell’archivio che sta elaborando in quel momento. Quando non ci sono risultati disponibili da recapitare, lo stream continuerà a inviare ritorni a capo, o “heartbeat”, attraverso la connessione per evitare il timeout. Recovery è pensato come strumento per recuperare facilmente i dati persi a causa di brevi disconnessioni, non per periodi molto lunghi come un’intera giornata. Se si presenta la necessità di recuperare dati per lunghi periodi, consigliamo di suddividere le richieste più lunghe in finestre temporali più brevi (ad es. due ore) per ridurre la possibilità di essere disconnessi durante la richiesta a causa della volatilità di Internet o di altri motivi e per fornire maggiore visibilità sull’avanzamento delle richieste lunghe.Disponibilità dei dati
Backfill
- Puoi scegliere di usare sempre “backfillMinutes=5” quando ti connetti, gestendo poi gli eventuali dati duplicati forniti.
- Se rimani disconnesso per più di cinque minuti, puoi recuperare i dati utilizzando Recovery.
- Determinare la durata del periodo di disconnessione.
- 5 minuti o meno?
- Se hai il Backfill abilitato per lo stream, prepara la richiesta di connessione con il parametro “backfillMinutes” appropriato.
- Più di 5 minuti?
- Se disponi di un Recovery stream, effettua una richiesta di Recovery per il periodo di tempo in cui sei stato disconnesso (idealmente con l’attuale set di regole in tempo reale, utilizzando la Rules API se necessario).
- 5 minuti o meno?
- Richiedere una nuova connessione.
- Implementare il backfill Il backfill consente di riconnetterti a partire da un punto precedente alla disconnessione da uno stream e copre disconnessioni fino a 5 minuti. Si implementa includendo un parametro nella richiesta di connessione.
- Consumare uno stream ridondante da un’altra posizione Se lo stream ridondante può essere inviato nello stesso ambiente live, con deduplicazione dei dati, eliminerai la necessità di recovery a meno che SIA lo stream normale SIA quello ridondante non subiscano contemporaneamente downtime o disconnessioni. Se lo stream ridondante non può essere trasmesso in live nell’ambiente di produzione, può essere scritto in un archivio dati “di emergenza” separato. In tal caso, in caso di disconnessioni o downtime sulla connessione dello stream primario, il sistema avrà dati disponibili per colmare il database primario per il periodo in cui mancano dati.
- Implementare Recovery Quando disconnessioni o downtime interessano sia lo stream primario sia quello ridondante, utilizza Decahose Recovery per recuperare i dati mancanti. L’API fornisce una finestra mobile che copre 5 giorni dell’archivio; è preferibile utilizzarla richiedendo non più di un’ora alla volta e trasmettendo i dati in streaming, in parallelo allo stream in tempo reale. Nota che non disponiamo di soluzioni per recuperare dati Decahose oltre la finestra di 5 giorni fornita da Recovery, pertanto è importante utilizzare uno stream ridondante per assicurarti di avere una copia completa dei dati dalla tua parte in caso di downtime significativo.
- Contare i Post in ingresso Il tuo sistema dovrebbe contare il numero grezzo di Post ricevuti all’inizio della tua App di ingestione e fornire un modo per confrontare tali numeri con il numero di Post che raggiunge l’archivio dati finale. Eventuali differenze possono essere monitorate e segnalare al tuo team problemi che causano la perdita di dati dopo la ricezione.
- Analizzare i volumi memorizzati anomali Potresti anche voler analizzare i volumi di dati memorizzati nel database finale per individuare cali anomali. Questo può indicare problemi, anche se è probabile che vi siano circostanze in cui cali di volume sono normali (ad esempio, se la piattaforma X non è disponibile e le persone non possono creare Post per un certo periodo di tempo).
Riferimenti API
stream Decahose
Metodi
Metodo | Descrizione |
---|---|
GET /{stream-type}/:stream | Connetti allo stream di data |
GET :stream
Stabilisce una connessione persistente allo stream Firehose, tramite la quale i dati in tempo reale verranno recapitati.Specifiche della richiesta
Metodo della richiesta | HTTP GET |
Tipo di connessione | Keep-Alive Questo va specificato nell’header della richiesta. |
URL | Disponibile nella pagina di aiuto dell’API dello stream nel tuo dashboard, con la seguente struttura: Decahose: https://gnip-stream.x.com/stream/sample10/accounts/:account_name/publishers/twitter/:stream_label.json?partition=1 |
Partizione (obbligatoria) | partition=\{#} - Il partizionamento è ora obbligatorio per consumare l’intero stream. Dovrai connetterti allo stream specificando il parametro partition. Di seguito il numero di partizioni per stream:* Decahose: 2 partizioni |
Compressione | Gzip. Per connetterti allo stream utilizzando la compressione Gzip, invia semplicemente un header Accept-Encoding nella richiesta di connessione. L’header dovrebbe essere il seguente: Accept-Encoding: gzip |
Codifica dei caratteri | UTF-8 |
Formato della risposta | JSON. L’header della richiesta dovrebbe specificare il formato JSON per la risposta. |
Limite di velocità | 10 richieste ogni 60 secondi. |
Parametro Backfill | Se hai acquistato uno stream con Backfill abilitato, devi aggiungere il parametro “backfillMinutes” alla richiesta GET per abilitarlo. |
Timeout di lettura | Imposta un timeout di lettura nel tuo client e assicurati che sia superiore a 30 secondi. |
Supporto per le modifiche ai Tweet | Tutti gli oggetti Tweet includeranno i metadati di modifica del Tweet che descrivono la cronologia delle modifiche del Tweet. Consulta la pagina dei fondamenti “Edit Tweets” per maggiori dettagli. |
Risposte
Status | Text | Description |
---|---|---|
200 | Success | La connessione è stata aperta correttamente e le nuove attività verranno inviate man mano che arrivano. |
401 | Unauthorized | L’autenticazione HTTP non è riuscita a causa di credenziali non valide. Accedi a console.gnip.com con le tue credenziali per verificare di usarle correttamente nella tua richiesta. |
406 | Not Acceptable | In genere, si verifica quando il client non include correttamente le intestazioni per accettare la codifica gzip dallo stream, ma può verificarsi anche in altre circostanze. Conterrà un messaggio JSON simile a: “Questa connessione richiede la compressione. Per abilitare la compressione, invia un’intestazione ‘Accept-Encoding: gzip’ nella tua richiesta ed essere pronto a decomprimere lo stream mentre viene letto lato client.” |
429 | Rate Limited | La tua App ha superato il limite sulle richieste di connessione. |
503 | Service Unavailable | Problema del server di Twitter. Riconnettiti usando un backoff esponenziale. Se non è stato pubblicato alcun avviso su questo problema sulla X API Status Page, contatta l’assistenza o l’emergenza se non riesci a connetterti dopo 10 minuti. |