Sto usando spymemcached & HashAlgorithm.KETAMA_HASH per connettersi a un pool di memcached di 5 nodi.Come gestire i nodi di memorizzazione memcached quando si utilizza spymemcached e HashAlgorithm.KETAMA_HASH
mia comprensione è quando usiamo un algoritmo di hashing coerente, come, quando un nodo è giù, non abbiamo bisogno di preoccuparsi in quanto verrà ridistribuito la chiave (con min. Impatto)
Che cosa succede se quando il nodo down-ed entrerà nel pool. Cosa devo fare?
Devo verificare che i dati non aggiornati debbano essere rimossi? O il mio programma dovrebbe avere un trattamento speciale per questo caso?
La mia comprensione è che devo svuotare tutti i dati obsoleti in tutti i nodi. Perché? Perché alcuni client potrebbero vedere il nodo down-ed è attivo, ma alcuni client potrebbero ancora supporre che il nodo sia inattivo. Pertanto, dato che i client potrebbero hash la chiave in un nodo diverso, potrebbe verificarsi un'incoerenza dei dati. Ma questo problema è difficile a meno che non abbiamo un modo per bloccare tutti i nodi memcached ed eseguire il flush - per evitare condizioni di competizione. – Howard
In base alla mia opinione, penso che sia ancora sicuro svuotare il nodo down-ed. È pulito, se c'è una richiesta al nodo, risulterà un errore, aggiungendo nuove e nuove informazioni. Se il client pensa che sia inattivo, eseguirà un hash su un altro nodo, risultando anche in una mancanza. Se ciò accade, entrambi i nodi hanno la chiave "pippo" per esempio. Quando il nodo down-down torna online a quel client, è necessario svuotarlo nuovamente. Ecco di più su questo: http://www.caiapps.com/duplicate-key-problem-in-memcache-php/ –
sì, ma quello che hai detto è valido solo quando hai un client singolo ma più server. non c'è modo di coordinare client diversi per utilizzare lo stesso set di server memcached in un dato momento (si supponga di utilizzare un hashing coerente). – Howard