变更历史
配置入口
可配置属性:
主从数据源配置
类名称:ReplicaQueryDataSourceRuleConfiguration
可配置属性:
名称 | 数据类型 | 说明 | 默认值 |
---|---|---|---|
name | String | 读写分离数据源名称 | - |
primaryDataSourceName | String | 主库数据源名称 | - |
replicaDataSourceNames (+) | Collection<String> | 从库数据源名称列表 | - |
loadBalancerName (?) | String | 从库负载均衡算法名称 | 轮询负载均衡算法 |
MasterSlaveDataSourceFactory
读写分离的数据源创建工厂。
MasterSlaveRuleConfiguration
读写分离规则配置对象。
名称 | 数据类型 | 说明 |
---|---|---|
name | String | 读写分离数据源名称 |
masterDataSourceName | String | 主库数据源名称 |
slaveDataSourceNames | Collection | 从库数据源名称列表 |
loadBalanceAlgorithm (?) | MasterSlaveLoadBalanceAlgorithm | 从库负载均衡算法 |
Properties
属性配置项,可以为以下属性。
MasterSlaveDataSourceFactory
名称 | 数据类型 | 说明 |
---|---|---|
dataSourceMap | Map<String, DataSource> | 数据源与其名称的映射 |
masterSlaveRuleConfig | MasterSlaveRuleConfiguration | 读写分离规则 |
configMap (?) | Map<String, Object> | 用户自定义配置 |
props (?) | Properties | 属性配置 |
MasterSlaveRuleConfiguration
读写分离规则配置对象。
configMap
用户自定义配置。
PropertiesConstant
属性配置项,可以为以下属性。
名称 | 数据类型 | 说明 |
---|---|---|
sql.show (?) | boolean | 是否打印SQL解析和改写日志,默认值: false |
executor.size (?) | int | 用于SQL执行的工作线程数量,为零则表示无限制。默认值: 0 |
max.connections.size.per.query (?) | int | 每个物理数据库为每次查询分配的最大连接数量。默认值: 1 |
check.table.metadata.enabled (?) | boolean | 是否在启动时检查分表元数据一致性,默认值: false |
概念
支持项
- 独立使用读写分离支持SQL透传。
- 同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。
- Spring命名空间。
- 基于Hint的强制主库路由。
不支持范围
- 主库和从库的数据同步。
- 主库和从库的数据同步延迟导致的数据不一致。
- 主库双写或多写。
代码开发示例
仅读写分离
分库分表 + 读写分离
概念
为了缓解数据库压力,将写入和读取操作分离为不同数据源,写库称为主库,读库称为从库,一主库可配置多从库。
支持项
- 提供了一主多从的读写分离配置,可独立使用,也可配合分库分表使用。
- 同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。
- Spring命名空间。
- 基于Hint的强制主库路由。
不支持范围
- 主库和从库的数据同步。
- 主库和从库的数据同步延迟导致的数据不一致。
- 主库双写或多写。