Scalabilità del servizio Web delle applicazioni Web a pagina singola

0

Sto cercando di creare un'applicazione web a pagina singola che chiamerà più servizi Web (sia SOAP che RESTful) e aggregherà i dati nell'interfaccia utente.

Inizialmente pensavo di poter fare tutto dal lato client, con richieste ajax, ma mi rendo conto che

  • Se ci sono molte richieste e vengono licenziate per utente, i dati possono impiegare molto tempo per essere caricati.
  • Se ci sono molti utenti, posso facilmente raggiungere il mio limite di chiamate API.

Quindi ora sto pensando che dovrò avere una sorta di processo sul lato server che viene eseguito ogni ora (o qualsiasi altra cosa), recupera gli elementi e li inserisce / li aggiorna in un database. È questo l'approccio giusto? Ci sono altre insidie che devo evitare?

    
posta tacua 18.05.2014 - 06:11
fonte

1 risposta

2

Indipendentemente dal fatto che la tua app web abbia un design a pagina singola o un design a più pagine tradizionale, la tua preoccupazione per i limiti delle chiamate API si applica allo stesso modo.

Se non sei già diventato amico di memcache (o di un servizio simile sulla tua piattaforma).

Non è necessario impostare un cron per l'esecuzione una volta all'ora.

Ogni volta che un utente richiede informazioni che richiedono una chiamata di assistenza di terze parti:

  1. Per le prime chiamate, effettua chiamate API al servizio di terze parti
  2. Dopo aver ricevuto una risposta di successo dalla chiamata all'API, salva il risultato
  3. Imposta il tempo di scadenza della cache su un valore che ha senso per quel tipo di dati (alcuni dati possono essere memorizzati nella cache per una settimana, mentre altri dati dovrebbero essere memorizzati nella cache per alcuni minuti)
  4. Ogni richiesta successiva di dati, controlla se la cache esiste e non è scaduta per quella parte di dati, in caso affermativo, altrimenti, vai al passaggio n. 1

Un vantaggio nell'usare un sistema di caching simile a memcache è la velocità, dato che i dati si trovano in memoria sono ordini di grandezza più veloci di una query di database o di effettuare una chiamata API di terze parti.

    
risposta data 18.05.2014 - 06:58
fonte

Leggi altre domande sui tag