Replicación

En esta página, se describe cómo se replican los datos en Cloud Spanner, sus diferentes tipos de réplicas y funciones en las operaciones de escritura y lectura, y las ventajas de la replicación.

Descripción general de la replicación en Cloud Spanner

Cloud Spanner obtiene la replicación de forma automática en el nivel de bytes del sistema de archivos distribuido subyacente en el que se basa (como se describe en la página sobre la vida de las operaciones de lectura y escritura de Cloud Spanner). Cloud Spanner realiza operaciones de escritura de las mutaciones de la base de datos en los archivos de este sistema de archivos, y el sistema de archivos se encarga de replicar y recuperar los archivos cuando falla una máquina o un disco.

Aunque el sistema de archivos distribuido subyacente en el que se basa Cloud Spanner ya proporciona replicación a nivel de bytes, Cloud Spanner también replica datos para proporcionar los beneficios adicionales de la localidad geográfica y la disponibilidad de datos. A alto nivel, todos los datos de Cloud Spanner se organizan en filas. Cloud Spanner crea varias copias o “réplicas” de estas filas, y luego, las almacena en diferentes zonas geográficas. Cloud Spanner usa un esquema de replicación síncrono basado en Paxos, en el que las réplicas de votación (que se explican en detalle a continuación) votan cada solicitud de escritura antes de confirmar la escritura. Esta propiedad de replicación síncrona global te permite leer los datos más actualizados de cualquier réplica de lectura y escritura o de solo lectura de Cloud Spanner.

Cloud Spanner crea réplicas de cada división de la base de datos para vincular los conceptos anteriores con la terminología y los conceptos ingresados en Esquema y modelo de datos. Una división es un conjunto de filas contiguas en una tabla de nivel superior, en la que las filas se ordenan por clave primaria. Todos los datos de una división se almacenan a nivel físico juntos en la réplica, y Cloud Spanner entrega cada réplica por fuera de una zona de falla independiente.

Los conjuntos de divisiones se almacenan y replican con Paxos. Dentro de cada conjunto de réplicas de Paxos, se elige una réplica para que actúe como líder. Las réplicas líderes son responsables de administrar operaciones de escritura, mientras que cualquier réplica de lectura y escritura o solo de lectura puede entregar una solicitud de lectura sin comunicarse con la líder (aunque si se solicita una operación de lectura sólida, por lo general, se consulta a la líder para confirmar que la réplica de solo lectura haya recibido todas las mutaciones recientes). A continuación, se analizan más detalles sobre las funciones de las réplicas líderes y no líderes de las operaciones de lectura y escritura.

Beneficios de la replicación de Cloud Spanner

Como se mencionó antes, los beneficios de la replicación de Cloud Spanner incluyen lo que se menciona a continuación:

  • Disponibilidad de los datos: Tener más copias de tus datos hace que los clientes que desean leerlos tengan mejor acceso a los datos. Además, Cloud Spanner aun puede entregar operaciones de escritura, aunque algunas de las réplicas no estén disponibles, ya que solo la mayoría de las réplicas de votación son necesarias para confirmar una operación de escritura.

  • Localidad geográfica: Tener la capacidad de ubicar datos en diferentes regiones y continentes con Cloud Spanner significa que los datos pueden estar más cerca a nivel geográfico (y acceso más rápido) a los usuarios y servicios que los necesitan.

  • Experiencia de base de datos única: Gracias a la replicación síncrona y la coherencia sólida global, Cloud Spanner se comporta de la misma manera a cualquier escala y ofrece una experiencia de base de datos única.

  • Desarrollador de aplicaciones más sencillo: Las transacciones ACID de Cloud Spanner con coherencia sólida global hace que los programadores no tengan que agregar lógica adicional para lidiar con la coherencia eventual, lo que facilita y agiliza el desarrollo de aplicaciones y su mantenimiento posterior.

Tipos de réplicas

Cloud Spanner tiene tres tipos de réplicas: réplicas de lectura y escritura, réplicas de solo lectura y réplicas testigo. Las instancias de región única usan solo réplicas de lectura y escritura, mientras que las opciones de configuración de instancias multirregión usan una combinación de los tres tipos (para obtener una explicación detallada del motivo, consulta la página sobre por qué usar réplicas de solo lectura y testigos ).

En la siguiente tabla, se resumen los tipos de réplicas de Cloud Spanner y sus propiedades, y en las siguientes secciones, se describe cada tipo con más detalle.

Tipo de réplica Puede votar Puede convertirse en líder Entrega operaciones de lectura
Lectura y escritura
Solo lectura No No
Testigo no No

Lectura y escritura

