ShardingSphere-Proxy 分库分表(一)
一、ShardingSphere-Proxy 的核心概念
ShardingSphere-Proxy 概念
官方地址:
ShardingSphere-Proxy 就是数据库的代理,如图:
ShardingSphere-Proxy 主要代理哪些数据库
默认代理:Mysql、PostSql
实现代理的目的
主要是为了完成分库分表
实现读写分离
这两个也是 ShardingSphere-Proxy 的两大核心功能。
分库分表
分库的概念和目的
概念
数据库中的表存储到不同的数据库中;如图:
目的
防止一个库中多个表出现资源竞争【CPU、内存】,导致性能下降。
分表的概念和目的
概念
将数据库中一张表分成多张表,如图:
目的
分表是解决表中数据量过大,提升用户查询和添加数据的性能。
比如:以 mysql 数据库为例,当用户添加数据会通过 mysql 的 InnoDB 引擎存储到数据中,InnoDB 引擎要想保证数据的性能在一定的范围之内,表中的数据量最大的峰值为 2000w,如果超过 2000W 那么添加数据的性能会下降,所以我们要将超过 2000W 数据量的表拆分成多个表,这样才能保证用户的体验度。
缺陷
并发量过大,表会出现资源竞争[CPU、内存]的问题,这样导致性能下降,用户的体验度变差。
解决方案:分库
分库分表
目的
解决表资源竞争和数据量过大的问题。
二、ShardingSphere-Proxy 的应用场景
场景
单体项目和微服务项目都能用到分库分表。
三、ShardingSphere-Proxy 分布分表落地
工具
ShardingSphere-Proxy
方案
进程内
如图:
缺陷
资源竞争问题。
异常影响问题。
进程外 【推荐】
如图:
缺陷
维护量大的问题。
性能相对进程内弱一些。
可以放在内网中进行通信【docker】
实现
条件
Mysql 数据库 版本:5.7
ShardingSphere-Proxy
网盘下载地址
配置
分表
配置
config-sharding.yaml 分片的配置文件
四、ShardingSphere-Proxy 运行原理
整体架构
总共 6 个阶段:
1、Database Adaptors:数据库的选择
2、SQL Parser:解析 sql
3、SQL Router:sql 路由 去哪一个真实数据库执行
4、SQL Rewriter:sql 优化重写 核心 保证性能
5、SQL Executor Engine:执行 sql 语句 真实数据库获取结果
6、Result Merger:结果合并 从多个表获取结果
五、ShardingSphere_Proxy 分片原理
分片的概念
就是将数据分片到不同的表中。
分片键
分片键就是表中的字段。就是根据什么字段分片的。
分片算法
根据规则【分片算法】按分片键将数据分到不同的表中。
取模算法
缺陷
只能时数字类型
hash+取模
如果分片键为字符类型,就用 hash+取模的方式进行分片。
版权声明: 本文为 InfoQ 作者【@@神农】的原创文章。
原文链接:【http://xie.infoq.cn/article/e917fa680c2218a56058a15c8】。未经作者许可,禁止转载。
评论