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 lecturas y escrituras, así como las ventajas de la replicación.
Información general
Spanner replica automáticamente a nivel de byte. Como se describe en Cómo funcionan las lecturas y escrituras de Spanner, aprovecha esta función del sistema de archivos subyacente en el que se basa. Spanner escribe las mutaciones de la base de datos en 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 byte, Spanner también replica los datos para ofrecer las ventajas adicionales de la disponibilidad de los datos y la localidad geográfica. A grandes rasgos, todos los datos de Spanner se organizan en filas. Spanner crea varias copias, o réplicas, de estas filas y, a continuación, las almacena en diferentes zonas geográficas. Spanner usa un esquema de replicación síncrono basado en Paxos, en el que las réplicas de voto votan cada solicitud de escritura antes de que se confirme 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 Spanner.
Spanner crea réplicas de cada división de la base de datos. Una división contiene un intervalo de filas contiguas, donde las filas se ordenan por clave principal. Todos los datos de una división se almacenan físicamente juntos en la réplica y Spanner sirve cada réplica desde una zona de fallos independiente. Para obtener más información, consulta la descripción general de los esquemas.
Un conjunto de divisiones se almacena y replica mediante el uso de Paxos. En cada conjunto de réplicas de Paxos, se elige una réplica para que actúe como líder. Las réplicas de líder gestionan las escrituras, mientras que las réplicas de lectura y escritura o de solo lectura pueden atender una solicitud de lectura sin comunicarse con el líder. Si se solicita una lectura sólida, normalmente se consulta al líder para asegurarse de que la réplica de solo lectura haya recibido todas las mutaciones recientes. Para monitorizar la tasa de cambio y la cantidad de datos que se replican de tu réplica principal a las réplicas entre regiones de la configuración de tu instancia, consulta Monitorizar la replicación de datos.
Ventajas de la replicación de Spanner
Estas son algunas de las ventajas de la replicación de Spanner:
Disponibilidad de los datos: si tienes más copias de tus datos, los clientes que quieran leerlos podrán acceder a ellos más fácilmente. Además, Spanner puede seguir sirviendo escrituras aunque algunas de las réplicas no estén disponibles, ya que solo se necesita una mayoría de réplicas de voto para confirmar una escritura.
Localidad geográfica: la posibilidad 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, ser más rápidos de acceder para los usuarios y servicios que los necesiten.
Experiencia de una sola base de datos: Spanner puede ofrecer una experiencia de una sola base de datos gracias a su replicación síncrona y a su coherencia sólida global.
Desarrollo de aplicaciones más sencillo: como Spanner cumple el estándar ACID y ofrece una coherencia sólida global, los desarrolladores que trabajan con Spanner no tienen que añadir lógica adicional a sus aplicaciones para gestionar la coherencia final, lo que hace que el desarrollo de aplicaciones y el mantenimiento posterior sean más rápidos y sencillos.
Tipos de réplica
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 las topologías de replicación que forman las configuraciones de instancias base son fijas:
- Las configuraciones de instancias de una sola región (regionales) básicas solo usan réplicas de lectura y escritura.
- Las configuraciones de instancias birregionales básicas usan réplicas de lectura y escritura y de testigo.
- Las configuraciones de instancias multirregión base usan una combinación de los tres tipos de réplica.
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 | Puede ofrecer lecturas | Puede configurar la réplica manualmente |
---|---|---|---|---|
Lectura y escritura | sí | sí | sí | no |
Solo lectura | no | no | yes | Sí* |
Testigo | sí | 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 admiten tanto lecturas como escrituras. Estas réplicas:
- Mantienen una copia completa de los datos.
- Ofrecen lecturas.
- Pueden votar si confirmar una escritura.
- Participan en la elección del liderazgo.
- Cumplen los requisitos para convertirse en un líder.
- Son el único tipo de réplica que se usa en las instancias regionales.
Réplicas de solo lectura
Las réplicas de solo lectura solo admiten lecturas, pero no escrituras. Estas réplicas no votan por los líderes ni por las confirmaciones de escritura, por lo que te permiten escalar tu capacidad de lectura sin aumentar el tamaño del quórum necesario para las escrituras. Réplicas de solo lectura:
- Mantener una copia completa de tus datos, que se replica desde la réplica de lectura y escritura principal.
- No participa en la votación para confirmar escrituras. Por lo tanto, la ubicación de las réplicas de solo lectura nunca influye en la latencia de escritura.
- No cumplen los requisitos para convertirse en líderes.
- Ofrecen lecturas.
- Se puede escalar de forma asimétrica. Para obtener más información, consulta Escalado automático asimétrico de solo lectura.
Si es la réplica más cercana a tu aplicación, la réplica de solo lectura suele poder servir lecturas obsoletas sin necesidad de hacer un viaje de ida y vuelta a la región principal, siempre que la obsolescencia sea de al menos 15 segundos. También puedes usar lecturas dirigidas para enrutar transacciones de solo lectura y lecturas únicas a un tipo de réplica específico o a una región en una configuración de instancia multirregional. Para obtener más información, consulta Lecturas dirigidas.
Las lecturas sólidas pueden requerir un viaje de ida y vuelta a la réplica principal. El viaje de ida y vuelta solo sirve para negociar la marca de tiempo, no para enviar los datos reales del líder. La negociación de la marca de tiempo es una operación eficiente de la CPU en el líder y, normalmente, los datos ya están en camino. El sistema gestiona esta comunicación automáticamente.
Para obtener más información sobre las lecturas obsoletas y las sólidas, consulta la sección Lecturas.
Réplicas de solo lectura opcionales
Puedes crear una configuración de instancia regional o multirregional personalizada y añadir réplicas de solo lectura opcionales para escalar las lecturas y admitir lecturas obsoletas de baja latencia. La réplica de solo lectura añadida debe estar en una región que no forme parte de la configuración de la instancia base predefinida. Para ver una lista de las regiones opcionales de solo lectura que puedes añadir, consulta la columna Región opcional en Configuraciones regionales disponibles y Configuraciones multirregionales disponibles. Si no ves la ubicación de la réplica de solo lectura que has elegido, puedes solicitar una nueva región de réplica de solo lectura opcional.
Todas las réplicas de solo lectura opcionales están sujetas a costes de capacidad de computación, almacenamiento y replicación.Además, añadir réplicas de lectura a una configuración de instancia personalizada no cambia los SLAs de Spanner de la configuración de la instancia.
Si decides añadir una réplica de solo lectura a un continente que no sea el mismo que el de la región principal, te recomendamos que añadas al menos dos réplicas de solo lectura. De esta forma, se mantiene una latencia de lectura baja en caso de que una de las réplicas de solo lectura deje de estar disponible.
Como práctica recomendada, prueba las cargas de trabajo de rendimiento en instancias que no sean de producción con la configuración de instancia personalizada primero. Puedes consultar el panel de control de latencia y rendimiento entre regiones para ver los datos de latencia media 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 fuerte esperada para un cliente en us-east1
es de unos 100 milisegundos debido al tiempo de ida y vuelta a la región principal en europe-west4
. Las lecturas obsoletas con una obsolescencia suficiente no incurren en el viaje de ida y vuelta y, por lo tanto, son mucho más rápidas. También puedes usar las estadísticas de bloqueo y las estadísticas de transacciones para identificar las transacciones que provocan latencias elevadas.
Para obtener instrucciones sobre cómo añadir réplicas opcionales de solo lectura, consulta Crear una configuración de instancia personalizada.
Réplicas testigo
Las réplicas de testigo no admiten lecturas, pero sí participan en la votación para confirmar las escrituras. Estas réplicas facilitan la consecución de quórums para las escrituras sin los recursos de almacenamiento y computación que requieren las réplicas de lectura y escritura para almacenar una copia completa de los datos y servir lecturas. Réplicas testigo:
- Se usan en instancias de dos regiones y multirregionales.
- No mantengas una copia completa de los datos.
- No sirve lecturas.
- Votan si deben confirmarse o no las escrituras.
- Participa en la elección del líder, pero no puede convertirse en réplica líder.
El papel de las réplicas en las escrituras y lecturas
En esta sección se describe el papel de las réplicas en las lecturas y escrituras de Spanner, lo que resulta útil para entender por qué Spanner usa réplicas de testigo en configuraciones birregionales y multirregionales.
En escrituras
Las solicitudes de escritura de los clientes siempre se procesan primero en la réplica principal, aunque haya una réplica no principal más cerca del cliente o aunque la réplica principal esté lejos del cliente. Si usas una configuración de instancia birregional o multirregional y tu aplicación cliente se encuentra en una región que no es la principal, Spanner usa el enrutamiento con reconocimiento de la principal para enrutar las transacciones de lectura y escritura de forma dinámica y reducir la latencia de tu base de datos. Para obtener más información, consulta Routing aware of the leader.
La réplica líder registra la escritura entrante y la reenvía, en paralelo, a las otras réplicas que cumplen los requisitos para votar en esa escritura. Cada réplica que cumple con los requisitos completa su escritura, y luego responde al líder con un voto sobre si la escritura debe confirmarse. La escritura se confirma cuando la mayoría de las réplicas de voto (o el cuórum de escritura) aceptan confirmar la escritura. En el fondo, todas las réplicas restantes (no testigo) registran la escritura. Si una réplica de lectura y escritura o de solo lectura se retrasa en las escrituras de registro, puede solicitar los datos que faltan a otra réplica para tener una copia de los datos completa y actualizada.
En lecturas
Las peticiones de lectura del cliente se pueden ejecutar en la réplica líder o pueden requerir comunicarse con ella, según el modo de simultaneidad de la petición de lectura.
Las lecturas que forman parte de una transacción de lectura y escritura se sirven desde la réplica líder, ya que esta mantiene los bloqueos necesarios para aplicar la serialización.
Los métodos de lectura única (una lectura fuera del contexto de una transacción) y las lecturas en transacciones de solo lectura pueden requerir la comunicación con el líder, en función del modo de simultaneidad de la lectura. Para obtener más información sobre los modos de simultaneidad, consulta Tipos de lectura.
Las peticiones de lectura fuerte pueden ir a cualquier réplica de lectura y escritura o de solo lectura. Si la petición es para una réplica no líder, esa réplica debe comunicarse con el líder para poder ejecutar la lectura.
Las solicitudes de lectura obsoletas se dirigen a la réplica de solo lectura o de lectura y escritura disponible más cercana que se haya actualizado a la marca de tiempo de la solicitud. Puede ser la réplica principal si esta es la réplica más cercana al cliente que ha enviado la solicitud de lectura.
Monitorizar la replicación de datos
Puede monitorizar la tasa de cambio y la cantidad de datos que se replican desde su réplica principal a las réplicas de otras regiones en la configuración de su instancia. La tasa de cambio se expresa en bytes por segundo y la cantidad de datos, en bytes. Para ello, usa la métrica de monitorización Bytes replicados entre regiones
(instance/cross_region_replicated_bytes_count
).
Para ver esta métrica en la consola de Google Cloud , siga estos pasos:
En la Google Cloud consola, ve a Monitoring:
En el menú de navegación, selecciona Explorador de métricas.
En el campo Métrica, haga clic en el desplegable Seleccionar una métrica.
En el campo Filtrar por nombre de recurso o métrica, selecciona Instancia de Cloud Spanner > Instancia > Bytes replicados entre regiones y, a continuación, haz clic en Aplicar.
Esta métrica solo está disponible en Métricas activas si hay actividad de replicación entre regiones en tu instancia. De lo contrario, aparecerá en Métricas inactivas. De forma predeterminada, la interfaz de usuario filtra y muestra solo las métricas activas. Desmarca la casilla Activo para ver las métricas activas e inactivas.
El gráfico muestra la tasa de cambio (en bytes por segundo) de los datos replicados en todas las instancias de Spanner durante el periodo especificado.
Opcional: Para mostrar la cantidad de datos (en bytes) que se han replicado en lugar de la tasa de cambio, sigue estos pasos:
- En el campo Agregación, haz clic en el desplegable Suma y selecciona Configurar alineador.
- En el campo Función de alineación, haz clic en el desplegable Tasa y selecciona Delta.
Selecciona Tabla o Ambos como tipo de tabla en lugar de Gráfico.
La tabla muestra la cantidad de datos (en bytes) que se replicó en el intervalo de tiempo especificado.
Opcional: Para ver el uso de una instancia o un atributo concretos, siga estos pasos:
- Usa el campo Filtrar para añadir filtros, como un ID de instancia, un ID de base de datos, una región de origen, una región de destino o una etiqueta.
- Haga clic en Añadir filtro para añadir varios filtros.
Para ver una lista completa de Google Cloud métricas, consulte el artículo sobre las Google Cloud métricas.
Siguientes pasos
- Consulta más información sobre las configuraciones de instancias.
- Consulta cómo crear y gestionar instancias.
- Consulta cómo crear y gestionar configuraciones de instancias.
- Google Cloud Más información sobre geografía y regiones