变更历史

    配置入口

    可配置属性:

    主从数据源配置

    类名称:ReplicaQueryDataSourceRuleConfiguration

    可配置属性:

    名称数据类型说明默认值
    nameString读写分离数据源名称-
    primaryDataSourceNameString主库数据源名称-
    replicaDataSourceNames (+)Collection<String>从库数据源名称列表-
    loadBalancerName (?)String从库负载均衡算法名称轮询负载均衡算法

    MasterSlaveDataSourceFactory

    读写分离的数据源创建工厂。

    MasterSlaveRuleConfiguration

    读写分离规则配置对象。

    名称数据类型说明
    nameString读写分离数据源名称
    masterDataSourceNameString主库数据源名称
    slaveDataSourceNamesCollection从库数据源名称列表
    loadBalanceAlgorithm (?)MasterSlaveLoadBalanceAlgorithm从库负载均衡算法

    Properties

    属性配置项,可以为以下属性。

    MasterSlaveDataSourceFactory

    名称数据类型说明
    dataSourceMapMap<String, DataSource>数据源与其名称的映射
    masterSlaveRuleConfigMasterSlaveRuleConfiguration读写分离规则
    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

    概念

    支持项

    1. 独立使用读写分离支持SQL透传。
    2. 同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。
    3. Spring命名空间。
    4. 基于Hint的强制主库路由。

    不支持范围

    1. 主库和从库的数据同步。
    2. 主库和从库的数据同步延迟导致的数据不一致。
    3. 主库双写或多写。

    代码开发示例

    仅读写分离
    分库分表 + 读写分离

    概念

    为了缓解数据库压力,将写入和读取操作分离为不同数据源,写库称为主库,读库称为从库,一主库可配置多从库。

    支持项

    1. 提供了一主多从的读写分离配置,可独立使用,也可配合分库分表使用。
    2. 同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。
    3. Spring命名空间。
    4. 基于Hint的强制主库路由。

    不支持范围

    1. 主库和从库的数据同步。
    2. 主库和从库的数据同步延迟导致的数据不一致。
    3. 主库双写或多写。

    代码开发示例