背景

面 对 日 益 增 加 的 系 统 访 问 量 , 数 据 库 的 吞 吐 量 面 临 着 巨 大 瓶 颈 。 对 于 同 一 时 刻 有 大 量 并 发 读 操 作 和 较 少 写 操 作 类 型 的 
应 用 系 统 来 说 , 将 数 据 库 拆 分 为 主 库 和 从 库 , 主 库 负 责 处 理 事 务 性 的 增 删 改 操 作 , 从 库 负 责 处 理 查 询 操 作 , 能 够 有 效 
的 避 免 由 数 据 更 新 导 致 的 行 锁 使 得 整 个 系 统 的 查 询 性 能 得 到 极 大 的 改 善 。 
SELECT 飛 FROM t_user WHERE id=l 
UPDATEt_userSETstatuS=?WHEREid=1 
SELECT 黨 FROM t_user WHERE id=l 
UPDATEt_userSETstatus=?WHEREid=1 
DB 
lave 
Ma

 

Sharding-JDBCfrZ 
• EX-Yff«m+JDBCfiORMER, n: JPA, Hibernate, Mybatis, Spring JDBC 
• n: DBCP, c-3P0, Bonecp, Druid, HikariCP$o 
• äüßMySQL, oracle, SQLServer, PostgreSQLPÅAffföJMSQL92fiE 
(dependency) 
apache. 
<arti fact shard i ng— i fact 
<version>4. 0. O—RCI 
< / dependency>

 

Sharding-JDBC配置与分离规则(重点)

<dependencp 
<groupld>org.apache.shardingsphere</groupld> 
artifactld> 
<version>4.O.O-RC1</version> 
e/ dependencp

2.在application.yml中配置读写分离规则

server:

  port: 8080

spring:

  shardingsphere:

    datasource:

      names:

        master,slave

      # 主数据源 matser

      master:

        type: com.alibaba.druid.pool.DruidDataSource

        driver-class-name: com.mysql.cj.jdbc.Driver

        url: jdbc:mysql://192.168.138.100:3306/rw?characterEncoding=utf-8

        username: root

        password: root

      # 从数据源 slave

      slave:

        type: com.alibaba.druid.pool.DruidDataSource

        driver-class-name: com.mysql.cj.jdbc.Driver

        url: jdbc:mysql://192.168.138.101:3306/rw?characterEncoding=utf-8

        username: root

        password: root

    masterslave:

      # 读写分离配置 从库负载均衡策略,round_robin:轮询查询

      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:

    allow-bean-definition-overriding: true

mybatis-plus:

  configuration:

    #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射

    map-underscore-to-camel-case: true

    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

  global-config:

    db-config:

      id-type: ASSIGN_ID

3.在配置文件中配置允许Bean定义覆盖配置项

mal n: 
tion—overriding: tru