2012-05-26 14 views
32

Sono un principiante nell'imparare memcached. Il server memcached mi ha confuso di più. Posso vederlo come un singolo server come il web server? Sono anche confuso sulla relazione tra il server memcached e il client, si trovano in computer diversi?Cos'è il server memcached

risposta

49

Sono d'accordo con la maggior parte delle cose @phihag ha risposto, ma devo chiarire alcune cose.

Memcached memorizza i dati in base a una chiave (phihag lo ha chiamato id, da non confondere con gli ID del database). I dati possono essere di varie dimensioni in modo da poter memorizzare piccoli bit (come 1 record estratto dal database) o è possibile memorizzare enormi blocchi di dati (come centinaia di record o intere pagine html).

Memcached non è tipicamente utilizzato sulla stessa macchina del server delle applicazioni, la ragione di questo è perché è progettato per essere utilizzato con TCP (sarebbe accessibile tramite prese se fosse progettato per funzionare allo stesso server) ed è stato progettato come server di pooling.

La parte di pool è interessante: è possibile avere 10 macchine che eseguono Memcached assegnando un massimo di 10 GB di ram per questo scopo. 10 * 10 = spazio RAM di 100 GB.

Quando si scrive un valore in Memcached, solo uno (in modo casuale o tramite alcuni algoritmi) dei server lo memorizza. Quando provi a leggere un valore da Memcached, solo il server che lo ha memorizzato lo invierà a te.

Quindi, in effetti, è possibile mettere tutto il database/memcached/application/fileserver sulla stessa macchina e in genere lo si fa per la sandbox di sviluppo. Ma puoi anche aggiungere a e metterli su una macchina separata e qualsiasi altra combinazione dei due.

Se è necessario un solo server Memcached, sarà probabilmente necessario ospitarlo sullo stesso computer del codice dell'applicazione.

Se si inizia a utilizzare un server cache front-end come la vernice o si configura NginX come server cache front-end, sarà necessario configurare alcuni server Memcached per archiviare i dati che questi server cache front-end stanno memorizzando nella cache .

Se si distribuisce il database in più server e file server in una rete CDN, ciò significa che l'applicazione gestisce una grande quantità di dati in un breve periodo di tempo, quindi è necessario molto spazio sulla RAM che non potrebbe essere disponibile in un singolo server applicazioni.

E poiché l'estensione di un pool di memoria per un server Memcached è semplice come aggiungere l'IP del nuovo server all'elenco, si ridimensionerà orizzontalmente come in molti server (che è l'uso tipico di Memcached).

+2

Sorprendente risposta. Mi aiuta davvero molto. Grazie e anche @phihag. –

+0

@AllenJee potresti per favore contrassegnare la risposta come accettata? –

+0

in che modo il server Memcached esegue il backup dei dati? – trillions

22

Il server memcached è un programma che gestisce i dati che memorizza memcached (da non confondere con una macchina di , che può anche essere chiamato server). In teoria, può essere eseguito su qualsiasi computer. Tuttavia, in genere viene eseguito sullo stesso computer su cui viene eseguita l'applicazione principale.

L'applicazione utilizza quindi il client memcached per parlare con il server memcached e chiedere il contenuto memorizzato nella cache. Questo è più veloce di interrogazione dei dati da un database tradizionale, perché

  1. Un server memcached solo le mappe ID per i valori, e non ha bisogno di eseguire la scansione di un'intera tabella
  2. Il protocollo memcached è più semplice. Il server non ha bisogno di analizzare SQL o così, e il client non ha bisogno di crearlo.
  3. Poiché memcached non richiede l'affidabilità di un database (si pensi a backup, isolamento dei guasti, clustering, sicurezza, ecc.), Può essere eseguito sullo stesso computer su cui viene eseguita l'applicazione. Mentre è possibile eseguire un database sullo stesso computer su cui vengono eseguite le applicazioni, ciò è disapprovato per i motivi sopra esposti.
+2

Grazie mille! L'applicazione comunica con il suo client memcached, quindi il client richiede il server memcached per ottenere i dati. In genere, l'applicazione, il client memcached e il server memcached si trovano sullo stesso computer. E diversi client memcached possono comunicare con altri server memcached che sono in esecuzione su macchine diverse in base al loro protocollo. È il sopra giusto? –

+1

Sì, è proprio così. – phihag

+1

Posso dividerli in due parti? Uno è il server Web che include l'applicazione, il client memcached e il server memcached. L'altro è il server db. –