Quando sua instância do ApsaraDB RDS for PostgreSQL fica sobrecarregada por excesso de conexões ou tráfego intenso de leituras, um proxy de banco de dados oferece divisão de leitura e escrita e divisão de transações para descarregar requisições da instância primária, sem exigir alterações no código da aplicação.
Quando usar um proxy de banco de dados
Um proxy de banco de dados é mais útil nas seguintes situações:
|
Sinal |
Problema |
Como o proxy ajuda |
|
Erros de "excesso de conexões" aparecem |
A instância primária atingiu o limite de conexões |
O proxy gerencia as conexões centralmente e reduz o número de conexões diretas à instância |
|
Picos de CPU ou latência de consultas em horários de pico |
Grande volume de requisições de leitura transacional sobrecarrega a instância primária |
A divisão de transações encaminha leituras pré-escrita para instâncias somente leitura |
|
O throughput de leitura excede a capacidade de uma única instância |
Uma única instância primária não consegue atender a todo o tráfego de leitura |
A divisão de leitura e escrita direciona automaticamente as requisições de leitura para instâncias somente leitura |
|
Duas aplicações apresentam padrões de acesso diferentes |
Uma aplicação somente leitura e outra de leitura/escrita compartilham o mesmo sistema de banco de dados |
Vincule-as a endpoints de proxy separados com atributos distintos para isolá-las fisicamente |
Exemplo: Um sistema de banco de dados possui uma instância primária e quatro instâncias somente leitura que atendem a duas aplicações. A Aplicação A emite apenas requisições de leitura; a Aplicação B emite tanto leituras quanto escritas. Configure dois endpoints de proxy: vincule duas instâncias somente leitura a um endpoint com o atributo Read-only para a Aplicação A e vincule a instância primária mais as duas instâncias somente leitura restantes a um endpoint com o atributo Read/Write para a Aplicação B. As duas aplicações ficam fisicamente isoladas dentro do mesmo sistema de banco de dados.
Como funciona
Um proxy de banco de dados é uma camada de proxy de rede posicionada entre a aplicação e o ApsaraDB RDS for PostgreSQL. Todas as requisições da aplicação passam por ele antes de chegar ao banco de dados. Conecte-se à instância RDS por meio de um endpoint de proxy de banco de dados, em vez de se conectar diretamente à instância primária.
O proxy inspeciona cada requisição e a roteia com base na configuração:
Requisições de escrita vão para a instância primária.
Requisições de leitura vão para instâncias somente leitura (quando a divisão de leitura e escrita está ativada).
Leituras anteriores à primeira escrita em uma transação vão para instâncias somente leitura (divisão de transações, sempre ativa).
Conceitos principais
Endpoint de proxy de banco de dados
Os endpoints de proxy de banco de dados são o núcleo dos proxies de banco de dados. Cada endpoint possui configurações de conexão, prefixo e porta próprios. A conexão por meio de um endpoint de proxy fornece acesso à divisão de leitura e escrita, divisão de transações e gerenciamento simplificado de conexões.
Cada instância RDS suporta até sete endpoints de proxy de banco de dados. Para cada endpoint, solicite um endpoint interno e um endpoint público. Configure cada endpoint independentemente para atender a diferentes requisitos de negócios.
Para obter detalhes, consulte Configurar as definições de conexão para um endpoint de proxy de banco de dados e Usar um endpoint de proxy de banco de dados para conectar-se a uma instância do ApsaraDB RDS for PostgreSQL.
Divisão de leitura e escrita
Os endpoints de proxy de banco de dados roteiam automaticamente requisições de escrita para a instância primária e requisições de leitura para instâncias somente leitura. Isso distribui a carga de leitura e evita que a instância primária seja sobrecarregada por tráfego intenso de leituras.
Para obter detalhes, consulte O que é divisão de leitura e escrita?
Divisão de transações
A divisão de transações é ativada automaticamente ao ativar um proxy de banco de dados e não pode ser desativada. Ela roteia requisições de leitura que ocorrem antes da primeira operação de escrita em uma transação para instâncias somente leitura, o que reduz a carga na instância primária.
Limitações:
Transações explícitas iniciadas com
BEGINouSTART TRANSACTIONnão podem ser divididas.A consistência global não é garantida. Avalie se suas cargas de trabalho toleram essa condição antes de ativar o proxy de banco de dados.
Não é possível desativar a divisão de transações após a ativação do proxy.
Para obter detalhes, consulte Divisão de transações.
Tipos de proxy
O ApsaraDB RDS for PostgreSQL oferece dois tipos de proxy:
| Item | Uso geral | Dedicado |
|---|---|---|
| Faturamento | Gratuito | Pagamento conforme o uso. Consulte Regras de faturamento para proxies de banco de dados. |
| Recursos de CPU | Compartilhados | Alocados exclusivamente |
| Especificações máximas | 16 núcleos (8 proxies de banco de dados) | 32 núcleos (16 proxies de banco de dados) |
| Edição do RDS | RDS High-availability Edition | |
| Arquitetura | Redundante de alta disponibilidade | |
| Divisão de leitura e escrita | Suportada | |
| Divisão de transações | Suportada | |
| Endpoints de proxy | 1–7; 1 interno + 1 público por endpoint | |
Escolha Uso geral se o custo for a principal preocupação e a carga de trabalho tolerar recursos de CPU compartilhados.
Escolha Dedicado se houver necessidade de desempenho estável e previsível e a carga de trabalho for sensível à contenção de recursos.
As especificações do proxy seguem esta fórmula: Specification = Unit specification × Number of database proxies. A especificação da unidade é fixa em 2 núcleos de CPU. Por exemplo, 3 proxies de banco de dados fornecem 6 núcleos de CPU (2 × 3 = 6).
Limitações e faturamento
Para a lista completa de restrições de uso, consulte Notas de uso de proxies de banco de dados.
Para detalhes de preços, consulte Regras de faturamento para proxies de banco de dados.