17 points par xguru 2025-05-08 | 1 commentaires | Partager sur WhatsApp
  • 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

 
kaydash 2025-05-08

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.