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