Acerca del servicio de descubrimiento automático

En esta página se ofrece una descripción general del servicio de descubrimiento automático de Memorystore para Memcached. Para saber cómo acceder al servicio de descubrimiento automático y conectarte a él, consulta Usar el servicio de descubrimiento automático.

El servicio de detección automática es una forma programática de que los clientes se adapten automáticamente a la adición y eliminación de direcciones IP de nodos que se produce cuando escalas tu instancia de Memcached.

Si no usas el servicio de detección automática, debes gestionar manualmente la lista de direcciones IP de los nodos en tu cliente de memcached durante el escalado. Gestionar manualmente la lista de direcciones IP de los nodos añade una sobrecarga adicional, ya que debes asegurarte de que los clientes se actualicen a medida que la instancia se amplía y se reduce. El descubrimiento automático te ayuda a automatizar este trabajo.

Debe usar el endpoint de detección automática para el fin previsto y no para ejecutar comandos de Memcached, como get, set y delete.

Descripción general de la arquitectura del servicio de descubrimiento automático

Memorystore para Memcached expone el servicio de descubrimiento automático mediante un endpoint de descubrimiento. El endpoint de descubrimiento es una dirección IP dedicada de tu instancia que devuelve una lista actual de nodos de tu instancia de Memcached. Cada instancia de Memorystore para Memcached tiene un endpoint de descubrimiento único. Una vez creada la instancia, la dirección IP del endpoint de descubrimiento no cambia.

Para obtener la información de detección automática de la instancia, consulta el endpoint de detección. El endpoint de descubrimiento devuelve la siguiente información:

Campo Descripción Tipo de datos Ejemplo
ID de versión de configuración ID que se incrementa con cada cambio en la lista de nodos. Entero 9
Lista de nodos Devuelve una lista de los nodos actuales y sus direcciones IP. Cadena node1-ip|node1-ip|node1-port node2-ip|node2-ip|node2-port

Memorystore para Memcached expone directamente el endpoint de descubrimiento, pero el descubrimiento automático también debe estar disponible en tus bibliotecas de cliente. Hay dos formas de habilitar la detección automática en tus clientes:

  1. Usa una biblioteca de cliente que admita el descubrimiento automático.

    • Golang fork del cliente de memcached.
  2. Añade manualmente la lógica de detección automática a tu biblioteca de cliente.

Comportamiento del servicio de descubrimiento automático

El servicio de descubrimiento automático acaba siendo coherente. Puede haber un retraso (del orden de segundos) mientras la lista de nodos de detección automática se pone al día con la configuración actual del clúster después de una operación de escalado.

La coherencia final, además de la naturaleza distribuida del servicio, puede producir el siguiente comportamiento en los clientes. La lógica del cliente debe diseñarse para tener en cuenta este comportamiento:

  • El mismo cliente puede recibir dos respuestas de descubrimiento automático diferentes del servicio de descubrimiento automático en dos consultas independientes (mientras el servicio sea incoherente). Sin embargo, una de las respuestas tiene un Configuration version ID más alto que los clientes pueden usar para gestionar las respuestas.

  • Dos clientes pueden recibir dos respuestas de detección automática diferentes del servicio (mientras el servicio es incoherente), pero no tienen forma de saber cuál es la más reciente, ya que los clientes no se comunican entre sí. Mientras se encuentre en este estado, la instancia puede devolver errores de caché. En este caso, los clientes tienen que esperar a que el servicio de descubrimiento automático sea coherente.

Siguientes pasos