A página descreve as leituras direcionadas do Spanner e como usá-las.
As leituras direcionadas no Spanner oferecem a flexibilidade de encaminhar transações só de leitura e leituras únicas para um tipo de réplica ou uma região específica numa configuração de instâncias de duas regiões ou várias regiões ou numa configuração regional personalizada com regiões só de leitura opcionais.
Vantagens
As leituras direcionadas oferecem as seguintes vantagens:
- Oferecer mais controlo sobre as cargas de trabalho de equilíbrio de carga em várias regiões para alcançar uma utilização da CPU mais uniforme e evitar o aprovisionamento excessivo de instâncias do Spanner.
- Ative o isolamento de cargas de trabalho. Pode direcionar as cargas de trabalho de análise e as leituras de streams de alterações para réplicas específicas do Spanner para minimizar o impacto nas cargas de trabalho transacionais executadas na mesma base de dados do Spanner.
Operações de consulta suportadas
Operações de consulta | As leituras dirigidas são suportadas? |
---|---|
Leitura desatualizada | Sim |
Leitura forte | Sim |
Transação de leitura/escrita | Não |
As leituras direcionadas não são suportadas para transações de leitura/escrita
e tipos de atualizações em massa de DML particionada. Isto deve-se ao facto de as transações de leitura/escrita terem de ser processadas na região principal. Se forem usados
direcionamentos de leitura numa transação de leitura/escrita, a transação falha com
um erro BAD_REQUEST
.
Limitações
As leituras direcionadas do Spanner têm as seguintes limitações:
- Só pode usar leituras direcionadas numa instância do Spanner que esteja numa configuração de instância de duas regiões ou numa configuração de instância de várias regiões ou numa configuração regional personalizada com regiões só de leitura opcionais.
- Não pode usar leituras direcionadas com pedidos de leitura/escrita porque os pedidos de escrita são sempre processados pela região principal.
- Não pode usar leituras direcionadas na Google Cloud consola nem na CLI do Google Cloud. Está disponível através das APIs REST e RPC, bem como das bibliotecas cliente do Spanner.
- Pode especificar um máximo de 10 réplicas numa única leitura direcionada.
Antes de começar
Considere o seguinte antes de usar leituras direcionadas:
- A aplicação pode incorrer em latência adicional se estiver a encaminhar leituras para uma réplica ou uma região que não seja a mais próxima da aplicação.
- Pode encaminhar o tráfego com base no seguinte:
- Nome da região (por exemplo:
us-central1
). - Tipo de réplica (valores possíveis:
READ_ONLY
eREAD_WRITE
).
- Nome da região (por exemplo:
- A opção de comutação automática por falha em leituras direcionadas está ativada por predefinição. Quando a opção de comutação automática em caso de falha está ativada e todas as réplicas especificadas estão indisponíveis ou em mau estado, o Spanner encaminha os pedidos para uma réplica fora da lista
includeReplicas
. Se desativar a opção de comutação por falha automática e todas as réplicas especificadas estiverem indisponíveis ou em mau estado, o pedido de leituras direcionadas falha.
Parâmetros de leituras direcionadas
Se estiver a usar a API REST ou RPC para fazer leituras direcionadas, tem de definir estes campos no parâmetro directedReadOptions
. Só pode incluir um de
includeReplicas
ou excludeReplicas
, não ambos.
includeReplicas
: contém um conjunto repetido dereplicaSelections
. Esta lista indica a ordem em que as leituras direcionadas para regiões ou tipos de réplicas específicos devem ser consideradas. Pode especificar um máximo de 10includeReplicas
.replicaSelections
: consiste nolocation
ou na réplicatype
que serve o pedido de leituras direcionadas. Se usarincludeReplicas
, tem de fornecer, pelo menos, um dos seguintes campos:location
: a localização que processa o pedido de leituras direcionadas. A localização tem de ser uma das regiões na configuração de região dupla ou multirregião da sua base de dados. Se a localização não for uma das regiões na configuração de duas regiões ou multirregiões da sua base de dados, os pedidos não são encaminhados conforme esperado. Em vez disso, são apresentados pela região mais próxima. Por exemplo, pode direcionar as leituras para a localizaçãous-central1
numa base de dados na configuração da instância multirregiãonam6
.Também pode especificar o parâmetro
location
com um literal de stringleader
ounon-leader
. Se introduzir o valorleader
, o Spanner direciona os seus pedidos para a réplica principal da base de dados. Por outro lado, se introduzir o valornon-leader
, o Spanner cumpre o pedido na réplica não principal mais próxima.type
: o tipo de réplica que processa o pedido de leituras direcionadas. Os tipos possíveis incluemREAD_WRITE
eREAD_ONLY
.
autoFailoverDisabled
: por predefinição, esta opção está definida comoFalse
, o que significa que a comutação por falha automática está ativada. Quando a opção de comutação automática por falha está ativada e todas as réplicas especificadas estão indisponíveis ou em mau estado, o Spanner encaminha os pedidos para uma réplica fora da listaincludeReplicas
. Se desativar a opção de comutação automática por falha e todas as réplicas especificadas estiverem indisponíveis ou em mau estado, o pedido de leituras direcionadas falha. Os valores possíveis incluemTRUE
para desativado eFALSE
para ativado.
excludeReplicas
: contém um conjunto repetido dereplicaSelections
que está excluído dos pedidos de publicação. O Spanner não encaminha pedidos para réplicas nesta lista.replicaSelections
: a localização ou o tipo de réplica excluído do serviço do pedido de leituras direcionadas. Se usarexcludeReplicas
, tem de indicar, pelo menos, um dos seguintes campos:location
: a localização excluída da publicação do pedido de leituras direcionadas.type
: O tipo de réplica que é excluído da publicação do pedido de leituras direcionadas. Os tipos possíveis incluemREAD_WRITE
eREAD_ONLY
.
Para ver um exemplo do aspeto do corpo de um pedido REST, clique no separador REST na secção Use leituras direcionadas.
Use leituras direcionadas
Pode usar as bibliotecas cliente do Spanner e as APIs REST e RPC para fazer leituras direcionadas.
Bibliotecas cliente
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
REST
Pode usar as seguintes APIs REST para fazer leituras direcionadas:
Por exemplo, para realizar leituras direcionadas no us-central1
usando o executeSQL
:
Para sessão, introduza:
projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-ID</VAR>/databases/<VAR>DATABASE-ID</VAR>/sessions/<VAR>SESSION-ID</VAR>
Substitua o seguinte:
- PROJECT-ID: o ID do projeto.
- INSTANCE-ID: o ID da instância.
- DATABASE-ID: o ID da base de dados.
- SESSION-ID: o ID da sessão.
Recebe o valor
SESSION-ID
quando cria uma sessão.
Para o corpo do pedido, use o seguinte:
{ "directedReadOptions": { "includeReplicas": { "replicaSelections": [ { "location": "us-central1", } ] } }, "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums" }
Clique em Executar. A resposta mostra os resultados da consulta.
RPC
Pode usar as seguintes APIs RPC para fazer leituras direcionadas:
Monitorização
O Spanner fornece uma métrica de latência para ajudar a monitorizar as atividades de leituras direcionadas nas suas instâncias. A métrica está disponível no Cloud Monitoring.
spanner.googleapis.com/api/read_request_latencies_by_serving_location
Pode filtrar esta métrica através dos campos /serving_location
ou
/is_directed_read
. O campo /serving location
indica a localização do servidor do Spanner a partir do qual o pedido é publicado. O campo /is_directed_read
indica se a opção de leituras direcionadas está ativada.
Para ver uma lista completa das métricas disponíveis, consulte a lista de métricas do Spanner.
O que se segue?
- Saiba como realizar leituras fora das transações.