分库分表是大型架构的必备技能,也是大厂经常考察的重点对象,下面我就全面来详解分库分表中间件@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
分库分表中间件定义
分库分表:是数据库水平扩展的一种常见策略,用于处理大规模数据、和高并发请求。
如下图所示:
分库分表,这里分为两个方面,包含:分库、和分表两种策略。
1、分库
分库:就是将数据水平分散到多个数据库实例中,每个数据库实例可以部署在不同的服务器上,从而减轻单个数据库的压力。
还是举一个例子,比如:数据按照某个字段的值范围,分布到不同的库中。
例如:用户ID为1-10000的数据存储在库A,10001-20000的数据存储在库B,这就是分库。
2、分表
分表:就是在单个数据库实例内,将数据水平分散到多个表中,从而减轻单表的压力。
还是举一个例子,比如:根据某个字段的值范围分表。
例如:用户ID为1-10000的数据存储在表user_1,10001-20000的数据存储在表user_2,这就是分表。
总之,分库分表是数据库扩展中常用的策略,目的是提高系统的并发处理能力、和数据存储能力。
主流分库分表中间件
在了解完分库分表后,我们一起来看看目前市场主流的分库分表中间件有哪些呢?let's go!
1.ShardingSphere
ShardingSphere 是一个开源的分布式数据库中间件解决方案,支持:分库分表、读写分离、分布式事务、数据加密……等多种功能。
ShardingSphere 通过统一的接口、和高性能的实现,为开发者提供了透明的分库分表支持,适用于Java等应用。
如下图所示:
主要包括三个核心组件:
ShardingSphere 适用于各种需要分布式数据库管理的场景,比如:电商、社交网络…..等需要处理大规模数据,和高并发请求的场景。
2.TDDL
TDDL,全称是Taobao Distributed Data Layer,就是:淘宝分布式数据层。
TDDL是阿里巴巴集团内部开发的一款分布式数据库中间件,设计目标是:解决在电商业务中遇到的大规模数据、和高并发请求问题。
3.DRDS
阿里的TDDL,后续升级为:DRDS,全称是“Distributed Relational Database Service”,是一款:分布式关系型数据库服务。
DRDS整体架构,如下图所示:
DRDS支持:分库分表、读写分离、和分布式事务…等技术。
DRDS广泛应用于数据量大的场景,比如:电商、金融、游戏…等领域。
4.MyCAT
MyCAT 是基于阿里巴巴的 Cobar 项目开发的,是一个增强版的数据库中间件,支持多种数据库(如: MySQL、PostgreSQL…)等。
整体架构,如下图所示:
MyCAT 支持将数据分散到多个数据库实例、和多个表中,通过灵活的分片规则实现水平扩展。
比如:
5.Atlas
Atlas 是由360 公司开发的一款开源 MySQL 数据库中间件,可以实现 MySQL 数据库的水平扩展、和高可用性。
Atlas 支持分库分表,以及还支持读写分离,将写请求发送到主库,读请求发送到从库,从而提升系统的读写性能和可用性。
6.Vitess
Vitess 是一个开源的分布式数据库中间件系统,最初由 YouTube 开发,用于解决其在大规模 MySQL 集群中的扩展性问题。
Vitess 通过分库分表技术,将数据分散存储到多个 MySQL 实例中,从而提升数据库的存储能力、和并发处理能力。
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777