Periodicamente eseguendo il polling di un'API, ci sono alternative?

2

Attualmente sto lavorando a un servizio che dovrebbe aggregare i dati di un certo numero di API, unificare i dati e offrirli tramite un'altra API agli utenti. Ho avuto un paio di idee per risolvere questo problema, ma non sono sicuro che la mia soluzione migliore sia la migliore soluzione possibile.

Soluzioni che ho considerato:

  • Consenti al browser di eseguire il polling della nostra API tramite javascript, che a sua volta esegue il polling delle API di terze parti. Questo introduce un po 'di ritardo tra la richiesta e l'utente che vede i dati, ma non spreca risorse sugli utenti che accedono raramente.
  • Lascia che il browser esegua il polling delle API di terze parti e successivamente invii i dati alla nostra API. Questo è potenzialmente insicuro e mi richiede di fornire endpoint API aggiuntivi e molto più pulizia dei dati.
  • L'opzione che considero attualmente la più ottimale è quella di consentire a un servizio sul server (un eseguibile effettivo) di eseguire periodicamente il polling delle API di terze parti. Vorrei, per esempio, sondare alcuni endpoint ogni 30 minuti, e altri forse una volta al giorno. Questa è l'opzione più sicura e introduce poco ritardo nelle richieste degli utenti e impedisce agli utenti di raggiungere il limite di richieste dell'API. Ma i dati saranno aggiornati solo dopo il polling.

Ci sono alternative? In caso contrario, la mia soluzione ottimale attuale è abbastanza buona?

    
posta Simon Verbeke 18.12.2014 - 09:00
fonte

2 risposte

2

Un'altra opzione non è di sondare affatto, ma di implementare una soluzione di caching in cui, quando una richiesta arriva alla tua API, usi un valore memorizzato nella cache se ne hai una abbastanza recente, altrimenti aggiorni la cache con una chiamata all'API esterna.

    
risposta data 17.01.2015 - 17:12
fonte
1

Se hai il controllo su una qualsiasi delle API, e per la tua API personale se ti aspetti che il browser visualizzi gli aggiornamenti "live", potresti prendere in considerazione l'implementazione di "polling lungo", noto anche come "cometa". Nel polling lungo, quando viene effettuata una richiesta, il server controlla se è cambiato qualcosa da quando il client ha effettuato l'ultimo polling (può essere utile se il client include un timestamp dalla risposta al suo ultimo sondaggio per risolverlo) e se è così restituisce immediatamente i dati modificati. Altrimenti, attende che i dati cambino prima di tornare. Pertanto, il client deve solo effettuare una singola richiesta e attendere il ritorno dei dati, piuttosto che dover eseguire il polling continuo. Ciò riduce il carico sul server e rende i client più rapidi.

    
risposta data 18.12.2014 - 09:27
fonte

Leggi altre domande sui tag