参考:https://www.51cto.com/article/747736.html
https://blog.csdn.net/qq_41581588/article/details/126966665
源码地址:git@gitee.com:jackXUYY/springboot-example.git
读写分离测试
我们启用后缀名为dev的配置文件,如下,数据库链接需要改成自己的地址
库表需要自己建,在resources/sql下
配置如下
# 读写分离配置,使用前先搭建mysql主从数据库,对应UserController
spring:shardingsphere:datasource:# 配置真实数据源names: master,slave1,slave2# 配置第 1 个数据源,为了方便,我们搞3个库,但里面的表一样,当做主从配置master:driver-class-name: com.mysql.jdbc.Driverjdbc-url: jdbc:mysql://127.0.0.1:3306/db_userpassword: roottype: com.zaxxer.hikari.HikariDataSourceusername: root# 配置第 2 个数据源slave1:driver-class-name: com.mysql.jdbc.Driverjdbc-url: jdbc:mysql://127.0.0.1:3306/db_user1password: roottype: com.zaxxer.hikari.HikariDataSourceusername: root# 配置第 3 个数据源slave2:driver-class-name: com.mysql.jdbc.Driverjdbc-url: jdbc:mysql://127.0.0.1:3306/db_user2password: roottype: com.zaxxer.hikari.HikariDataSourceusername: rootmode:# 内存模式 内存模式,初始化配置或执行SQL等操作均在当前进程生效# Standalone 单机模式,可以将数据源和规则等元数据信息持久化,但是这些元数据不会在集群中同步# Cluster 集群模式,提供了多个Apache ShardingSphere实例之间元数据共享以及分布式场景下的状态协调的能力,也提供水平扩展以及高可用的能力# 可参考 https://blog.csdn.net/qq_41581588/article/details/126966665type: Memory# 打印sqlprops:sql-show: truerules:# 读写分离规则readwrite-splitting:# 数据源配置data-sources:# 这个名字随便起myds:# 读写分离类型,如: Static,Dynamictype: Static# 读数据源负载均衡算法名称load-balancer-name: alg_randomprops:# 读数据源名称,多个从数据源用逗号分隔read-data-source-names: slave1,slave2# 写数据源名称write-data-source-name: master# 负载均衡配置load-balancers:# 定义负载均衡算法:随机,轮询,权重alg_random:type: RANDOMalg_round:type: ROUND_ROBINalg_weight:props:slave1: 1slave2: 2type: WEIGHT
启动服务,执行这两个接口看控制台打印结果
垂直分片 测试 (从不同的库中加载多张不同的表在一个项目中使用)
打开dev2的配置,执行OrderController里面的接口看控制台打印的效果
注意数据库链接改成自己的,库表需要先建好,
水平分表测试(将表拆成多个结构一样,每个表存一点数据)使用dev3的配置
建个t_order1的表,和t_order结构一样
水平分片:查询所有记录,
查询了两个数据源,每个数据源中使用UNION ALL连接两个表* Actual SQL: server-order0 ::: SELECT id,order_no,user_id,amount FROM t_order0 UNION ALL SELECT id,order_no,user_id,amount FROM t_order1* Actual SQL: server-order1 ::: SELECT id,order_no,user_id,amount FROM t_order0 UNION ALL SELECT id,order_no,user_id,amount FROM t_order1
关联表测试,使用dev4的配置
略
广播表测试 使用dev5的配置
略