postgresql - 为同一数据库服务器上的多个数据库创建连接池(Spring Boot)
问题描述
我正在寻找一种方法来为同一数据库服务器(PostgreSQL Aurora)上的许多数据库创建连接池。这意味着我需要能够在运行时更改连接的目标数据库。目前,我在 Spring Boot 和 JHispter 堆栈中使用 HikariCP 进行连接池。
背景:
- 我们需要部署一个多租户的微服务系统,只有一个 DB 服务器(具体来说,一个 AWS Aurora PostgreSQL 实例)
- 我们的多租户解决方案是每个租户都有一个数据库,在那个数据库中,我们为每个服务有很多模式。所有数据库都在同一个 AWS Aurora 实例中。
我们的问题:
- 通过此部署,我们为每个(租户 x 微服务实例)都有一个连接池。这会导致大量的连接。
- 即:池大小为 50 个连接/池。我们需要:500 个租户 x 20 个微服务实例 x 50 个连接/池 = 500000 个连接。
- 任何 Aurora 数据库允许的最大连接数为 16000,实际上默认情况下,“max_connections”参数通常设置为更低。
所以现在我正在寻找一种方法来使我们的池化范围更大,以便许多租户可以共享同一个池。由于我们只使用 1 个 Aurora 服务器实例,我认为可以创建一个可以在多个租户之间共享的连接池。有没有办法让连接池可以在运行时切换数据库?
解决方案
除非 Aurora 对此进行了一些自定义,否则一旦在 PostgreSQL 中建立连接,您就无法更改连接的数据库。您仍然可以使用池化器,但它实际上是每个数据库的单独池。这是非常基本的,您对此无能为力。
推荐阅读
- .net - 如何将 ASP.NET Core 5.0 网站的日志输出发送到前端
- sql - 是否有 SQL 查询来防止列中出现两个相同的名称?并查询不要留空的列?
- kubernetes - 实例化和关闭 Kubeflow pod
- google-sheets - 将单个单元格公式转换为整列公式的问题
- service - 如何在微服务架构中正确管理 .env 文件
- vim - vim 搜索替换应该在以下搜索中使用替换文本
- python - 制作一个需要双击编辑的QSpinBox
- python - 为什么我的位移操作数投射在不受支持的“str”类型上?
- flask - SQLAlchemy 过滤所有关系
- javascript - 如何共享来自不同 React Hooks 的解构变量?