1.概述
动态数据源指的时在系统中,系统可以配置多个数据源,并在数据源之间进行切换,JPAAS支持在配置文件中手工配置数据源,也支持通过平台管理数据源,并且这些数据源可以根据微服务进行加载,比如流程模块可以配置一个专有的数据源,其他的微服务可以不做配置。
2. 配置方法
2.1 配置在application.yml 做数据源配置
这种方式一般是是在业务固定的情况下进行配置,如果是随时需要配置数据源,那么这种情况其实不是很合适。
每个微服务需要配置默认的数据源:
defaultDs:
string:
url: jdbc:mysql://${redxun.datasource.ip}:${redxun.datasource.port}/jpaas_bpm?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8
username: ${redxun.datasource.username}
password: ${redxun.datasource.password}
driver-class-name: com.mysql.cj.jdbc.Driver
validationQuery: select 1
filters: stat
int:
initialSize: 5
minIdle: 5
maxActive: 10
maxPoolPreparedStatementPerConnectionSize: 20
long:
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
boolean:
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
如果需要配置其他的数据源可以使用如下的方法:
比如我们配置两个自定义数据源:
在配置文件中增加:customDataSource=demo1,demo2
demo1:
string:
url: jdbc:mysql://${redxun.datasource.ip}:${redxun.datasource.port}/jpaas_bpm?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8
demo2:
string:
url: jdbc:mysql://${redxun.datasource.ip}:${redxun.datasource.port}/jpaas_bpm?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8
这样就增加了两个数据源。
2.2 通过界面配置数据源
这种方式的工作原理是,表单应用中,用户通过增加数据源,增加数据源后,这个会发布到nacos中,nacos 监听和读取数据源,通过界面配置,我们可以将数据源配置到某个微服务应用。
- 当微服务启动时系统会读取配置的数据源,并自动构建数据源。
- 当nacos的配置发生变化时,程序会获取数据源的配置,主动的在系统中配置数据源。
配置方法如下:
2.3 监控数据源
在数据源配置后,我们可以通过监控程序来对druid 数据源进行监控。
访问路径如下:
http://localhost/api/api-form/druid/index.html
账号和密码查看nacos配置:
druid.account=admin
druid.password=admin
2.4 在程序中使用数据源
com.redxun.datasource.DataSourceContextHolder;
DataSourceContextHolder.setDataSource("数据源别名");
//调用完成后清除当前数据源。
DataSourceContextHolder.clearDataSource();
2.5 数据源参数说明
int:
initialSize: ${bpm.datasource.minSize}
minIdle: ${bpm.datasource.minSize}
maxActive: ${bpm.datasource.maxSize}
maxPoolPreparedStatementPerConnectionSize: 20
long:
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
boolean:
testWhileIdle: true
testOnBorrow: ${bpm.datasource.testOnBorrow}
testOnReturn: false
poolPreparedStatements: true
参数 | 参数值 |
---|---|
initialSize | 数据连接池初始大小 |
minIdle | 数据连接最小连接池数 |
maxActive | 数据连接池最大的数量 |
testOnBorrow | 在获取连接时对数据库连接池进行验证 |
3. 工作原理图
文档更新时间: 2021-10-24 21:50 作者:zyg