En esta página, se describen las lecturas dirigidas de Spanner y cómo usarlas.
Las operaciones de lectura dirigidas en Spanner proporcionan la flexibilidad para enrutar transacciones de solo lectura y operaciones de lectura únicas a un tipo de réplica o región específicos dentro de una configuración de instancias multirregionales o una configuración regional personalizada con regiones de solo lectura opcionales.
Beneficios
Las lecturas dirigidas ofrecen los siguientes beneficios:
- Proporcionar más control sobre las cargas de trabajo de balanceo de cargas en varias regiones para lograr un uso más uniforme de la CPU y evitar el aprovisionamiento excesivo de instancias de Spanner
- Habilitar el aislamiento de las cargas de trabajo Puedes dirigir tus cargas de trabajo analíticas y cambiar transmisiones de lecturas a específicas Réplicas de Spanner para minimizar el impacto en las cargas de trabajo transaccionales que se ejecutan en la misma base de datos de Spanner.
Operaciones de consulta compatibles
Operaciones de consulta | ¿Se admiten las operaciones de lectura dirigidas? |
---|---|
Lectura inactiva | Sí |
Lectura sólida | Sí |
Transacción de lectura y escritura | No |
Las operaciones de lectura dirigidas no son compatibles con los tipos de transacciones de lectura y escritura ni de DML particionado de las actualizaciones masivas. Esto se debe a que las transacciones de lectura y escritura se deben procesar en la región líder. Si
las lecturas dirigidas se usan en una transacción de lectura y escritura, la transacción falla con
un error BAD_REQUEST
Limitaciones
Las operaciones de lectura dirigidas de Spanner tienen las siguientes limitaciones:
- Solo puedes usar lecturas dirigidas en una instancia de Spanner que esté en una configuración de instancias multirregional o una configuración regional personalizada con regiones opcionales de solo lectura.
- No puedes usar lecturas dirigidas con solicitudes de lectura y escritura porque la escritura la región líder siempre entrega las solicitudes.
- No puedes usar lecturas dirigidas en la consola de Google Cloud ni en Google Cloud CLI. Sí disponibles con REST y APIs de RPC y Spanner bibliotecas cliente.
- Puedes especificar un máximo de 10 réplicas en una sola operación de lectura dirigida.
Antes de comenzar
Ten en cuenta lo siguiente antes de usar las operaciones de lectura dirigidas:
- La aplicación puede incurrir en latencia adicional si enrutas las lecturas a un o región distinta de la más cercana a la aplicación.
- Puedes enrutar el tráfico según los siguientes parámetros:
- Nombre de la región (por ejemplo,
us-central1
). - Tipo de réplica (valores posibles:
READ_ONLY
yREAD_WRITE
).
- Nombre de la región (por ejemplo,
- La opción de conmutación por error automática en las operaciones de lectura dirigidas está habilitada de forma predeterminada. Cuando se activa automáticamente
la opción de conmutación por error esté habilitada y ninguna de las réplicas especificadas esté disponible
o en mal estado, Spanner enruta las solicitudes a una réplica fuera del
Lista
includeReplicas
. Si inhabilitas la opción de conmutación por error automática y todas las réplicas especificadas no están disponibles o no funcionan correctamente, fallará la solicitud de lecturas dirigidas.
Parámetros de lecturas directas
Si usas la API de REST o RPC para realizar lecturas dirigidas, debes definir estos campos en el parámetro directedReadOptions
. Solo puedes incluir una de includeReplicas
o excludeReplicas
, no ambas.
includeReplicas
: Contiene un conjunto repetido dereplicaSelections
. Esta lista indica el orden en el que se deben considerar las operaciones de lectura dirigidas a regiones o tipos de réplicas específicas. Puedes especificar un máximo de 10includeReplicas
.replicaSelections
: Consiste en ellocation
o la réplicatype
que entrega la solicitud de lecturas dirigidas. Si usasincludeReplicas
, debes proporcionar, al menos, uno de los siguientes campos:location
: La ubicación que entrega la solicitud de lectura dirigida. La ubicación debe ser una de las regiones dentro de la configuración multirregional de tu base de datos. Si la ubicación no es una de las regiones dentro de la configuración multirregional de tu base de datos, las solicitudes no se enrutarán como se espera. sino que se entregan desde la región más cercana. Por ejemplo, puedes dirigir las lecturas a la ubicaciónus-central1
en una base de datos en la configuración de instancias multirregionalesnam6
También puedes especificar el parámetro
location
con unaleader
. Literal de cadenanon-leader
. Si ingresas el valorleader
, Spanner dirige tus solicitudes al bucket de la base de datos réplica líder. Por el contrario, si ingresas el valornon-leader
, Spanner completa la solicitud en la réplica que no es líder más cercana.type
: Es el tipo de réplica que entrega la solicitud de lectura dirigida. Los tipos posibles sonREAD_WRITE
yREAD_ONLY
.
autoFailoverDisabled
: De forma predeterminada, se establece enFalse
, lo que significa que la conmutación por error automática está habilitada. Cuando la opción de conmutación por error automática está habilitada y todas las réplicas especificadas no están disponibles o en mal estado, Spanner Enruta las solicitudes a una réplica fuera de la listaincludeReplicas
. Si inhabilitas la opción de conmutación por error automática y todas las réplicas especificadas no están disponibles o no funcionan correctamente, la solicitud de lecturas dirigidas fallará. Valores posibles IncluyeTRUE
para inhabilitados yFALSE
para habilitados.
excludeReplicas
: Contiene un conjunto repetido dereplicaSelections
que se excluye de las solicitudes de publicación. Spanner no enruta solicitudes a las réplicas de esta lista.replicaSelections
: Es la ubicación o el tipo de réplica que se excluye de la publicación de la solicitud de operaciones de lectura dirigidas. Si usasexcludeReplicas
, debes proporcionar, al menos, uno de los siguientes campos:location
: Es la ubicación que se excluye de la publicación de la solicitud de lecturas dirigidas.type
: Es el tipo de réplica que se excluye de la publicación de la solicitud de lectura dirigida. Los tipos posibles incluyenREAD_WRITE
yREAD_ONLY
.
Para ver un ejemplo de cómo se ve el cuerpo de una solicitud REST, haz clic en la pestaña REST en la sección Cómo usar lecturas dirigidas.
Usa lecturas dirigidas
Puedes usar las bibliotecas cliente de Spanner y las APIs de REST y RPC para realizar lecturas dirigidas.
Bibliotecas cliente
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
REST
Puedes usar las siguientes APIs de REST para realizar lecturas dirigidas:
Por ejemplo, para realizar lecturas dirigidas en us-central1
con executeSQL
, usa lo siguiente:
Haz clic en
projects.instances.databases.sessions.executeSql
.En sesión, ingresa lo siguiente:
projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-ID</VAR>/databases/<VAR>DATABASE-ID</VAR>/sessions/<VAR>SESSION-ID</VAR>
Reemplaza lo siguiente:
- PROJECT-ID: El ID del proyecto.
- INSTANCE-ID: El ID de la instancia.
- DATABASE-ID: Es el ID de la base de datos.
- SESSION-ID: El ID de la sesión.
Recibirás el valor
SESSION-ID
cuando crees una sesión.
En el cuerpo de la solicitud, usa lo siguiente:
{ "directedReadOptions": { "includeReplicas": { "replicaSelections": [ { "location": "us-central1", } ] } }, "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums" }
Haz clic en Ejecutar. En la respuesta, se muestran los resultados de la consulta.
RPC
Puedes usar las siguientes APIs de RPC para realizar lecturas dirigidas:
Supervisión
Spanner proporciona una métrica de latencia para ayudarte a supervisar las actividades de lecturas dirigidas en tus instancias. La métrica está disponible en Cloud Monitoring.
spanner.googleapis.com/api/read_request_latencies_by_serving_location
Puedes filtrar esta métrica con los campos /serving_location
o /is_directed_read
. El campo /serving location
indica la ubicación
del servidor de Spanner desde el que se entrega la solicitud. El campo /is_directed_read
indica si la opción de lecturas dirigidas está habilitada.
Para obtener una lista completa de las métricas disponibles, consulta la lista de métricas de Spanner.
¿Qué sigue?
- Obtén información para realizar lecturas fuera de las transacciones.