A che punto diventa necessario il caching per un'applicazione web?

3

Sto considerando l'architettura per un'applicazione web. Sarà un'applicazione a singola pagina che si aggiorna automaticamente ogni volta che l'utente seleziona informazioni diverse su diversi moduli disponibili nella pagina.

Stavo pensando che non dovrebbe essere opportuno fare affidamento sul browser dell'utente per interpretare correttamente le informazioni e aggiornare la vista, quindi invierò le scelte dell'utente al server, quindi recupererò i dati, li rimando indietro al browser e aggiorna la vista.

C'è una tabella con circa 10.000 righe in un database MySQL a cui si accede abbastanza spesso, come una volta ogni 5-30 secondi per ogni utente. Mi aspetto 200-300 utenti simultanei contemporaneamente. Ho letto che un database relazionale ben progettato con query semplici non è niente per un RDBMS da gestire, davvero, ma vorrei comunque mantenere le cose veloci per il client.

Questo dovrebbe essere anche un problema per me al momento? A che punto sarebbe utile iniziare a utilizzare un servizio di caching separato come Memcached o Redis, o sarebbe addirittura necessario?

So che MySQL memorizza nella cache le query più diffuse ei risultati, sarebbe sufficiente?

    
posta Nathan Lutterman 23.10.2013 - 01:26
fonte

1 risposta

9

Hai bisogno del caching quando hai un problema che può essere risolto con il caching. Quel problema potrebbe essere l'uso eccessivo del processore sul DB; se è così, il caching di MySQL ti aiuterà molto, ma forse non abbastanza, dipende da cosa sta succedendo. Oppure potrebbe essere che la connessione di rete dalle istanze dell'applicazione al DB si sovraccarichi.

In tal caso, il caching di MySQL non farà molto per te; memorizzerà la risposta nella cache ma sarà comunque necessario andare al database per ottenerlo. Potrebbe essere che il collo di bottiglia sia il processore del server, o anche la larghezza di banda tra il server e il mondo esterno, o l'utilizzo della memoria, il numero di thread o il numero di handle o un numero qualsiasi di altre cose, alcune delle quali non possono essere risolte da caching a tutti. L'utilizzo della memoria potrebbe peggiorare.

Donald Knuth è quotato molto nei circoli di programmazione. Spesso male o invalidamente. Ma nel caso di " L'ottimizzazione prematura è la radice di tutto il male", aveva almeno un punto, se leggermente drammaticamente dichiarato.

Quando pensi all'architettura generale della tua nuova app, pensa a due cose: la segnalazione e l'estensibilità. Ci sono molti framework di caching in stile AOP che possono memorizzare i risultati di qualsiasi metodo; fino a quando l'accesso al database sarà ben isolato, sarà abbastanza estensibile da richiedere più tardi la questione del caching.

La domanda che dovresti porci ora è questa: come faccio a sapere, il giorno in cui ho ottenuto il techcrunch per la prima volta, e la mia applicazione o il database o la rete non possono far fronte al carico, quale livello dell'applicazione è il collo di bottiglia? , quindi posso ripararlo?

Dovresti davvero cercare metriche e strutture di reporting molto prima di fare domande sulla memorizzazione nella cache.

    
risposta data 23.10.2013 - 02:02
fonte

Leggi altre domande sui tag