三、项目实现读写分离
实现方式跟同一个目录下的01-读写分离测试案例基本一致,只不过是将数据库替换成了项目使用的数据库
- 同时还有非常重要的一点,ShardingSphere-JDBC的作用不止是读写分离,更重要的是其能通过配置文件配置指定算法,可以自动化的完成对数据库进行分库分表操作,且不需要更改任何代码
- 关于分库分表操作,因为本次项目案例数据量较小,暂不使用。感兴趣的朋友可以参考后续新闻头条项目练习的相关博客
3.1、数据库环境准备
- 导入项目中的数据库即可
- 在个人项目中使用可视化软件,将相关表进行一个导出,然后再对虚拟机中的数据库进行导入
- 因为操作比较简单,具体过程这里就不演示了
3.2、读写分离配置
跟01-读写分离案例基本没区别,更换数据库名称即可
- ①、引入Sharding-JDBC的相关依赖
- <dependency>
- <groupId>org.apache.shardingsphere</groupId>
- <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
- <version>4.0.0-RC1</version>
- </dependency>
复制代码
- ②、配置数据源
- #spring:
- # datasource:
- # driver-class-name: com.mysql.jdbc.Driver
- # url: jdbc:mysql://192.168.222.135:3306/tb_user?useSSL=false&characterEncoding=UTF-8
- # username: root
- # password: root
- spring:
- shardingsphere:
- datasource:
- names: master,slave
- # 主数据源
- master:
- type: com.alibaba.druid.pool.DruidDataSource
- dirver-class-name: com.mysql.jdbc.Driver
- url: jdbc:mysql://192.168.200.200:3306/reggie?useSSL=false&characterEncoding=UTF-8
- username: root
- password: root
- #从数据源
- slave:
- type: com.alibaba.druid.pool.DruidDataSource
- dirver-class-name: com.mysql.jdbc.Driver
- url: jdbc:mysql://192.168.200.201:3306/reggie?useSSL=false&characterEncoding=UTF-8
- username: root
- password: root
- masterslave:
- # 读写分离配置
- load-balance-algorithm-type: round_robin # 轮询负载均衡
- # 最终的数据源名称
- name: dataSource
- # 主数据库的名称
- master-data-source-name: master
- slave-data-source-names: slave
- props:
- sql:
- show: true # 开启SQL显示,默认为false
- main:
- # 该配置项的目的,就是如果当前项目中存在同名的bean,后定义的bean会覆盖先定义的。
- # 如果不配置该项,项目启动之后会报错
- allow-bean-definition-overriding: true
- mybatis:
- type-aliases-package: com.coolman.model #
- configuration:
- log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
- map-underscore-to-camel-case: true
- mapper-locations:
- - classpath:mappers/*.xml
- server:
- port: 8081
复制代码
3.3、功能测试
运行项目,执行测试
- 配置完毕后,启动项目进行测试,直接访问系统管理后台的界面,然后执行相关业务操作,看控制台的日志信息即可
- 查询操作192.168.200.201:3306
- 更新操作192.168.200.200:3306
- 插入操作
- 删除操作
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |