Supavisor

#OpenSource

Product information

Supavisor is a cloud-native, multi-tenant Postgres connection pooler designed to manage and optimize database connections efficiently. It is capable of proxying millions of Postgres end-client connections into a stateful pool of native Postgres database connections, simplifying the management of Postgres clusters. Supavisor aims to achieve zero-downtime scaling, handle modern connection demands, and maximize database capacity by moving connection pooling to a dedicated cluster adjacent to tenant databases.

The architecture of Supavisor is designed for high availability in a cloud environment. It operates as a cluster of nodes where tenant configuration is stored in a highly available Postgres database. When a tenant client connects, a dynamic connection pool is initiated, and the process ID is distributed across the cluster. This design ensures that only one tenant connection pool is active at a time, providing resilience and enabling blue-green or rolling deployments. If a node fails, the connection pool is quickly re-established on other nodes, maintaining high availability.

Supavisor is highly performant, supporting up to 1 million Postgres connections on a cluster and 250,000 idle connections on a single 16-core node with 64GB of RAM. It offers features such as multi-tenancy, pool mode support per tenant, cloud-native clustering, and resilience during cluster resizing. Supavisor also includes observability tools with a Prometheus metrics endpoint and a SwaggerUI for API management.

Future enhancements planned for Supavisor include load balancing across read-replicas, query caching, session pooling, and multi-protocol support. It also aims to incorporate high-availability management for Postgres databases, including primary database election on failure and health checks. Supavisor's design and functionality are inspired by other tools like PgBouncer, pgcat, and Amazon RDS Proxy, aiming to provide a robust and scalable solution for Postgres connection pooling.

Pricing

Pricing information is not available