- Alat pooling transaksi + sharding + load balancing PostgreSQL yang ditulis dengan Rust + Tokio, mampu mengelola ratusan database dan ratusan ribu koneksi secara efisien
- Bekerja mirip PgBouncer, tetapi merupakan proxy lapisan aplikasi (OSI L7) khusus PostgreSQL yang juga mendukung analisis kueri dan replikasi
- Dapat dideploy dengan mudah menggunakan Kubernetes dan Docker, serta menangani konfigurasi klaster, load balancing, replikasi, hingga pengelolaan multi-shard dalam satu konfigurasi
- Dengan kemampuan manajemen replikasi logis bawaan, dapat memperluas klaster PostgreSQL yang sudah ada menjadi sharding tanpa downtime
Fitur utama
-
Load balancing
- Mendistribusikan trafik berdasarkan kueri PostgreSQL di OSI Layer 7
SELECT diarahkan otomatis ke replika, sedangkan INSERT/UPDATE dan sejenisnya ke node utama
- Mendukung strategi: round robin, random, least active connections, dan lainnya
- Health check real-time dan failover otomatis saat terjadi gangguan
-
Pooling transaksi
- Seperti PgBouncer, mendukung pooling per sesi/transaksi
- Dapat melayani ratusan ribu klien dengan hanya beberapa koneksi PostgreSQL
-
Sharding dan replikasi
- Melalui analisis SQL, mengekstrak shard key dan otomatis meneruskan kueri ke shard yang sesuai
- Untuk kueri lintas shard, menggabungkan hasil di memori dan memberikan satu respons terpadu kepada pengguna
- Perintah
COPY juga diproses dengan pemisahan per shard
- Mendukung replikasi logis: memungkinkan perluasan sharding pada DB yang sudah ada tanpa downtime
-
Perubahan konfigurasi real-time
- Menggunakan konfigurasi
.toml bergaya PgBouncer, konfigurasi dapat diubah tanpa restart
- Dapat mengatur autentikasi per pengguna, koneksi per database, hingga informasi shard
-
Pemantauan
- Mendukung port administrasi standar PgBouncer + OpenMetrics
- Menyertakan contoh integrasi dan dashboard Datadog
1 komentar
Saya menggunakan patroni untuk konfigurasi multi-master,
kalau konfigurasinya punya banyak permintaan baca, sepertinya layak dicoba seperti maxscale.