Domanda memcached di base

0

Ho letto sull'hashing distribuito. Ho imparato che l'hashing coerente viene utilizzato per distribuire le chiavi tra le macchine cache. Ho anche imparato che, una chiave è duplicata su cache mutiple per gestire il fallimento degli host della cache. Ma quello che ho trovato su memcached non sembra essere in linea con tutto ciò. Ho letto che tutti i nodi della cache sono indipendenti l'uno dall'altro e che se una cache si interrompe, le richieste vanno al DB. Non si fa menzione della mancanza di cache su un host che porta l'host a dirigere la richiesta verso un altro host che potrebbe tenere la chiave o è più vicina alla chiave.

Per favore, dimmi come si combinano questi due? Memcached è una forma molto preliminare di hashing distribuito che non ha molta sofisticazione?

    
posta Aadith 14.12.2012 - 11:36
fonte

2 risposte

4

Ci sono due parti in questa storia: server memcached e client libmemcached.

I server Memcached sono effettivamente indipendenti l'uno dall'altro. Il server Memcached è solo un efficiente negozio di valori-chiave implementato come in-memory hash table . Ciò che rende memcached distribuito è il client, che nella maggior parte delle implementazioni può connettersi a un pool di server. Le implementazioni tipiche utilizzano hashing coerente , il che significa che quando aggiungi o rimuovi server da / a un pool di server N , devi solo rimappare le chiavi 1 / N . In genere le chiavi sono non duplicate su vari host, poiché memcached non è inteso come archivio persistente e non fornisce alcuna garanzia che il valore persisterà (ad esempio, quando esaurisce la memoria assegnata, il server memcached scende meno recentemente utilizzato (LRU) elementi). Pertanto si presume che l'applicazione debba gestire le chiavi mancanti.

if a cache goes down, requests go to DB

Se ti capita di usare memcached per memorizzare nella cache i risultati delle query DB. Quale è uno dei tanti possibili usi. Memcached è solo un archivio di valori-chiave generico, può essere utilizzato per altri scopi.

    
risposta data 14.02.2013 - 16:01
fonte
0

I server memcached non comunicano tra loro. È responsabilità dei clienti scegliere quale server memcached utilizzare. Questa metodologia riduce il sovraccarico tra i server e non ha bisogno di cercare la chiave da ciascun server. Pertanto memcached è molto veloce non solo utilizzando la RAM. Sebbene molti oggetti memorizzati nella cache verrebbero ignorati durante il riorganizzazione o l'errore del server, l'oggetto memorizzato nella cache potrebbe comunque essere trovato per caso,

per esempio, hai 3 server memcached e ognuno di essi contiene la chiave 1 , 2 , 3 . Quando il server con la chiave 3 è inattivo, i client chiedono la chiave 3 andrebbe al server con la chiave 1 , e il client chiede la chiave 1 andrebbe ancora a recidere con la chiave 1 , si assume che la chiave sia distribuito con dispari e persino ormai.

    
risposta data 15.01.2013 - 06:08
fonte

Leggi altre domande sui tag