SpringBoot 数据库MySql的读写分离 多数据源 Shardingsphere高并发优化

发布于:2025-04-11 ⋅ 阅读:(42) ⋅ 点赞:(0)

介绍

传统的 MySQL 架构中,所有的数据库操作(包括读操作和写操作)都在同一个数据库实例上进行。随着应用程序的规模增长,单一数据库实例可能会成为瓶颈,无法满足高并发的需求。为了优化性能,可以将数据库的读操作和写操作分开。

写操作(Write):所有的写操作(如 INSERT、UPDATE、DELETE 等)都在主数据库(Master)上进行。
读操作(Read):所有的读操作(如 SELECT)在从数据库(Slave)上进行。
这种方式被称为“读写分离”,它可以通过将负载分散到多个数据库实例上,减少主数据库的。

依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.23</version>
</dependency>

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

Druid介绍 是阿里巴巴开源的数据库连接池。具有高性能、稳定性好、支持监控等特点
ShardingSphere介绍 分布式数据库中间件,提供了数据库分片、读写分离、数据加密、事务管理等功能。

配置文件

spring:
  main:
    # 允许覆盖 Spring 中的 Bean 定义
    allow-bean-definition-overriding: true
  shardingsphere:
    datasource:
      # 定义数据源的名称,这里包含两个数据源,分别为 'm' 和 's1'
      names: m, s1

      # 主数据库数据源配置(m)
      m:
        # 数据库驱动类
        driver-class-name: com.mysql.cj.jdbc.Driver
        # 数据源类型,使用 Druid 连接池
        type: com.alibaba.druid.pool.DruidDataSource
        # 数据库连接 URL,指定连接 MySQL 服务器,使用 3306 端口
        url: jdbc:mysql://172.23.4.128:3306/goods?useUnicode=true
        # 数据库用户名
        username: root
        # 数据库密码
        password: 123456

      # 从数据库数据源配置(s1)
      s1:
        # 数据源类型,使用 Druid 连接池
        type: com.alibaba.druid.pool.DruidDataSource
        # 数据库驱动类
        driver-class-name: com.mysql.cj.jdbc.Driver
        # 数据库连接 URL,指定连接 MySQL 服务器,使用 3307 端口
        url: jdbc:mysql://172.23.4.128:3307/goods?useUnicode=true
        # 数据库用户名
        username: root
        # 数据库密码
        password: 123456

    masterslave:
      # 设置负载均衡算法类型为 'RANDOM',即随机选择主从库  
      load-balance-algorithm-type: RANDOM
      # 设置数据源的名称,这里指定为 'dataSource'
      name: dataSource
      # 设置主库数据源名称,使用之前配置的数据源 'm' 作为主库
      master-data-source-name: m
      # 设置从库数据源的名称,使用 's1' 作为从库
      slave-data-source-names: s1
      props:
        # 设置 SQL 输出日志显示开关,开启 SQL 语句显示
        sql:
          show: true

负载均衡算法

RANDOM: 随机选择从库。
ROUND_ROBIN: 轮询选择从库。
LEAST_CONNECTIONS: 选择连接数最少的从库。
SNAPPY: 通过负载均衡算法动态选择最适合的从库。


网站公告

今日签到

点亮在社区的每一天
去签到