MySQL Memcached e ad alte prestazioni - 💡 Fix My Ideas

MySQL Memcached e ad alte prestazioni

MySQL Memcached e ad alte prestazioni


Autore: Ethan Holmes, 2019

Memcached è un sistema di caching di oggetti distribuiti che è stato originariamente sviluppato per migliorare le prestazioni di LiveJournal e successivamente è stato utilizzato come strategia di ridimensionamento per un numero di siti ad alto carico. Serve come una grande tabella hash estremamente veloce che può essere distribuita su molti server e accessibile contemporaneamente da più processi. È progettato per essere utilizzato praticamente per qualsiasi esigenza di memorizzazione nella cache di back-end e, per le applicazioni Web ad alte prestazioni, è un ottimo complemento per un database come MySQL.

In un ambiente tipico, uno sviluppatore web potrebbe utilizzare una combinazione di caching a livello di processo e la cache di query MySQL incorporata per ottenere quel tocco extra di prestazioni da un'applicazione. Il problema è che la memorizzazione nella cache in-process è limitata al processo Web in esecuzione su un singolo server. In una configurazione con bilanciamento del carico, ciascun server mantiene la propria cache, limitando l'efficienza e le dimensioni disponibili della cache. Allo stesso modo, la cache di query di MySQL è limitata al server su cui è in esecuzione il processo MySQL. Anche la cache delle query è limitata in quanto può memorizzare solo i risultati delle righe nella cache. Con memcached puoi configurare un numero di cache server in grado di memorizzare qualsiasi tipo di oggetto serializzato e questi dati possono essere condivisi da tutti i server web loadbalanced. Fantastico, no?

Per configurare un server memcached, è sufficiente scaricare il demone ed eseguirlo con alcuni parametri. Dal sito web memcached:

Innanzitutto, si avvia il daemon memcached su tutte le macchine di riserva che si hanno. Il demone non ha un file di configurazione, solo alcune opzioni della riga di comando, solo 3 o 4 di cui probabilmente userai:

# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211

Questo viene avviato come un demone, utilizzando 2 GB di memoria e ascoltando su IP 10.0.0.40, porta 11211. Poiché un processo a 32 bit può indirizzare solo 4 GB di memoria virtuale (in genere molto meno, a seconda del sistema operativo), se si dispone di un server a 32 bit con 4-64 GB di memoria utilizzando PAE è possibile eseguire più processi sulla macchina, ognuno con 2 o 3 GB di memoria.

È semplice come diventa. Non c'è una vera configurazione. Nessuna autenticazione. È solo un gigantesco tavolo hash. Ovviamente, lo configureresti su una rete privata, non indirizzabile. Da lì, il lavoro di interrogare e aggiornare la cache dipende completamente dal progettista dell'applicazione. Ti sono concesse le funzioni di base di set, get e delete. Ecco un semplice esempio in PHP:

$ memcache = new Memcache; $ memcache-> addServer ('10 .0.0.40 ', 11211); $ memcache-> addServer ('10 .0.0.41 ', 11211);

$ value = "Dati da memorizzare nella cache";

$ memcache-> set ('thekey', $ value, 60); echo "Memorizzazione nella cache per 60 secondi: valore $
“;

$ recuperato = $ memcache-> get ('thekey'); echo "Recupera: $ recuperato
“;

La libreria PHP si occupa dello sporco lavoro di serializzazione di qualsiasi valore passato alla cache, in modo da poter inviare e recuperare array o persino oggetti di dati completi.

Nel livello dati dell'applicazione, invece di colpire immediatamente il database, è ora possibile interrogare prima memcached. Se l'oggetto viene trovato, non è necessario colpire il database e assemblare l'oggetto dati. Se la chiave non viene trovata, si selezionano i dati rilevanti dal database e si memorizza l'oggetto derivato nella cache. Allo stesso modo, si aggiorna la cache ogni volta che l'oggetto dati viene modificato e aggiornato nel database. Supponendo che la tua API sia ben strutturata, è necessario apportare alcune modifiche per modificare drasticamente la scalabilità e le prestazioni della tua applicazione.

Ho collegato ad alcune risorse di seguito dove puoi trovare ulteriori informazioni sull'utilizzo di memcached nella tua applicazione. Oltre alla documentazione sul sito web memcached, Todd Hoff ha compilato un elenco di articoli su memcached e ha riassunto diverse tecniche di performance memcached. È uno strumento piuttosto versatile. Per quelli di voi che hanno usato memcached, darci un commento nei commenti e condividere i vostri suggerimenti e trucchi.

Strategie Memcached per l'utilizzo di Memcached e MySQL Better Together Tutorial Memcached e MySQL (PDF)



Si Può Essere Interessati

Intervista macchina da scrivere USB

Intervista macchina da scrivere USB


Intervista motociclistica con olio vegetale

Intervista motociclistica con olio vegetale


Maker Faire New York: 10.000 interviste sui quaderni

Maker Faire New York: 10.000 interviste sui quaderni


5, 4, 3, 2, 1 cose su Chris Hackett

5, 4, 3, 2, 1 cose su Chris Hackett






Messaggi Recenti