- Herramienta de pooling de transacciones + sharding + balanceo de carga para PostgreSQL, escrita en Rust + Tokio, que administra eficientemente cientos de bases de datos y cientos de miles de conexiones
- Funciona de forma similar a PgBouncer, pero además es un proxy especializado para PostgreSQL en la capa de aplicación (OSI L7) que también soporta análisis de consultas y replicación
- Se puede desplegar fácilmente con Kubernetes y Docker, y permite manejar con una sola configuración la composición de clústeres, el balanceo de carga, la replicación y la administración de múltiples shards
- Junto con su propia función de administración de replicación lógica, permite ampliar con sharding un clúster PostgreSQL existente sin interrupciones
Funciones principales
-
Balanceo de carga
- Distribución del tráfico basada en consultas PostgreSQL en OSI Layer 7
SELECT se enruta automáticamente a las réplicas, mientras que INSERT/UPDATE y similares van al nodo principal
- Soporta estrategias como round robin, random, least active connections, entre otras
- Health checks en tiempo real y failover automático ante fallas
-
Pooling de transacciones
- Soporta pooling por sesión/transacción, de forma similar a PgBouncer
- Puede atender cientos de miles de clientes con solo unas pocas conexiones PostgreSQL
-
Sharding y replicación
- Mediante análisis de SQL, extrae la shard key y envía automáticamente la consulta al shard correspondiente
- En consultas entre shards, combina los resultados en memoria y entrega una sola respuesta al usuario
- El comando
COPY también se procesa dividido por shard
- Soporte de replicación lógica: permite ampliar una base de datos existente con sharding sin tiempo de inactividad
-
Cambios de configuración en tiempo real
- Usa configuración
.toml al estilo PgBouncer y permite cambiar la configuración sin reiniciar
- Se pueden configurar autenticación por usuario, conexiones por base de datos e información de shards
-
Monitoreo
- Soporta el puerto de administración estándar de PgBouncer + OpenMetrics
- Incluye ejemplos de integración con Datadog y dashboards
1 comentarios
Estoy usando
patronien una configuración multimáster.Si es una configuración con muchas solicitudes de lectura, parece que podría valer la pena usarlo como
maxscale.