As dependências do plano de controle são as APIs e os serviços de metadados que gerenciam definições de recursos nos seus aplicativos. Para criar aplicativos resilientes e de alta disponibilidade e automatizar fluxos de trabalho de implantação no Compute Engine, é fundamental isolar essas dependências. Embora os endpoints de API globais ofereçam consistência forte em todas as regiões, qualquer pico de latência transitório ou interrupção no plano de controle global ou em uma região remota pode atrasar ou bloquear serviços locais.
Para criar aplicativos confiáveis que possam sobreviver a interrupções globais da API e operar de forma independente em cada região, configure seus serviços para consultar visualizações regionais de recursos globais. Ao usar endpoints de API somente leitura regionalizados para ler definições de recursos, o aplicativo se comunica estritamente com o plano de controle de uma região específica. Esse isolamento de falhas regionais garante que seus serviços permaneçam altamente disponíveis e responsivos, mesmo em interrupções globais.
Tipos de recursos compatíveis
Os endpoints de visualização regional estão disponíveis para os seguintes recursos globais:
- Projetos: o
projectViewsendpoint oferece acesso regional somente leitura ao recurso global do projeto. - Imagens do SO: o
imageViewsendpoint oferece acesso regional somente leitura a recursos globais de imagem do SO.
Limitações
Os metadados de todos os recursos globais são armazenados em um banco de dados global central. Ao criar, ler, atualizar ou excluir um recurso usando endpoints globais padrão da API, o Compute Engine solicita a leitura e grava diretamente no banco de dados global central, oferecendo consistência forte.
Os endpoints de visualização regional leem metadados de recursos de réplicas regionais somente leitura do banco de dados global central. Como as mudanças são copiadas para essas réplicas regionais de forma assíncrona, você pode ter os seguintes comportamentos ao consultar visualizações regionais:
- Pequenos atrasos: ao criar, atualizar ou excluir um recurso globalmente, pode levar até 60 segundos para que essa mudança seja copiada para todos os endpoints de visualização regional. Durante esse curto período, a leitura de uma visualização regional pode retornar dados um pouco mais antigos.
- Failover automático: se você solicitar um recurso de uma visualização regional antes que ele termine de ser copiado para essa região, o Compute Engine vai ler automaticamente diretamente do banco de dados global central para que a sua solicitação ainda seja bem-sucedida.
Diferenças entre a visualização regional e a API global
As guias a seguir resumem as diferenças entre endpoints de visualização regional e endpoints globais padrão da API para cada tipo de recurso:
Projetos
As tabelas a seguir resumem as diferenças entre endpoints de visualização regional e endpoints de API globais padrão para o recurso do projeto:
| Recurso | API global | API de visualização regional |
|---|---|---|
| Endpoint | Global | Regional |
| URL do recurso | /projects/PROJECT_ID |
/projects/PROJECT_ID/regions/REGION/projectViews |
| Domínio de falha | Global | Isolado para a região especificada |
| Métodos aceitos | Leitura e gravação | Somente leitura (Get) |
| Cota de API | Consome buckets de cota de leitura e gravação da API global | Consome buckets de cota de leitura da API regional |
| Consistência de leitura após gravação | Consistência forte (leituras do banco de dados global central) | Consistência posterior (leituras da réplica regional) |
| Comportamento do campo de cota | Retorna a matriz quota, usando fanouts entre regiões para
fornecer dados de uso de cota em tempo real em todas as regiões e zonas. |
A matriz quota é excluída do objeto retornado
Project. Como o projectViews
endpoint lê estritamente de uma réplica regional e não
realiza fanouts entre regiões para coletar métricas de cota, a
quota matriz não é retornada. Para limites de configuração de cota
e métricas de uso precisas em tempo real, consulte o endpoint global
projects.get. |
Imagens do SO
As tabelas a seguir resumem as diferenças entre endpoints de visualização regional e endpoints de API globais padrão para o recurso de imagem do SO:
| Recurso | API global | API de visualização regional |
|---|---|---|
| Endpoint | Global | Regional |
| URL do recurso | /projects/PROJECT_ID/global/images |
/projects/PROJECT_ID/regions/REGION/imageViews |
| Domínio de falha | Global | Isolado para a região especificada |
| Métodos aceitos | Leitura e gravação | Somente leitura (Get e List) |
| Cota de API | Consome buckets de cota de leitura e gravação da API global | Consome buckets de cota de leitura da API regional |
| Consistência de leitura após gravação | Consistência forte (leituras do banco de dados global central) | Consistência posterior (leituras da réplica regional) |
Preços
O acesso a visualizações regionais por endpoints de API somente leitura regionais não gera cobranças adicionais. Assim como as solicitações globais padrão da API Compute Engine, as solicitações para endpoints de visualização regional consomem as cotas padrão da API do projeto, especificamente as cotas de leitura da API regional, mas não geram taxas adicionais.
Práticas recomendadas para alta disponibilidade
Para maximizar a resiliência do aplicativo, evitar carga desproporcional do plano de controle e evitar a criação de pontos de acesso de região única, siga estas práticas de confiabilidade ao configurar sistemas automatizados e cargas de trabalho do cliente:
- Consultar regiões locais para reduzir a área afetada: envie solicitações de API
projectViewseimageViewspara a região exata em que a carga de trabalho do cliente ou o cluster de implantação é executado. Para cargas de trabalho zonais, use a região mãe. A localização de leituras garante que uma interrupção de rede ou falha em outra região não afete o serviço local. - Detectar strings de região dinamicamente: não fixe no código strings de região padrão específicas em bibliotecas de clientes compartilhadas ou modelos de implantação. Em vez disso, detecte dinamicamente a região de execução atual da carga de trabalho no ambiente de execução local para que os failovers multirregionais funcionem de forma transparente.
- Usar o isolamento de cota regional contra cargas de trabalho concorrentes:
o Compute Engine aplica limites de taxa de API por região. Picos de tráfego ou scripts descontrolados em uma região consomem a cota de leitura do bucket dessa região específica sem afetar a disponibilidade da API ou acionar limites de taxa (
429 Too Many Requests) nas outras regiões críticas.
A seguir
- Saiba como acessar recursos globais regionalmente para alta disponibilidade.
- Saiba como solucionar problemas de visualizações regionais de recursos globais.