概念:
sharding-JDBC是一款分库分表可以实现读写分离的轻量级Java框架,在Java的JDBC 层提供的额外服务。
工作方式:
它使用客户端直连数据库,以jar 包形式提供服知,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM
框架。
•适用于任何基于 JDBC 的ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或
直接使用 JDBC;
•支持任何第三方的数据库连接池,如:DBCP C3PO, BoneCP HikaricP 等;
但是它不支持Druid(德鲁伊)数据库连接池
引入方式:
第一步导入pom文件
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
<version>5.1.1</version>
</dependency>
第二步配置application.yml文件
# 读写分离配置
spring:
shardingsphere:
datasource:
# 配置真实数据源
names: master,slave1,slave2
# 配置第 1 个数据源
master:
driver-class-name: com.mysql.jdbc.Driver
jdbc-url: jdbc:mysql://127.0.0.1:3306/master
password: 123456
type: com.zaxxer.hikari.HikariDataSource
username: root
# 配置第 2 个数据源
slave1:
driver-class-name: com.mysql.jdbc.Driver
jdbc-url: jdbc:mysql://127.0.0.1:3306/slave
password: 123456
type: com.zaxxer.hikari.HikariDataSource
username: root
# 配置第 3 个数据源
slave2:
driver-class-name: com.mysql.jdbc.Driver
jdbc-url: jdbc:mysql://127.0.0.1:3306/slave
password: 123456
type: com.zaxxer.hikari.HikariDataSource
username: root
mode:
# 内存模式
type: Memory
# 打印sql
props:
sql-show: true
rules:
readwrite-splitting:
data-sources:
myds:
# 读数据源负载均衡算法名称
load-balancer-name: alg_round
props:
# 读数据源名称,多个从数据源用逗号分隔
read-data-source-names: slave1,slave2
# 写数据源名称
write-data-source-name: master
# 读写分离类型,如: Static,Dynamic
type: Static
load-balancers:
# 定义负载均衡算法:随机,轮询,权重
alg_random:
type: RANDOM
alg_round:
type: ROUND_ROBIN
alg_weight:
props:
slave1: 1
slave2: 2
type: WEIGHT
注意事项
1.但是它不支持Druid(德鲁伊)数据库连接池
2.sql事务有关的内容需要慎重考虑(可以考虑使用@Transactional注解进行开发)