本文上接前文,分析通过sharding的方式实现读写分离。
通过sharding数据库中间件实现读写分离,废话不说,直接上代码。
maven部分依赖
org.springframework.boot spring-boot-starter-weborg.mybatis.spring.boot mybatis-spring-boot-starter2.2.0 mysql mysql-connector-javaruntime org.apache.shardingsphere sharding-jdbc-spring-boot-starter4.1.1 com.alibaba druid1.2.8
Student实体类及mapper类
@Data
public class Student {
private int id;
private int num;
private String name;
}
public interface StudentMapper {
int insert(Student student);
List findAll();
List findBy(Student student);
}
INSERT INTO student(num,name) VALUES(#{num},#{name})
select * from student
核心配置,application.yml
server:
port: 9002
spring:
application:
# 读写分离
name: sharding-masterslave
# 数据源名称,多数据源以逗号分隔
shardingsphere:
datasource:
names: ds0,ds1
# 数据源ds0
ds0:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/write
username: root
password:
driver-class-name: com.mysql.cj.jdbc.Driver
# 数据源ds1
ds1:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/read1
username: root
password:
driver-class-name: com.mysql.cj.jdbc.Driver
props:
sql.show: true
# 读写分离策略
sharding:
# 默认
default-data-source-name: ds0
master-slave-rules:
masterslave:
master-data-source-name: ds0
slave-data-source-names: ds1
# mybatis,放在resource目录 classpath:/mapper/*.xml
mybatis:
mapper-locations: classpath:mapper/*.xml
测试结果ok,可自行验证。
可见通过sharding数据库中间件实现读写分离非常快捷方便,后续需要深入理解中间件的底层原理及维护。



