- Ferramenta de pooling de transações + sharding + balanceamento de carga para PostgreSQL escrita em Rust + Tokio, capaz de gerenciar com eficiência centenas de bancos de dados e centenas de milhares de conexões
- Funciona de forma semelhante ao PgBouncer, mas é um proxy especializado em PostgreSQL na camada de aplicação (OSI L7) que também oferece suporte a análise de consultas e replicação
- Pode ser implantado facilmente com Kubernetes e Docker e permite tratar configuração de cluster, balanceamento de carga, replicação e gerenciamento de múltiplos shards em uma única configuração
- Com seu próprio recurso de gerenciamento de replicação lógica, é possível expandir um cluster PostgreSQL existente com sharding sem interrupção
Principais recursos
-
Balanceamento de carga
- Distribuição de tráfego com base em consultas PostgreSQL na camada OSI 7
SELECT é roteado automaticamente para réplicas, enquanto INSERT/UPDATE e similares vão para o nó primário
- Suporta estratégias como round robin, random e least active connections
- Health checks em tempo real e failover automático em caso de falha
-
Pooling de transações
- Assim como o PgBouncer, oferece pooling por sessão/transação
- Pode atender centenas de milhares de clientes com apenas algumas conexões PostgreSQL
-
Sharding e replicação
- Por meio da análise de SQL, extrai a shard key e encaminha automaticamente a consulta para o shard correspondente
- Consultas entre shards combinam os resultados na memória e entregam ao usuário uma única resposta
- O comando
COPY também é processado de forma dividida por shard
- Suporte a replicação lógica: permite expandir um banco existente com sharding sem downtime
-
Alterações de configuração em tempo real
- Usa configuração
.toml no estilo PgBouncer e permite alterar as configurações sem reiniciar
- É possível configurar autenticação por usuário, conexões por banco de dados e informações de shard
-
Monitoramento
- Suporte à porta de administração padrão do PgBouncer + OpenMetrics
- Inclui exemplos de integração com Datadog e dashboards
1 comentários
Estou usando
patroniem uma configuração multi-master.Se for uma configuração com muitas requisições de leitura, parece algo que valeria a pena testar, como o
maxscale.