我们正在开发一个多租户应用程序。就架构而言,我们为业务逻辑设计了共享中间层,并为数据持久性每个租户设计了一个数据库。也就是说,业务层将为每个租户与数据库服务器建立一组连接(连接池)。这意味着应用程序为每个租户维护单独的连接池。如果我们预计大约有5000个租户,则该解决方案需要高资源利用率(应用程序服务器与每个租户之间的数据库服务器连接),这会导致性能问题。
我们通过保持公共连接池来解决这个问题。为了在不同的数据库之间维护单个连接池,我们创建了一个名为“App-master”的新数据库。现在,我们始终首先连接到“App-master”数据库,然后将数据库更改为特定于租户的数据库。这解决了我们的连接池问题。
这个解决方案在本地数据库服务器上完美运行。但在Azure Sql上无法运行,因为它不支持更改数据库。
提前感谢您建议如何维护连接池或处理此类多租户场景的更好方法/最佳实践。
我们通过保持公共连接池来解决这个问题。为了在不同的数据库之间维护单个连接池,我们创建了一个名为“App-master”的新数据库。现在,我们始终首先连接到“App-master”数据库,然后将数据库更改为特定于租户的数据库。这解决了我们的连接池问题。
这个解决方案在本地数据库服务器上完美运行。但在Azure Sql上无法运行,因为它不支持更改数据库。
提前感谢您建议如何维护连接池或处理此类多租户场景的更好方法/最佳实践。