En esta página, se describe cómo se replican los datos en Spanner, los diferentes tipos de réplicas de Spanner y sus roles en las operaciones de lectura y escritura, y los beneficios de la replicación.
Descripción general
Spanner replica automáticamente a nivel de bytes. Como se describe en Vida de las operaciones de lectura y escritura de Spanner, aprovecha esta función en el sistema de archivos subyacente en el que se basa. Spanner escribe 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 datos para proporcionar los beneficios adicionales de la localidad geográfica y la disponibilidad de datos. A alto nivel, 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 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 Spanner de lectura y escritura o de solo lectura.
Spanner crea réplicas de cada división de la base de datos. Una división contiene un rango de filas contiguas, en las que las filas se ordenan según la clave primaria. Todos los datos de una división se almacenan a nivel físico juntos en la réplica, y Spanner entrega cada réplica por fuera de una zona de falla independiente. Para obtener más información, consulta la descripción general 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 administran las operaciones de escritura, mientras que las réplicas de lectura y escritura o de solo lectura pueden entregar una solicitud de lectura sin comunicarse con la líder. Si se solicita una operación de lectura sólida, por lo general, se consulta al líder para garantizar que la réplica de solo lectura haya recibido todas las mutaciones recientes. Para supervisar la tasa de cambio y la cantidad de datos que se replican de la réplica líder a las réplicas entre regiones en la configuración de tu instancia, consulta Supervisa la replicación de datos.
Beneficios de la replicación de Spanner
Entre los beneficios de la replicación de Spanner, se 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 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 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: Spanner puede ofrecer una experiencia de base de datos única gracias a su replicación síncrona y coherencia sólida global.
Desarrollo de aplicaciones más sencillo: Debido a que Spanner cumple con ACID y ofrece coherencia sólida global, los desarrolladores que trabajan con Spanner no tienen que agregar lógica adicional en sus aplicaciones para lidiar con la coherencia eventual, lo que facilita y agiliza el desarrollo de aplicaciones y su mantenimiento posterior.
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 las topologías de replicación que forman las configuraciones de instancias básicas son fijas:
- Las configuraciones básicas de instancias de región única (regionales) solo usan réplicas de lectura y escritura.
- Las configuraciones básicas de instancias de región doble usan réplicas de lectura y escritura, y testigo.
- Las configuraciones 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 configuraciones 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 | Se puede configurar la réplica de forma manual |
---|---|---|---|---|
Lectura y escritura | Sí | sí | sí | no |
Solo lectura | No | no | sí | 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 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 de réplica que se usa en instancias regionales.
Réplicas de solo lectura
Las réplicas de solo lectura solo admiten operaciones de lectura, pero no 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:
- Mantienen una copia completa de tus datos, que se replica desde la réplica de lectura y escritura líder.
- 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.
- No son aptas para convertirse en líderes.
- Entregan operaciones de lectura.
Si es la réplica más cercana a tu aplicación, la réplica de solo lectura suele entregar operaciones de lectura inactivas sin tener que ir y volver a la región líder, siempre que el estado de inactividad sea de 15 segundos como mínimo. También puedes usar lecturas dirigidas para enrutar transacciones de solo lectura y lecturas únicas a un tipo de réplica específico o una región en una configuración de instancia multirregión. Para obtener más información, consulta Lecturas dirigidas.
Las operaciones de lectura sólidas pueden requerir la ida y vuelta a la réplica líder. El recorrido de ida y vuelta solo sirve para negociar la marca de tiempo y no enviar los datos reales del líder. La negociación de marca de tiempo es una operación eficiente de CPU en el líder y, por lo general, los datos ya están en la ruta. El sistema maneja esta comunicación de forma automática.
Para obtener más información sobre las operaciones de lectura inactivas y sólidas, consulta la sección Operaciones de lectura.
Réplicas de solo lectura opcionales
Puedes crear una configuración de instancia regional o de varias regiones personalizada y agregar réplicas de solo lectura opcionales para escalar las operaciones de lectura y admitir operaciones de lectura inactivas de baja latencia. Puedes agregar las ubicaciones que aparecen en Región opcional como una réplica de solo lectura opcional. Si no ves la ubicación de la réplica de solo lectura que elegiste, puedes solicitar una nueva región opcional de réplica de solo lectura.
Todas las réplicas de solo lectura opcionales están sujetas a costos de capacidad de procesamiento, almacenamiento y replicación. 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 la instancia. Si decides agregar una réplica de solo lectura a 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 deje de estar disponible.
Como práctica recomendada, primero prueba las cargas de trabajo de rendimiento en instancias que no sean de producción en la
configuración de la instancia personalizada. Puedes consultar el panel de comparativas de latencia y capacidad de procesamiento interregional para obtener datos de latencia interregional mediana. Por ejemplo, si creas una configuración de instancia personalizada con la configuración base multirregional eur6
y una réplica opcional de solo lectura 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 inactividad suficiente no generan 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 generan latencias altas.
Para obtener instrucciones sobre cómo agregar réplicas opcionales de solo lectura, consulta Cómo crear 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:
- Se usan en instancias birregionales y 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 una réplica de líder.
El rol 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 ayuda a entender por qué Spanner usa réplicas de testigo en configuraciones de dos regiones y 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 más cercana al cliente o si la réplica líder se encuentra en una ubicación geográfica lejos del cliente. Si usas una configuración de instancia de región doble o multirregional y tu aplicación cliente se encuentra en una región que no es líder, Spanner usa el enrutamiento adaptado al líder para enrutar transacciones de lectura y escritura de forma dinámica y reducir la latencia en tu base de datos. Para obtener más información, consulta Enrutamiento consciente del 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. Para obtener más información sobre los modos de simultaneidad, consulta 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.
Supervisa la replicación de datos
Puedes supervisar la tasa de cambio y la cantidad de datos que se replican de la réplica líder a las réplicas entre regiones en la configuración de tu instancia. La tasa de cambio se mide en bytes por segundo y la cantidad de datos se mide en bytes. Para ello, usa la métrica de supervisión Bytes replicados entre regiones (instance/cross_region_replicated_bytes_count
).
Para ver esta métrica en la consola de Google Cloud, sigue estos pasos:
En la consola de Google Cloud, ve a Monitoring.
En el menú de navegación, selecciona Explorador de métricas.
En el campo Métrica, haz clic en el menú 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, luego, 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 IU filtra y muestra solo las métricas activas. Borra la marca de verificación Activa 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 dentro del intervalo de tiempo especificado.
Opcional: Para mostrar la cantidad de datos (en bytes) que se replican en lugar de la variación, haz lo siguiente:
- En el campo Agregación, haz clic en el menú desplegable Suma y selecciona Configurar alineador.
- En el campo Función de alineación, haz clic en el menú desplegable Tasa y selecciona Delta.
Selecciona Tabla o Ambas como el tipo de tabla en lugar de Gráfico.
En la tabla, se muestra la cantidad de datos (en bytes) que se replicaron dentro del período especificado.
Opcional: Para ver el uso de una instancia o un atributo en particular, sigue estos pasos:
- Usa el campo Filtro para agregar 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.
- Haz clic en Agregar filtro para agregar varios filtros.
Para ver una lista completa de las métricas de Google Cloud , consulta métricas deGoogle Cloud .
¿Qué sigue?
- Obtén más información sobre la configuración de instancias.
- Obtén más información para crear y administrar instancias.
- Obtén más información para crear y administrar configuraciones de instancias.
- Obtén más información sobre la Google Cloud geografía y las regiones.