文章目录
- 一 概述
-
- 1 数据库的瓶颈
- 2 优化的手段
- 3 主从复制
- 4 读写分离
- 5 分库分表
-
- 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 读写分离实现
-
- 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的情况下,我们在操作这张表或者这个库的时候,压力都会比较大,所以我们会考虑将数据进行分片,也就是分库分表,