Configurazione ElastiCache del client per un bilanciamento efficiente del carico (Memcached) - Amazon ElastiCache

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione ElastiCache del client per un bilanciamento efficiente del carico (Memcached)

Nota

Questa sezione si applica ai cluster Memcached a più nodi progettati autonomamente.

Per utilizzare in modo efficace più nodi ElastiCache Memcached, devi essere in grado di distribuire le chiavi della cache tra i nodi. Un modo semplice per eseguire il bilanciamento del carico di un cluster con n nodi consiste nel calcolare l'hash della chiave dell'oggetto ed eseguire il comando mod sul risultato per n - hash(key) mod n. Il valore risultante (da 0 a n-1) è il numero del nodo in cui inserisci l'oggetto.

Questo approccio è semplice ed efficace, purché il numero dei nodi (n) sia costante. Quando aggiungi o rimuovi un nodo dal cluster, il numero di chiavi da spostare corrisponde tuttavia a (n - 1) / n (dove n è il nuovo numero di nodi). Con questo approccio, il numero di chiavi da spostare è pertanto maggiore, con un conseguente numero elevato di mancati riscontri nella cache iniziali, specialmente man mano che aumenta il numero dei nodi. Con il dimensionamento da 1 a 2 nodi, viene spostato un numero di chiavi pari a (2-1)/2 (50 percento), ovvero il caso migliore. Con il dimensionamento da 9 a 10 nodi, viene spostato un numero di chiavi pari a (10-1)/10 (90 percento). In caso di un dimensionamento dovuto a un picco nel traffico, è bene evitare un elevato numero di mancati riscontri nella cache, in quanto ciò causerebbe hit nel database, già sovraccaricato dai picchi di traffico.

La soluzione a tale problema è rappresentata da un hashing coerente, L’hashing coerente utilizza un algoritmo in modo tale che quando un nodo viene aggiunto o rimosso da un cluster, il numero di chiavi da spostare è circa 1/n (dove n è il nuovo numero di nodi). Passando da 1 a 2 nodi, viene spostato un numero di chiavi pari a 1/2 (50 percento), ovvero il caso peggiore. Passando da 9 a 10 nodi, viene spostato un numero di chiavi pari a 1/10 (10 percento).

Sei tu, in qualità di utente, che controlli l'algoritmo di hashing utilizzato per il cluster a più nodi. Ti consigliamo di configurare i client in modo da utilizzare un hashing coerente. Fortunatamente, sono disponibili numerose librerie client Memcached nei linguaggi più comuni in grado di implementare l'hashing coerente. Consulta la documentazione della libreria che utilizzi per verificare se supporta l'hashing coerente e ottenere informazioni su come implementarlo.

Se lavori in JavaPHP, o. NET, ti consigliamo di utilizzare una delle librerie ElastiCache client Amazon.

Hashing coerente in Java

Il client Java ElastiCache Memcached si basa sul client Java open source spymemcached, che dispone di funzionalità di hashing coerenti integrate. La libreria include una classe che implementa un hashing coerente. KetamaConnectionFactory Per impostazione predefinita, l'hashing coerente è disattivato in spymemcached.

Per ulteriori informazioni, consultate la KetamaConnectionFactory documentazione all'indirizzo. KetamaConnectionFactory

Hashing coerente PHP con Memcached

Il PHP client ElastiCache Memcached è un wrapper della libreria Memcached integrata. PHP Per impostazione predefinita, l'hashing coerente è disattivato dalla libreria Memcached. PHP

Per attivare l'hashing coerente, utilizza il seguente codice.

$m = new Memcached(); $m->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);

Oltre al codice precedente, ti consigliamo anche di attivare memcached.sess_consistent_hash nel file php.ini.

Per ulteriori informazioni, consulta la documentazione sulla configurazione in fase di esecuzione per Memcached all'indirizzo http://php.net/manual/en/memcached.configuration.php. PHP Nota in particolare il parametro memcached.sess_consistent_hash.

Utilizzo di hashing coerente. NETcon Memcached

Il ElastiCache Memcached. NETil client è un involucro di Enyim Memcached. Per impostazione predefinita, l'hashing coerente è attivato dal client Enyim Memcached.

Per maggiori informazioni, consulta la documentazione in /wiki/ -Configuration#. memcached/locator https://github.com/enyim/ EnyimMemcached MemcachedClient user-content-memcachedlocator