Sto usando ElastiCache per Redis. Perché le richieste di lettura del mio client Redis vengono sempre lette o reindirizzate al nodo principale di uno shard?

3 minuti di lettura
0

Sto usando Amazon ElastiCache per Redis. Perché le richieste di lettura del mio client Redis vengono sempre lette o reindirizzate al nodo principale di uno shard?

Risoluzione

Qualsiasi nodo in un cluster Redis può ricevere richieste dai client Redis. Quando un client invia una query di lettura/scrittura a un nodo di replica, il nodo analizza la richiesta per confermare se si tratta di un'operazione a chiave singola o multipla che appartiene allo stesso slot hash dello shard. Il comportamento predefinito dei nodi di replica nei cluster abilitati alla modalità cluster consiste nel reindirizzare tutte le richieste di lettura/scrittura del client a un nodo primario autorevole dello shard che appartiene allo slot hash della chiave. Il nodo di replica serve la richiesta di lettura solo se lo shard appartiene allo slot hash e il client avvia un comando di sola lettura. Ciò significa che il nodo di replica elabora la richiesta solo se readonly viene emessa dal client prima della richiesta. Altrimenti, la richiesta viene reindirizzata al nodo primario dello shard a cui appartiene lo slot hash.

Esempio

  1. Accedi al tuo cluster per impostare una chiave.
172.31.21.72:6379> set key8 "This is testing for readonly"
-> Redirected to slot [13004] located at 172.31.21.72:6379
OK
172.31.21.72:6379>
  1. Connettiti a un nodo di replica.

Nell'esempio seguente, il comando readonly non viene inviato e la richiesta viene reindirizzata a un nodo primario.

172.31.30.175:6379> info replication
 # Replication
 role:slave
 master_host:172.31.21.72
 master_port:6379
 master_link_status:up
 172.31.30.175:637> CLUSTER KEYSLOT key8
 (integer) 13004
 172.31.30.175:637> get key8
 (error) MOVED 13004 172.31.21.72:6379
 172.31.30.175:637> get key8
 -> Redirected to slot [13004] located at 172.31.21.72:6379
 "This is testing for readonly"
 172.31.21.72:6379>

Nota: L'errore MOVED mostrato nell'esempio precedente si verifica quando il client del cluster Redis non è a conoscenza del cluster e non è in grado di gestire le richieste di reindirizzamento al nodo primario. Per ulteriori informazioni sull'errore MOVED, fare riferimento alle specifiche del cluster Redis - Reindirizzamento e risharding sul sito Web Redis.io.

Nell'esempio seguente, il comando readonly viene inviato per primo, quindi il nodo di replica elabora la richiesta anziché reindirizzarla a un nodo primario.

172.31.30.175:6379> readonly
OK
172.31.30.175:6379> get key8
"This is testing for readonly"
172.31.30.175:6379>

Il comando readonly deve essere emesso quando il client si connette a un nodo per la prima volta. Il comando è attivo solo finché il client non legge le chiavi dallo stesso nodo. Se il client si connette a un altro nodo di replica nello stesso shard o in uno shard diverso, potrebbe essere necessario emettere un nuovo comando di sola lettura.


AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa