分库分表中间件分类与分库分表知识点详解

为什么需要分库分表:

如果一个网站业务快速发展,那这个网站的流量也会增加。数据的压力也会随着而来。
比如电商系统来说双十一大促对订单数据库的压力很大。TPS十几万并发量,
如果是传统的架构(一主多从),主库容量肯定无法满足这么高的TPS。
业务越来越大,单表数据超出了数据库支持的容量。
持久化磁盘IO,传统的数据库性能瓶颈,产品经理业务必须这么做
改变程序。数据库下刀子切分优化:
1、换数据库》onsql
2、Sql、索引、字段
3、读写分离
4、分库分表
5、分区

什么是分库分表:

即把存于一个库的数据分散到多个库中,把存于一个表的数据分散到多个表中。
一个库一个表 拆分为 N个库N个表

分库分表常见方式:

垂直

通俗的说法叫做“大表拆小表”,拆分是基于关系型数据库中的“列”(字段)进行的。
在这里插入图片描述

特点:
1、每个库(表)的结构都不一样
2、每个库(表)的数据都(至少有一列)一样
3、每个库(表)的并集是全量数据
总结:按拆分字段(多表字段拆成少表字段)
优点:

1、拆分后业务清晰(专库专用按业务拆分)
2、实现动静分离、冷热数据分离设计体现。冷库:发布说说信息 热:说说点赞评论数据
3、数据维护简单、按业务不同业务放到不同机器上
缺点:
1、如果单表的数据量大、写读压力大
2、受某种业务来决定、或者被限制。也就是说一个业务往往会影响到数据库的瓶颈(性能问题)
3、部分业务无法关联 join、只能通过java程序接口去调用,提供了开发复杂度。 (商品、订单信息、会员信息)

水平

以某个字段按照一定的规律(取模)将一个表的数据分到多个库中

特点:
水平(横向)分库
1、每个库(表)的结构都一样
2、每个库(表)的数据都不一样
3、每个库(表)的并集是全量数据
总结:按数据(内容)拆分
优点:
1、单库(表)的数据保持在一定的量(减少),有助于性能提高
2、提高了系统的稳定性和负载能力。
3、切分的表的结构相同、程序改造较少
缺点:
1、数据的扩容很有难度维护量大
2、拆分规则很难抽象出来
3、分片事务的一致性的问题部分业务无法关联 join、只能通过java程序接口去调用

分库分表带来的问题:

分库分表:
增加了我们维护成本
分布式事务(跨库事务)
跨库join
分布式全局唯一ID
分库分表算法:
**一、取模(Hash)**通过userid用户表字段值进行123%3=xxxx 数据分散均衡,避免数据热点 一致性hash(扩容需要O(N))扩容难度

二、范围区分(range) 按月 按省 A(0-6)B(7-8)C(9 10)热点数据
三、预定义(list) (100w 1亿 移动互联网)

读写分离:

在这里插入图片描述

什么是读写分离:我们一般应用程序访问数据库无非是读取数据、修改数据、插入数据、删除数据 CRUD。
mysql自带binlog
读写分离带来的问题:

扫描二维码关注公众号,回复: 11639012 查看本文章

**读写分离:**主从同步、数据一致性的问题、网络延迟的问题
**强制路由:**强制去访问master

分库分表的中间件:

在这里插入图片描述
Proxy、jdbc两种方式
Proxy(代理层):mycat代理层、atlas(360)mysql-proxy
优点:
1、开发无感知 2、增删节点程序不需要重启 3、跨语言(java 、php)

缺点:
1、性能下降没因为多了一层 2、不支持跨数据库
Jdbc(直连层):shardingsphere(sharding-jdbc)、TDDL(淘宝 部分开源)
优点:
1、性能很好的 2、支持跨数据库jdbc
缺点:
1、增加了开发难度 2、不支持跨语言(java)

分库分表中间件:ShardingSphere

Apache ShardingSphere(Incubator) 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(规划中)这3款相互独立,却又能够混合部署配合使用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。

ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。它通过关注不变,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。
https://shardingsphere.apache.org

猜你喜欢

转载自blog.csdn.net/SpringBoot_/article/details/103818679