02-项目实现读写分离

十念  金牌会员 | 2022-9-16 17:16:17 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 904|帖子 904|积分 2712

三、项目实现读写分离

实现方式跟同一个目录下的01-读写分离测试案例基本一致,只不过是将数据库替换成了项目使用的数据库

  • 同时还有非常重要的一点,ShardingSphere-JDBC的作用不止是读写分离,更重要的是其能通过配置文件配置指定算法,可以自动化的完成对数据库进行分库分表操作且不需要更改任何代码
  • 关于分库分表操作,因为本次项目案例数据量较小,暂不使用。感兴趣的朋友可以参考后续新闻头条项目练习的相关博客
3.1、数据库环境准备


  • 导入项目中的数据库即可

    • 在个人项目中使用可视化软件,将相关表进行一个导出,然后再对虚拟机中的数据库进行导入
    • 因为操作比较简单,具体过程这里就不演示了

3.2、读写分离配置

跟01-读写分离案例基本没区别,更换数据库名称即可


  • ①、引入Sharding-JDBC的相关依赖

      1. <dependency>
      2.     <groupId>org.apache.shardingsphere</groupId>
      3.     <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
      4.     <version>4.0.0-RC1</version>
      5. </dependency>
      复制代码

  • ②、配置数据源

      1. #spring:
      2. #  datasource:
      3. #    driver-class-name: com.mysql.jdbc.Driver
      4. #    url: jdbc:mysql://192.168.222.135:3306/tb_user?useSSL=false&characterEncoding=UTF-8
      5. #    username: root
      6. #    password: root
      7. spring:
      8.   shardingsphere:
      9.     datasource:
      10.       names: master,slave
      11.       # 主数据源
      12.       master:
      13.         type: com.alibaba.druid.pool.DruidDataSource
      14.         dirver-class-name: com.mysql.jdbc.Driver
      15.         url: jdbc:mysql://192.168.200.200:3306/reggie?useSSL=false&characterEncoding=UTF-8
      16.         username: root
      17.         password: root
      18.       #从数据源
      19.       slave:
      20.         type: com.alibaba.druid.pool.DruidDataSource
      21.         dirver-class-name: com.mysql.jdbc.Driver
      22.         url: jdbc:mysql://192.168.200.201:3306/reggie?useSSL=false&characterEncoding=UTF-8
      23.         username: root
      24.         password: root
      25.     masterslave:
      26.       # 读写分离配置
      27.       load-balance-algorithm-type: round_robin  # 轮询负载均衡
      28.       # 最终的数据源名称
      29.       name: dataSource
      30.       # 主数据库的名称
      31.       master-data-source-name: master
      32.       slave-data-source-names: slave
      33.     props:
      34.       sql:
      35.         show: true  # 开启SQL显示,默认为false
      36.   main:
      37.     # 该配置项的目的,就是如果当前项目中存在同名的bean,后定义的bean会覆盖先定义的。
      38.     # 如果不配置该项,项目启动之后会报错
      39.     allow-bean-definition-overriding: true
      40. mybatis:
      41.   type-aliases-package: com.coolman.model   #
      42.   configuration:
      43.     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
      44.     map-underscore-to-camel-case: true
      45.   mapper-locations:
      46.     - classpath:mappers/*.xml
      47. server:
      48.   port: 8081
      复制代码

3.3、功能测试

运行项目,执行测试


  • 配置完毕后,启动项目进行测试,直接访问系统管理后台的界面,然后执行相关业务操作,看控制台的日志信息即可
  • 查询操作192.168.200.201:3306



  • 更新操作192.168.200.200:3306



  • 插入操作



  • 删除操作




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表