我的雇主目前有多个 Postgres 实例(每个客户一个,具有唯一的站点代码),这些实例在客户场所物理上是分开的。每个客户在实例内运行 1-4 个数据库,每个数据库包含 20 多个架构。
我们正尝试将这些数据库整合到一个 Postgres 实例下,无论是在本地还是通过云提供商(例如 RDS),以便简化访问/控制。客户将继续访问数据库,但我们将引入一个共享的 RESTful 服务层,其中将使用作为每个 API 的 URL 路径的一部分添加的站点代码来定位特定数据库。为了满足我们的性能 SLA(1 秒内 90%)并降低资源使用率,我们打算在服务层中使用连接池。
我们面临的主要问题是 Postgres 在连接期间需要数据库,这意味着我们必须为每个客户建立一个连接池,这将低效地使用大量资源。由于我们没有有效地利用资源,我们可能需要拥有更多的服务层实例,从而给架构带来更多的成本和复杂性。虽然可以有效地在服务层的多个实例之间“分片”客户,但这并不能解决真正的问题,即连接的低效使用!
还有其他我没考虑过的解决方案吗?也许可以建立一个连接池,将请求转发到特定的数据库?或者可能是可以根据负载动态调整大小的动态连接池?
谢谢
答案1
AWS RDS 代理可能是减少连接要求的一种实用方法。