- Rust + Tokio में लिखा गया PostgreSQL transaction pooling + sharding + load balancing टूल, जो सैकड़ों databases और लाखों connections को कुशलता से मैनेज करता है
- PgBouncer की तरह काम करते हुए भी, query analysis और replication को सपोर्ट करने वाला PostgreSQL-विशेष application layer (OSI L7) proxy
- Kubernetes और Docker के साथ आसानी से deploy किया जा सकता है, और cluster configuration, load balancing, replication, तथा multi-shard management को एक ही configuration से संभाल सकता है
- अपनी logical replication management क्षमता के साथ, मौजूदा PostgreSQL cluster को बिना downtime के sharding के साथ scale out किया जा सकता है
मुख्य विशेषताएँ
-
लोड बैलेंसिंग
- OSI Layer 7 पर PostgreSQL queries के आधार पर traffic distribution
SELECT को replicas की ओर, और INSERT/UPDATE आदि को primary node की ओर अपने-आप route करता है
- रणनीतियाँ: round robin, random, least active connections आदि का समर्थन
- failure होने पर real-time health checks और automatic failover
-
ट्रांज़ैक्शन पूलिंग
- PgBouncer की तरह, session/transaction-स्तरीय pooling का समर्थन
- लाखों clients को कुछ PostgreSQL connections के साथ संभाल सकता है
-
शार्डिंग और रेप्लिकेशन
- SQL analysis के जरिए shard key निकालकर, query को संबंधित shard पर अपने-आप भेजता है
- cross-shard queries में results को memory में जोड़कर उपयोगकर्ता को एकल response देता है
COPY command को भी shard-स्तर पर विभाजित करके प्रोसेस करता है
- logical replication support: बिना downtime के मौजूदा DB को sharding के साथ scale out किया जा सकता है
-
रीयल-टाइम configuration बदलाव
- PgBouncer-स्टाइल
.toml settings का उपयोग, बिना restart के configuration बदला जा सकता है
- user-आधारित authentication, database-आधारित connections, और shard जानकारी तक configure की जा सकती है
-
मॉनिटरिंग
- standard PgBouncer management port + OpenMetrics support
- Datadog integration examples और dashboard शामिल
1 टिप्पणियां
मैं multi-master कॉन्फ़िगरेशन में patroni इस्तेमाल कर रहा हूँ
अगर सेटअप में read requests ज़्यादा हैं, तो इसे maxscale की तरह इस्तेमाल करके देखा जा सकता है