【发布时间】:2015-08-03 17:12:53
【问题描述】:
我不是一个非常有经验的 Java 程序员,可能有非常简单的问题。在描述问题之前,让我先解释一下架构:
- 我们需要一个云端应用
- 我们有四个客户,每个客户都有自己的 MySQL 数据库实例(总共 4 个数据库)。这主要是出于政治和一些性能原因(某些读取最多需要 20 秒才能执行,每 1 或 2 秒执行一次 INSERT 语句)
- 该应用程序将在两个 VM 实例上运行,以实现故障转移和更好的性能,即。 DataSource 将是动态的,因为两个应用程序实例中的任何一个都可能以数据库实例之一为目标
- 我们计划为所有客户提供一个配置数据库,用作应用程序的内部存储库。我们在这里维护用户和其他配置、活动监控等
每当我们添加新客户时,应用程序不应该重新启动,因此配置数据库。在这个数据库中,我们计划为每个用户保留一个数据源,并在调用 RESTful 服务时执行查找(可以称为无状态数据源)。唯一要做的额外事情是添加新的 MySQL 实例。
我们使用的主要框架/工具有 java、Spring (JdbcTemplate)、HikariCP(JDBC 连接池)和 Tomcat。
我们有以下问题:
- 连接池和javax.sql.DataSource是什么关系,即。因为我们计划为每个 RESTful 方法调用重新创建 DataSource,这会破坏数据库 X 的现有连接池吗?
- 当在配置数据库中指定数据源时,在 Spring 中实现动态数据源的最佳方法是什么(我确实阅读了以下 link 解释在配置文件中定义的动态数据源,不支持在运行时添加新源)
亲切的问候
啊。
【问题讨论】:
标签: java jdbc connection-pooling spring-jdbc