- Rust + Tokio ile yazılmış PostgreSQL transaction pooling + sharding + load balancing aracı; yüzlerce veritabanını ve yüz binlerce bağlantıyı verimli şekilde yönetir
- PgBouncer gibi çalışırken aynı zamanda sorgu analizi ve replikasyonu da destekleyen PostgreSQL odaklı uygulama katmanı (OSI L7) proxy’si
- Kubernetes ve Docker ile kolayca dağıtılabilir; küme yapılandırması, load balancing, replikasyon ve çoklu shard yönetimini tek bir yapılandırmayla gerçekleştirebilir
- Kendi mantıksal replikasyon yönetimi özelliğiyle birlikte, mevcut PostgreSQL kümesini kesinti olmadan sharding ile genişletebilir
Başlıca özellikler
-
Load balancing
- Trafiği OSI Layer 7’de PostgreSQL sorgu bazında dağıtır
SELECT sorgularını replikalara, INSERT/UPDATE vb. işlemleri ise birincil düğüme otomatik yönlendirir
- Stratejiler: round robin, random, least active connections vb. desteklenir
- Hata durumunda gerçek zamanlı health check ve otomatik failover
-
Transaction pooling
- PgBouncer’a benzer şekilde oturum/transaction düzeyinde pooling destekler
- Yüz binlerce istemciyi birkaç PostgreSQL bağlantısıyla işleyebilir
-
Sharding ve replikasyon
- SQL analiziyle shard key’yi çıkarır ve sorguyu ilgili shard’a otomatik iletir
- Shard’lar arası sorgularda sonuçları bellekte birleştirerek kullanıcıya tek bir yanıt sunar
COPY komutunu da shard bazında bölerek işler
- Mantıksal replikasyon desteği: mevcut DB’yi kesintisiz şekilde sharding ile genişletebilir
-
Gerçek zamanlı yapılandırma değişikliği
- PgBouncer tarzı
.toml yapılandırması kullanır; yeniden başlatmadan yapılandırma değişikliği yapılabilir
- Kullanıcı bazlı kimlik doğrulama, veritabanı bazlı bağlantılar ve shard bilgileri yapılandırılabilir
-
İzleme
- Standart PgBouncer yönetim portu + OpenMetrics desteği
- Datadog entegrasyonu örnekleri ve dashboard içerir
1 yorum
Multi-master yapılandırmada patroni kullanıyorum
Okuma isteklerinin yoğun olduğu bir yapıysa maxscale gibi denenebilir