Las réplicas de lectura y escritura son compatibles con las operaciones de lectura y escritura. Estas réplicas realizan las acciones que se mencionan a continuación:

  • Conservan una copia completa de tus datos.
  • Entregan operaciones de lectura.
  • Pueden votar para confirmar una operación de escritura.
  • Participan en la elección de liderazgo.
  • Son aptas para convertirse en líderes.
  • Son el único tipo usado en instancias de región única.

Solo lectura

Las réplicas de solo lectura solo son compatibles con operaciones de lectura (no con operaciones de escritura). Estas réplicas no votan por líderes ni por la confirmación de operaciones de escritura, por lo que te permiten escalar tu capacidad de lectura sin aumentar el tamaño de quórum necesario para las operaciones de escritura. Las réplicas de solo lectura cumplen con las condiciones que se mencionan a continuación:

  • Solo se usan en instancias multirregionales.
  • Mantienen una copia completa de tus datos, que se replica desde las réplicas de lectura y escritura.
  • Entregan operaciones de lectura.
  • No participan en la votación para confirmar las operaciones de escritura. Por lo tanto, la ubicación de las réplicas de solo lectura nunca contribuye a la latencia de escritura.
  • Por lo general, pueden entregar operaciones de lectura inactivas sin tener que ir y volver a la región líder predeterminada, siempre que el estado de inactividad sea de 15 segundos como mínimo. Las operaciones de lectura sólidas pueden requerir la ida y vuelta a la réplica líder; esta comunicación es manejada por el sistema de forma automática. Obtén más información sobre las operaciones de lectura inactivas y sólidas a continuación.
  • No son aptas para convertirse en líderes.

Testigo

Las réplicas testigo no son compatibles con las operaciones de lectura, pero participan en la votación para confirmar operaciones de escritura. Estas réplicas facilitan la obtención de quórum para las operaciones de escritura sin los recursos de procesamiento y almacenamiento que requieren las réplicas de lectura y escritura para almacenar una copia completa de datos y entregar operaciones de lectura. Las réplicas testigo cumplen con las condiciones que se mencionan a continuación:

  • Solo se usan en instancias multirregionales.
  • No conservan una copia completa de los datos.
  • No entregan operaciones de lectura.
  • Votan para confirmar las operaciones de escritura.
  • Participan en la elección de líder, pero no son aptas para convertirse en líderes.

Funciones de las réplicas en las operaciones de escritura y lectura

En esta sección, se describe la función de las réplicas en las operaciones de escritura y lectura de Cloud Spanner, lo que ayuda a entender por qué Cloud Spanner usa réplicas de solo lectura y testigo en opciones de configuración multirregionales.

En operaciones de escritura

Las solicitudes de escritura del cliente siempre van primero a la réplica líder, incluso si hay una réplica no líder más cercana al cliente o si la réplica líder se encuentra en una ubicación geográfica lejos del cliente.

La réplica líder registra la operación de escritura entrante y la reenvía, en paralelo, a las otras réplicas que son aptas para votar en esa operación de escritura. Cada réplica apta completa su operación escritura y, luego, responde a la líder con un voto sobre si la operación de escritura debe confirmarse. La operación de escritura se confirma cuando la mayoría de las réplicas de votación (o “quórum de escritura”) acuerdan confirmarla. En segundo plano, todas las réplicas restantes (no testigo) registran la operación de escritura. Si una réplica de lectura y escritura o de solo lectura se retrasa en el registro de las operaciones de escritura, puede solicitar los datos faltantes a otra réplica que tenga una copia completa y actualizada de los datos.

En operaciones de lectura

Las solicitudes de lectura del cliente se pueden ejecutar o requerir la comunicación con la réplica líder, según el modo de simultaneidad de la solicitud de lectura.

  • Las operaciones de lectura que son parte de una transacción de lectura y escritura se entregan desde la réplica líder, porque esta mantiene los bloqueos necesarios para aplicar la serializabilidad.

  • Los métodos de operación de lectura única (una operación de lectura fuera del contexto de una transacción) y las operaciones de lectura en transacciones de operaciones de solo lectura pueden requerir la comunicación con la líder, según el modo de simultaneidad de la lectura. Obtén más información sobre estos modos de simultaneidad en Tipos de lectura.

    • Las solicitudes de lectura sólidas pueden ir a cualquier réplica de escritura y lectura o de solo lectura. Si la solicitud va a una réplica no líder, esa réplica debe comunicarse con la líder para ejecutar la operación de lectura.

    • Las solicitudes de operación de lectura inactivas se envían a la réplica de lectura y escritura o de solo lectura disponible más cercana que se ajusta a la marca de tiempo de la solicitud. Esta puede ser la réplica líder si la líder es la réplica más cercana al cliente que emitió la solicitud de lectura.