Supavisor:将Postgres扩展至100万连接

Supavisor:将Postgres扩展至100万连接

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

Supavisor是一个可扩展的Postgres连接池,支持多租户特性,能够处理数百万个连接。它由Elixir开发,具备查询缓存和负载均衡功能。经过测试,Supavisor在高负载下表现稳定,能够处理100万并发连接,查询延迟低于2毫秒。与PgBouncer相比,Supavisor在资源使用上更高效,适合高并发应用。

🔎

延伸解读

Supavisor 的扩展能力与测试结果

Supavisor 在测试中展现了出色的扩展性。单台 16 核实例可处理 25 万并发连接,64 核实例可处理 50 万连接,而通过水平扩展两台 64 核实例,成功处理了 100 万并发连接,QPS 稳定在 2 万。这表明 Supavisor 能够通过增加实例来应对更高的连接需求,且性能不会随连接数增加而显著下降。

查询延迟表现与影响因素

在 5000 QPS 下,Supavisor 的查询延迟中位数低于 2 毫秒,95% 的查询在 3 毫秒内完成。当 QPS 提升至 2 万时,延迟中位数升至 18.4 毫秒,这主要源于数据库端负载增加。因此,Supavisor 本身对延迟影响较小,但高负载下数据库可能成为瓶颈。

与 PgBouncer 的架构对比

Supavisor 采用多租户集群架构,与数据库分离,不占用数据库的 CPU 和内存资源,但会引入额外的网络延迟。测试显示,在 5000 QPS 的插入负载下,Supavisor 比 PgBouncer 每查询多出约 2 毫秒延迟。PgBouncer 与数据库同实例部署,延迟更低,但会共享计算资源。

使用建议与迁移注意事项

Supavisor 已在所有 Supabase 项目区域推出,用户可联系支持启用。未来几周内,项目仪表板将提供新的连接字符串,并允许 PgBouncer 和 Supavisor 并行使用数月,方便切换。自托管堆栈将在测试后加入 Supavisor,但目前已有合作伙伴在生产中使用。

❓

Q&A

Supavisor是什么?

Supavisor是一个可扩展的Postgres连接池,支持多租户特性,能够处理数百万个连接。

Supavisor与PgBouncer相比有什么优势?

Supavisor在资源使用上更高效,适合高并发应用,且避免了与数据库共享计算资源,从而降低了延迟。

Supavisor如何处理高并发连接?

Supavisor通过垂直和水平扩展能力,能够在不影响性能的情况下处理更多连接,支持高达100万的并发连接。

Supavisor的查询延迟是多少?

在高负载下,Supavisor的查询延迟低于2毫秒,95%的查询在3毫秒内完成。

Supavisor的架构设计有什么特点?

Supavisor的架构设计避免了与数据库共享计算资源,能够有效分配负载,降低延迟。

如何开始使用Supavisor?

Supavisor已在所有Supabase项目中推出,用户可以联系支持团队获取连接详情,并在项目仪表板中找到新的连接字符串。

🏷️

标签

➡️

继续阅读