【四十五,瑞吉外卖项目】读写分离-sharding-JDBC介绍 + 入门案例分析

一,背景
在这里插入图片描述

二,sharding-JDBC介绍
那如何实现读写分离呢,也就是说程序怎么去判定当前的sql是查询的还是增删改的呢,根据这个sql怎么能找到从库而不是主库呢。
可以通过Sharding-JDBC框架实现
特点:兼容性强,支持任何第三方数据库连接池,支持任意规范的数据库。
在这里插入图片描述

三,入门案例
前提:配置好MySQL的主从复制
用一个简单的项目做案例即可。
1,导入坐标

<dependency>
	<groupId>org.apache.shardingsphere</groupId>
	<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
	<version>4.0.0-RC1</version>
</dependency>

2,在yml配置文件中配置读写分离规则

#操作数据库为啥没配置数据源?
#因为要使用sharding-jdbc来充当jdbc层框架,数据源就不用配置了,它有自己的配置
spring:
  shardingsphere:
    datasource:
      names:
        master,slave  #两个数据源,名字分别是master,slave,名字可以不固定,但是下面的master和slave的字眼要与此处的一致
      #主数据源
      master:
        type: com.alibaba.druid.pool.DruidDataSource
        driveer-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.129.128:3306/rw?user=root&password=root&characterEncoding=utf-8
        #name: root
        #password: root
      #从数据源
      slave:
        type: com.alibaba.druid.pool.DruidDataSource
        driveer-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.129.130:3306/rw?user=root&password=root&characterEncoding=utf-8
        name: root
        password: root
    masterslave:
      #读写配置分离 从库负载均衡策略,round_robin轮询,当多个从库则按顺序查询
      load-balance-algorithm-type: round_robin
      #最终的数据源名称  bin的名字
      name: dataSource
      #主库数据源名称 指定主库的数据源(很明显配置了master为主库)
      master-data-source-name: master
      #从库数据源名称列表,当多个从库以逗号分隔
      slave-data-source-names: slave
    props:
      sql:
        show: true #开启sql显示,默认为false

直接启动项目则会报错
在这里插入图片描述
报错信息:The bean 'dataSource', defined in class path resource [org/apache/shardingsphere/shardingjdbc/spring/boot/SpringBootConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class] and overriding is disabled.
原因是shardingjdbc的jar包的配置类SpringBootConfiguration 与 druid连接池这个jar包的配置类DruidDataSourceAutoConfigure发生冲突

在shardingjdbc的配置类里要创建一个数据源对象,但是在druid连接池也要创建一个数据源对象,就发生了冲突
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3,在yml配置文件中配置,允许bin定义覆盖
spring下的

main:
    allow-bean-definition-overriding: true

配置好之后,就交由框架处理,查询自从库,增删改自主库

四,功能测试
1,增加
在这里插入图片描述
在主库进行操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2,查询
在这里插入图片描述
在从库进行操作
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是瑞吉外卖的功能项目分析: 1. 用户端功能 - 用户注册:用户可以通过手机号、邮箱等方式进行注册。 - 用户登录:用户可以通过已注册的账号进行登录。 - 菜品搜索:用户可以通过菜品名称、分类、口味等关键词进行搜索。 - 菜品浏览:用户可以浏览所有菜品,并查看菜品详情、价格、评价等信息。 - 菜品点餐:用户可以将心仪的菜品添加到购物车中,并选择数量、口味等选项。 - 购物车管理:用户可以对购物车中的菜品进行查看、修改、删除等操作。 - 订单管理:用户可以查看自己的历史订单记录,并进行订单评价、投诉等操作。 - 在线支付:用户可以通过第三方支付平台进行在线支付。 - 个性化推荐:系统可以根据用户的历史订单、评价等信息,为用户推荐符合其口味的菜品。 2. 商家端功能 - 商家入驻:商家可以通过填写相关信息进行入驻申请。 - 菜品管理:商家可以添加、修改、删除菜品,并设置菜品价格、口味等选项。 - 订单管理:商家可以查看所有订单记录,并进行订单状态的修改、配送等操作。 - 数据统计:商家可以查看销售额、订单量等数据统计信息。 - 配送管理:商家可以对配送员进行管理,分配订单等操作。 3. 管理员端功能 - 用户管理:管理员可以对用户进行管理,并进行禁言、封号等操作。 - 商家管理:管理员可以对商家进行审核、管理,并进行下架、封禁等操作。 - 订单管理:管理员可以查看所有订单记录,并进行订单状态的修改、配送等操作。 - 数据统计:管理员可以查看销售额、订单量等数据统计信息。 以上是瑞吉外卖的功能项目分析,希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值