- Outil de pooling transactionnel + sharding + load balancing PostgreSQL écrit en Rust + Tokio, capable de gérer efficacement des centaines de bases de données et des centaines de milliers de connexions
- Fonctionne comme PgBouncer, tout en étant un proxy de couche applicative (OSI L7) spécialisé pour PostgreSQL, avec analyse des requêtes et prise en charge de la réplication
- Facile à déployer avec Kubernetes et Docker, et permet de gérer avec une configuration unique la configuration de cluster, le load balancing, la réplication et l’administration de multiples shards
- Grâce à ses propres fonctions de gestion de la réplication logique, il est possible d’étendre un cluster PostgreSQL existant en sharding sans interruption de service
Fonctionnalités principales
-
Load balancing
- Répartition du trafic au niveau OSI Layer 7 sur la base des requêtes PostgreSQL
SELECT est automatiquement routé vers les réplicas, tandis que INSERT/UPDATE et autres vont vers le nœud principal
- Stratégies prises en charge : round robin, random, least active connections, etc.
- Health checks en temps réel et failover automatique en cas d’incident
-
Pooling transactionnel
- Comme PgBouncer, prise en charge du pooling au niveau session/transaction
- Permet de gérer des centaines de milliers de clients avec seulement quelques connexions PostgreSQL
-
Sharding et réplication
- Grâce à l’analyse SQL, extraction de la shard key et routage automatique des requêtes vers le shard concerné
- Pour les requêtes cross-shard, agrégation des résultats en mémoire pour fournir une réponse unique à l’utilisateur
- La commande
COPY est également traitée en étant répartie par shard
- Prise en charge de la réplication logique : permet d’étendre une base existante en sharding sans interruption
-
Modifications de configuration en temps réel
- Utilise une configuration
.toml de style PgBouncer, avec modification possible sans redémarrage
- Configuration possible de l’authentification par utilisateur, des connexions par base de données et des informations de shard
-
Supervision
- Prise en charge du port d’administration standard de PgBouncer + OpenMetrics
- Exemples d’intégration Datadog et tableaux de bord inclus
1 commentaires
J’utilise patroni dans une configuration multi-maître
Si l’architecture reçoit beaucoup de requêtes de lecture, ça pourrait valoir le coup de l’utiliser comme maxscale.