【发布时间】:2013-12-06 19:34:53
【问题描述】:
我正在使用文章 Dynamic DataSource Routing 之后的多租户架构,但动态创建新租户(数据源)(在用户注册时)。
一切运行正常,但我担心可扩展性。该应用程序阅读量很大,今天我们有 10 个租户,但我们会将应用程序向公众开放,这个数字会增加很多。
每个用户数据源都是使用以下代码创建的:
BasicDataSource ds = new org.apache.commons.dbcp.BasicDataSource();
ds.setDriverClassName(Driver.class.getName());
ds.setUsername(dsUser);
ds.setPassword(dsPassword);
ds.setPoolPreparedStatements(true);
ds.setMaxActive(5);
ds.setMaxIdle(2);
ds.setValidationQuery("SELECT 1+1");
ds.setTestOnBorrow(true);
这意味着它正在为每个用户创建至少 2 个和最多 5 个连接。
MySQL 服务器(4 个 CPU 2.3Mhz/8GB Ram/80GB SSD)支持多少连接和架构,如何通过更改数据源参数或 mysql 配置来改进它?
我知道这个答案取决于很多附加信息,请在 cmets 中询问。
【问题讨论】:
-
你的应用是读重还是写重?
-
那么您总是可以水平扩展并添加读取从属以处理更多并发。在mysql中查找主从复制
-
是的,我可能会这样做,但我想知道何时需要这样做。我对 MySQL 的了解并不深入,无法知道我可以拥有的数据源的限制。
-
连接限制并不是您现在必须担心的巨大限制。监控一切并使用缓存,您可以在单个服务器上为大量用户提供服务。内存使用比连接更受关注。
-
同时打开的模式和表是否有限制?
标签: mysql spring datasource multi-tenant apache-commons-dbcp