Skip to content

Latest commit

 

History

History
 
 

ahao-spring-boot-balance-datasources

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

特性

  1. 支持多数据源、读写分离、分组数据源
  2. 通过 DataSourcePropertiesRepository 配置, 从不同渠道加载数据源
  3. 提供轮询、随机两种负载均衡算法
  4. 支持注解、Filter形式的切换数据源方式

使用

第一步: 在yml配置文件spring.datasource.balance配置相关参数.

spring:
  datasource:
    balance:
      primary: master
      load-balance-strategy: PollingStrategy
      group-by: "_"

第二步: 实现DataSourcePropertiesRepository接口并注册为Bean, 提供数据源参数. 具体可以参考DataSourcePropertiesMemoryImpl. 第三步: 选择DataSourceAOPDataSourceFilter注册为Bean, 也可以两个都用.

如果是分组数据源, 只要用_分割组名即可, 比如slave_1.

然后在方法上面加上注解即可. 主数据源: @MasterDataSource 从数据源: @SlaveDataSource 自定义数据源: @DataSource("数据源名称")

如果要手动切换, 调用以下代码即可, 和注解是等价的. 主数据源: DataSourceContextHolder.set("master"); 从数据源: DataSourceContextHolder.set("slave"); 清除配置: DataSourceContextHolder.clear();避免影响后续数据源切换.

负载均衡算法

内置两种简单负载均衡算法, 参考strategy.

  1. 随机
  2. 顺序轮询(可以改造, 接入Redis计数)