当前位置: 首页 > news >正文

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

介绍

传统的 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: 通过负载均衡算法动态选择最适合的从库。


文章转载自:
http://arsenide.hfstrb.cn
http://cavalvy.hfstrb.cn
http://asomatous.hfstrb.cn
http://blamed.hfstrb.cn
http://basification.hfstrb.cn
http://christianism.hfstrb.cn
http://aberrancy.hfstrb.cn
http://chimpanzee.hfstrb.cn
http://centaurae.hfstrb.cn
http://bugshah.hfstrb.cn
http://cheap.hfstrb.cn
http://centesis.hfstrb.cn
http://assuringly.hfstrb.cn
http://berate.hfstrb.cn
http://bedsheet.hfstrb.cn
http://chloroprene.hfstrb.cn
http://adieu.hfstrb.cn
http://bistro.hfstrb.cn
http://accommodation.hfstrb.cn
http://basidiospore.hfstrb.cn
http://amphiaster.hfstrb.cn
http://calipash.hfstrb.cn
http://broche.hfstrb.cn
http://causer.hfstrb.cn
http://acclimation.hfstrb.cn
http://anthropochory.hfstrb.cn
http://bilinguist.hfstrb.cn
http://acetification.hfstrb.cn
http://assaultable.hfstrb.cn
http://cannes.hfstrb.cn
http://www.dtcms.com/a/123627.html

相关文章:

  • go游戏后端开发33:解散房间
  • Vue3+TS——打造AIVista Image Studio的在线生图工具
  • Chrome浏览器和Microsoft Edge浏览器的导出收藏链接
  • JDK 21 的新特性有哪些?带你全面解读 Java 的未来
  • 学习Python的优势体现在哪些方面?
  • ios按键精灵脚本开发游戏辅助工具的代码逻辑
  • QML中的信号与槽机制
  • 2025.04.10-拼多多春招笔试第三题
  • 前端通信库fetch-event-source实现丰富的SSE
  • 【C++经典例题】字符串转整数(atoi)的实现与解析
  • 使用Go语言实现自动清理应用系统日志
  • WP最主题专业的wordpress主题开发
  • 24体育NBA足球直播M24模板自适应板源码
  • Python - 爬虫-网页抓取数据-库requests
  • Docker 是什么? Docker 基本观念介绍与容器和虚拟机的比较
  • 迟滞模式控制的学习
  • 车辆北斗GPS双模定位管理系统 车载定位终端
  • 【学习笔记】CPU 的“超线程”是什么?
  • Opencv计算机视觉编程攻略-第十三节 跟踪视频中的物品
  • 基于 Python 卷积神经网络的新闻文本分类系统,附源码
  • Zookeeper的通知机制是什么?
  • 高并发环境下超发现象的详细分析,包含场景示例、影响分析及解决方案(悲观锁、乐观锁、分布式锁)
  • 实践 DevOps 项目:使用 Terraform、Helm、SonarQube 和 GitLab CI/CD 在 AWS EKS 上实践全栈部署
  • 深入理解 HTML5 Audio:网页音频播放的新时代
  • VMware Workstation/Player 的详细安装使用指南
  • zabbix和prometheus选择那个监控呢
  • 【Vue #2】脚手架 指令
  • 【Java学习】之AI时代下,Java工程师如何修炼
  • 【杂项】常见的坐标系及其使用方法
  • Python 深度学习实战 第一章 什么是深度学习代码示例