如何处理大规模多租户/多模式环境的连接池

ade*_*ter 6 mysql multi-tenant connection-pooling

以下是情况的简要说明:

  • 我们每个客户有 1 个架构。
  • 我们有2000多个客户。
  • 我们有 50 多个数据库服务器(上述模式在它们之间分布不均)。

我们正在创建一个真正的无状态应用程序前端(即改进遗留软件)。这意味着我们可以有许多(100 多个)应用服务器来处理用户流量,每个应用服务器可能需要连接到 50 多个服务器中的任何一个来随时提取数据。

拥有这么多应用服务器的原因是代码的计算量非常大。也许最终我们可以转向使用更强大硬件的更少应用程序服务器,但我们还没有做到这一点。

我的问题: 如何管理这种环境中的连接池情况?
如果我们想象一个“好”的连接池大约有 64 个连接,那么让每个应用服务器为每个数据库服务器生成一个连接池似乎是不可行的。这将导致对每个数据库服务器建立100+x64 = 6400 个持久连接......这太多了吗?

可以做什么?是否有某种可以使用的连接池代理软件?

小智 1

您有 2000 个架构分布在 50 台服务器上...我认为没有一个连接池可以处理这种情况。我相信,您必须在应用程序代码中编写自己的代码。

我真的很想退一步看看你的架构。如果客户数量增加一倍会发生什么?是三倍吗?这种类型的设计似乎非常难以管理,并且难以扩展到新的业务水平。

HTH,戴夫·西斯克

  • 是的,如果我们考虑到我们预计我们的客户群规模每年都会增加一倍,这确实看起来很笨重。也就是说,每个客户拥有一个架构不是一种常见的多租户策略吗?通常如何处理这种情况?另外,我可能应该补充一点,每个模式可以并且经常包含 100 GB 的实际数据,因此转换为单个整体模式可能也不是可行的方法...... (4认同)