Estoy usando ElastiCache para Redis. ¿Por qué las solicitudes de lectura de mi cliente Redis siempre se leen o se redirigen al nodo principal de un fragmento?

3 minutos de lectura
0

Estoy usando Amazon ElastiCache para Redis. ¿Por qué las solicitudes de lectura de mi cliente Redis siempre se leen o se redirigen al nodo principal de un fragmento?

Resolución

Cualquier nodo de un clúster de Redis puede recibir consultas de los clientes de Redis. Cuando un cliente envía una consulta de lectura/escritura a un nodo de réplica, el nodo analiza la solicitud para confirmar si se trata de una operación de clave única o de múltiples claves que pertenece al mismo intervalo de hash del fragmento. El comportamiento predeterminado de los nodos de réplica en los clústeres habilitados en modo clúster es redirigir todas las solicitudes de lectura/escritura de los clientes a un nodo principal autorizado del fragmento que pertenece a la ranura de hash de la clave. El nodo de réplica solo envía la solicitud de lectura si ese fragmento pertenece a la ranura de hash y el cliente inicia un comando de readonly. Esto significa que el nodo de réplica procesa la solicitud solo si el cliente emite la función de readonly antes de la solicitud. De lo contrario, la solicitud se redirige al nodo principal del fragmento al que pertenece la ranura de hash.

Ejemplo

1.Inicie sesión en su clúster para configurar una clave.

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>

2.Conéctese a un nodo de réplica.

En el siguiente ejemplo, el comando readonly no se envía y la solicitud se redirige a un nodo principal.

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:**El error MOVED que se muestra en el ejemplo anterior se produce cuando el cliente del clúster de Redis no reconoce los clústeres y no puede gestionar las solicitudes de redireccionamiento al nodo principal. Para obtener más información sobre el error MOVED, consulte la especificación del clúster de Redis: Redirección y refragmentación en el sitio web de Redis.io.

En el siguiente ejemplo, el comando readonly se envía primero, por lo que el nodo de réplica procesa la solicitud en lugar de redirigirla a un nodo principal.

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

El comando readonly debe ejecutarse cuando el cliente se conecte a un nodo por primera vez. El comando solo está activo hasta que el cliente lea las claves del mismo nodo. Si el cliente se conecta a otro nodo de réplica en el mismo fragmento o en uno diferente, es posible que tengas que emitir un nuevo comando de readonly.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años