数据库中间件ShardingSphere v5.2.1

文章目录

  • 一 概述
    • 1 数据库的瓶颈
    • 2 优化的手段
    • 3 主从复制
    • 4 读写分离
    • 5 分库分表
      • 5.1 背景
      • 5.2 垂直分片
      • 5.3 水平分片
    • 6 ShardingSphere简介
  • 二 ShardingSphere-JDBC讲解
    • 1 读写分离实现
      • 1.1 基于Docker搭建MySQL主从
        • 1.1.1 部署结构
        • 1.1.2 主节点配置
        • 1.1.3 从节点1配置
        • 1.1.4 从节点2配置
        • 1.1.5 主从复制测试
      • 1.2 ShardingSphere-JDBC实现读写分离
        • 1.2.1 创建SpringBoot项目
        • 1.2.2 添加依赖
        • 1.2.3 创建实体
        • 1.2.4 创建Mapper
        • 1.2.5 配置读写分离
      • 1.3 读写分离测试
      • 1.4 负载均衡算法
        • 1.4.1 常见负载均衡算法
        • 1.4.2 事务情况测试
        • 1.4.3 负载均衡策略配置
    • 2 分库分表实现
      • 2.1 基于Docker搭建垂直分表环境
        • 2.1.1 部署结构
        • 2.1.2 创建容器
        • 2.1.3 创建数据库
      • 2.2 ShardingSphere-JDBC实现垂直分表
        • 2.2.1 创建实体类
        • 2.2.2 创建Mapper
        • 2.2.3 垂直分片配置
        • 2.2.4 垂直分片测试
      • 2.3 ShardingSphere-JDBC实现水平分表
        • 2.3.1 部署结构
        • 2.3.2 修改数据表结构
        • 2.3.3 分布式序列ID介绍
        • 2.3.4 配置分布式序列ID
        • 2.3.5 分布式序列ID测试
        • 2.3.6 水平分表配置
        • 2.3.7 水平分表测试
      • 2.4 ShardingSphere-JDBC实现水平分库
        • 2.4.1 部署结构
        • 2.4.2 创建容器
        • 2.4.3 创建表
        • 2.4.4 水平分库配置
        • 2.4.5 水平分库测试
      • 2.5 分片后存在的问题
        • 2.5.1 多表关联查询-绑定表
        • 2.5.2 字典表问题-广播表
  • 三 ShardingSphere-Proxy讲解
    • 1 基于Docker安装ShardingSphere-Proxy
      • 1.1 上传MySQL驱动
      • 1.2 新增配置文件server.yaml
      • 1.3 创建容器
      • 1.4 测试
    • 2 读写分离实现
      • 2.1 数据源配置
      • 2.2 程序访问
    • 3 分库分表实现
      • 3.1 垂直分表实现
      • 3.2 水平分表实现
      • 3.3 水平分库实现
      • 3.4 绑定表实现
      • 3.5 广播表实现
  • 四 项目集成ShardingSphere
      • 1 主节点配置
      • 2 从节点配置
      • 3. 创建statement_db数据库
      • 4.创建Proxy服务器
      • 5. 程序访问测试

一 概述

1 数据库的瓶颈

  • 随着业务的增多,单机的数据库是连接数有限的,当应用程序的请求比较多的情况下,数据库的连接数就不够用了,就会出现访问缓慢的情况。
  • 表数据量过大,有些查询命中不了索引从而导致全表扫描;维护索引的效率也随着数据量大到一定量级后指数级下降;新增修改数据的速度会下降很多。

2 优化的手段

- 缓存: 对于一些经常查询但是修改频率不高的数据或者一些对实时性要求并不高的数据,我们可以用缓存装起来,然后请求过来的时候,可以减少请求落入到数据库中,从而减轻对数据库端的压力
- MQ: 对于突如其来的流量的高峰,如果没有任务措施处理,请求可能会把数据库直接打奔溃,可以利用MQ做流量的缓冲,达到削峰填谷效果,从而保护数据库。
- 读写分离: 对于一个系统来说,大部分情况都是读多写少,可以采取主从的架构,然后把写请求和读请求分离,如果读压力依然比较大的情况,可以增加从的节点从而拓展读的能力.
- 分库分表: 当单张表的数据量比较大,比如达到1000w的情况下,我们在操作这张表或者这个库的时候,压力都会比较大,所以我们会考虑将数据进行分片,也就是分库分表,
ShardingSphere 5.2.1是一个开源的分布式数据库中间件,它能够对关系型数据库进行分片和分表操作,提供了数据分片、读写分离、分布式事务等功能。 ShardingSphere 5.2.1的主要特点有: 1. 数据分片:能够将单一的数据库拆分成多个片段,使得数据在多个数据库中进行存储和查询,从而提高数据库的并发处理能力。 2. 读写分离:支持将读操作和写操作分别分发到不同的数据库节点上,进行负载均衡和提升读写性能。 3. 分布式事务:通过协调多个数据库节点进行事务的提交和回滚,保证分布式环境下的一致性。 4. 数据融合:支持将多个数据库中的数据进行合并查询,并提供了跨库查询的能力。 5. 水平扩展:通过增加数据库节点,实现对系统的水平扩展,提高系统的吞吐量和扩展能力。 6. 透明化接入:通过简单的配置,可以将ShardingSphere作为中间件接入到已有的系统中,无需对现有代码进行修改。 ShardingSphere 5.2.1提供了丰富的功能和灵活的配置选项,可以根据实际需求进行选择和配置。同时,它还提供了基于Spring和MyBatis的开箱即用的集成工具,方便开发人员进行使用。 总之,ShardingSphere 5.2.1是一个功能强大且易于使用的分布式数据库中间件,适用于各种规模的应用程序,能够帮助用户解决数据库性能瓶颈和扩展性等问题,提升系统的处理能力和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北执南念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值