Replicación

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

Descripción general

Spanner se replica automáticamente a nivel de bytes. Como se describe en Ciclo de las operaciones de lectura y escritura de Spanner, aprovecha esta capacidad en el sistema de archivos subyacente en el que se basa. Spanner escribe 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 Spanner ya proporciona replicación a nivel de bytes, Spanner también replica los datos para proporcionar los beneficios adicionales de la disponibilidad de datos y la localidad geográfica. En general, todos los datos de Spanner se organizan en filas. Spanner crea varias copias, o “réplicas”, de estas filas y, luego, las almacena en diferentes áreas geográficas. Spanner usa un esquema de replicación síncrono basado en Paxos, en el que las réplicas de votación votan por cada solicitud de escritura antes de que se confirme la operación de escritura. Esta propiedad de la 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 Spanner.

Spanner crea réplicas de cada división de la base de datos. Una división contiene un rango de filas contiguas, en el que las filas se ordenan según la clave primaria. Todos los datos de una división se almacenan de forma física juntos en la réplica, y Spanner entrega a cada réplica desde una zona de falla independiente. Para obtener más información, consulta Acerca de los esquemas.

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).

Beneficios de la replicación de Spanner

Los beneficios de la replicación de Spanner incluyen los siguientes:

  • 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, Spanner aún puede entregar operaciones de escritura, incluso si algunas de las réplicas no están disponibles, ya que solo se requiere la mayoría de las réplicas de votación para confirmar una operación de escritura.

  • Localidad geográfica: Tener la capacidad de colocar datos en diferentes regiones y continentes con Spanner significa que los datos pueden estar geográficamente más cerca y, por lo tanto, tener un acceso más rápido a los usuarios y servicios que los necesitan.

  • Experiencia de base de datos única: Spanner puede entregar una experiencia única de base de datos gracias a su replicación síncrona y su coherencia sólida global.

  • Desarrollo de aplicaciones más sencillo: Debido a que Spanner cumple con los requisitos de ACID y ofrece una coherencia sólida global, los desarrolladores que trabajan con Spanner no tienen que agregar lógica adicional a sus aplicaciones para lidiar con la coherencia eventual, lo que hace que el desarrollo de aplicaciones y el mantenimiento posterior sea más rápido y fácil.

Tipos de réplicas

Spanner tiene tres tipos de réplicas: réplicas de lectura y escritura, réplicas de solo lectura y réplicas testigo. Las regiones y topologías de replicación que forman configuraciones de instancias base son fijas. La configuración básica de las instancias regionales solo usa réplicas de lectura y escritura, mientras que los parámetros de configuración de instancias multirregionales básicas usan una combinación de los tres tipos de réplicas. Puedes crear configuraciones de instancias personalizadas y agregar réplicas de solo lectura adicionales para la configuración de instancias regionales y multirregionales.

En la siguiente tabla, se resumen los tipos de réplicas de Spanner y sus propiedades:

Tipo de réplica Puede votar Puede convertirse en líder Entrega operaciones de lectura Puedes configurar la réplica de forma manual
Lectura y escritura No
Solo lectura No no *
Testigo no no No

* Para obtener más información, consulta cómo crear una instancia con una configuración de instancia personalizada.

Réplicas de 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.

Réplicas de solo lectura

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

  • Mantén una copia completa de tus datos, que se replica desde las réplicas de lectura y escritura.
  • Entregan operaciones de lectura.
  • No participes en la votación para confirmar 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, si es la réplica más cercana a tu aplicación, la réplica de solo lectura puede entregar lecturas inactivas sin necesidad de un recorrido de ida y vuelta a la región líder predeterminada, siempre que el estado de inactividad sea de al menos 15 segundos. También puedes usar lecturas dirigidas para enrutar transacciones de solo lectura y lecturas individuales a un tipo de réplica o región específicos en una configuración de instancia multirregional. Para obtener más información, consulta Lecturas dirigidas.

    Las operaciones de lectura sólidas pueden requerir un recorrido de ida y vuelta a la réplica líder. El recorrido de ida y vuelta sirve solo para negociar la marca de tiempo, no para enviar los datos reales del líder. La negociación de marca de tiempo es una operación eficiente en la CPU a la cabeza y, por lo general, los datos ya están en camino. El sistema maneja automáticamente esta comunicación.

    Para obtener más información sobre las lecturas inactivas y sólidas, consulta la sección En operaciones de lectura.

  • No son aptas para convertirse en líderes.

Puedes crear una configuración de instancia regional o multirregional personalizada y agregar réplicas opcionales de solo lectura para escalar las lecturas y admitir lecturas inactivas de baja latencia. Puedes agregar ubicaciones que aparezcan en Región opcional como una réplica opcional de solo lectura. Si no ves la ubicación de réplica de solo lectura que elegiste, puedes solicitar una nueva región de réplica de solo lectura opcional. Ten en cuenta que no puedes cambiar la topología de replicación de las configuraciones de instancias base, que son fijas.

Todas las réplicas opcionales de solo lectura están sujetas a la capacidad de procesamiento y los costos de almacenamiento. Además, agregar réplicas de solo lectura a una configuración de instancia personalizada no cambia los ANS de Spanner de la configuración de instancias. Si eliges agregar una réplica de solo lectura a un continente que se encuentra en un continente diferente al de la región líder, te recomendamos que agregues un mínimo de dos réplicas de solo lectura. Esto ayuda a mantener una latencia de lectura baja en caso de que una de las réplicas de solo lectura no esté disponible.

Cuando agregas réplicas de solo lectura, la réplica líder experimenta más carga de replicación, lo que podría afectar el rendimiento. Como práctica recomendada, prueba primero las cargas de trabajo de rendimiento en instancias que no sean de producción en la configuración de instancias personalizadas. Puedes consultar el panel de comparativas de latencia y capacidad de procesamiento entre regiones para conocer la mediana de los datos de latencia entre regiones. Por ejemplo, si creas una configuración de instancia personalizada con la configuración base multirregional eur6 y una réplica de solo lectura opcional en us-east1, la latencia de lectura sólida esperada para un cliente en us-east1 es de alrededor de 100 milisegundos debido al tiempo de ida y vuelta a la región líder en europe-west4. Las lecturas inactivas con una inactividad suficiente no implican el recorrido de ida y vuelta y, por lo tanto, son mucho más rápidas. También puedes usar la métrica Latencia por tipo de transacción para ver los datos de latencia de las transacciones de tipo de lectura y escritura y de solo lectura.

Para obtener instrucciones, consulta Crea una configuración de instancia personalizada.

Réplicas 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 mantengas 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.

La función 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 Spanner, lo que es útil para comprender por qué Spanner usa réplicas testigo en configuraciones multirregionales.

En operaciones de escritura

Las solicitudes de escritura del cliente siempre se procesan primero en la réplica líder, incluso si hay una réplica no líder que se encuentra más cerca del cliente o si la réplica líder se encuentra geográficamente distante del cliente. Si usas una configuración de instancias multirregional y la aplicación cliente se encuentra en una región no líder, Spanner usa el enrutamiento adaptado al líder para enrutar las transacciones de lectura y escritura de forma dinámica a fin de reducir la latencia en la base de datos. Para obtener más información, consulta Enrutamiento adaptado al líder.

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.