登录 |  注册
首页 >  架构·案例 >  架构师学习之路-Java开发实战学习笔记 >  为什么要分库分表?分库分表的中间件有哪些?

为什么要分库分表?分库分表的中间件有哪些?

一、为什么要分库分表

分库分表的中间件是用来解决数据库单表数据量过大、单个数据库压力过高所引发的性能瓶颈问题的一种技术手段。这些中间件主要负责透明地将SQL请求路由到正确的数据库和表,并处理分布式事务、数据一致性等问题。

分库分表的主要原因是为了应对数据库在处理大量数据和高并发访问时遇到的性能瓶颈,以及单体数据库的容量限制。具体理由如下:

性能瓶颈:

  • 单表数据量过大:随着业务增长,单张表的数据量可能达到百万、千万甚至亿级别的记录,这会导致查询效率降低,索引体积增大,查询时的I/O开销剧增,尤其在涉及到大量数据排序、聚合操作时,性能会显著下降。

  • 并发压力:单个数据库服务器处理并发请求的能力有限,当请求量超过服务器处理能力时,会引发连接数满、锁竞争激烈、CPU使用率饱和、内存不足等一系列性能问题。

资源限制:

  • 单机资源有限:一台服务器的CPU、内存、硬盘空间以及I/O能力都有上限,无法无限扩展以支撑不断增长的数据和访问量。

  • 扩展困难:单一数据库无法利用分布式计算和存储的优势,难以水平扩展以应对业务增长带来的数据处理需求。

业务发展需要:

  • 高可用与灾备:将数据分散到多个数据库中,有利于实现高可用架构,避免单点故障导致所有数据不可用。

  • 异地多活与分区自治:分库分表有助于业务在全球范围内部署,实现数据就近访问,降低延迟,并支持不同区域的业务自治。

架构扩展性:

  • 分布式处理:通过分库分表,可以将数据分布到多台服务器上,实现分布式存储和计算,从而突破单机数据库的性能和容量瓶颈。

  • 业务拆分与耦合度降低:将不同的业务模块或数据类型分配到不同的库或表,便于业务模块之间的解耦和独立扩展。

因此,分库分表是一种常见的数据库优化策略,它通过水平拆分和垂直拆分的方式,将原本庞大的单个数据库划分为多个较小的数据库或表,分布在不同的服务器上,以提高系统的整体性能、可用性及可扩展性。不过,实施分库分表的同时也会带来数据管理和维护的复杂性,需要通过中间件、分布式事务处理机制等方式来解决数据一致性和完整性问题。

二、分库分表的中间件有哪些

以下是近年来一些常用的分库分表中间件:

  • ShardingSphere(包含Sharding-JDBC和Sharding-Proxy):

ShardingSphere是由Apache软件基金会孵化的开源项目,它提供了一套完整的分布式数据库解决方案,其中包括分库分表、读写分离、数据治理等功能。

  • MyCat

MyCat是一款开源的数据库中间件,支持MySQL协议,能够在无须更改代码的情况下实现MySQL的分库分表,提供分布式数据库的解决方案。

  • ShardingSphere Proxy:

ShardingSphere Proxy作为一个独立的数据库代理服务,提供了更强大的数据库代理能力,相比于Sharding-JDBC,它可以在数据库层面提供更全面的服务端支持。

  • Cobar:

Cobar是阿里巴巴早期开源的一款MySQL分布式中间件,已停止维护多年,但其设计理念和技术思路影响了后续的许多同类产品。

  • Atlas:

百度开源的分布式数据库中间件,支持MySQL的分库分表,现已被百度内部其他产品替代,但在开源社区仍有一定的影响力。

  • TDDL (Taobao Distributed Data Layer):

TDDL是淘宝数据库团队研发的分布式数据库访问组件,支持海量数据的在线平滑扩展,目前阿里云DRDS(分布式关系型数据库服务)是在TDDL基础上发展而来的商业产品。

  • Vitess:

Vitess最初由YouTube开发,是一个针对MySQL分片的大规模数据库系统,现在已经成为CNCF下的一个孵化项目,用于在云环境和其他大型部署中支持MySQL数据库。

随着技术演进,新的解决方案也在不断涌现,企业可以根据自身的技术栈和需求选择适合的分库分表中间件产品。

上一篇: 五大常见的MySQL高可用方案
下一篇: 成为一名架构师的方法论
推荐文章
  •    目前支持I/O多路复用的系统调用有  select,pselect,poll,epoll,I/O多路复用就是 通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。 但select,pselect,poll,epoll本质上都是
  • 架构师在进行系统设计时,遵循一套复杂且综合的方法论,主要包括以下核心步骤:需求分析:理解并明确业务需求是架构设计的第一步。架构师需要与各利益相关者深入沟通,收集和分析业务需求、性能需求、安全性需求、扩展性需求等。领域建模:基于需求分析,构建抽象的业务模型或数据模型,明确系统的边界、核心实体及其关系。
  • 根据阿里交易型业务的特点,以及在双十一这样业内罕有的需求推动下,我们在官方的MySQL基础上增加了非常多实用的功能、性能补丁。而在使用MySQL的过程中,数据一致性是绕不开的话题之一。本文主要从阿里巴巴“去IOE”的后时代讲起,向大家简单介绍下我们过去几年在MySQL数据一致性上的努力和实践,以及目
  • 随着深度学习在图像、语言、广告点击率预估等各个领域不断发展,很多团队开始探索深度学习技术在业务层面的实践与应用。而在广告CTR预估方面,新模型也是层出不穷:WideandDeep、DeepCrossNetwork、DeepFM、xDeepFM,美团很多篇深度学习博客也做了详细的介绍。但是,当
  • 1.背景搜索优化问题,是个典型的AI应用问题,而AI应用问题首先是个系统问题。经历近10年的技术积累和沉淀,美团搜索系统架构从传统检索引擎升级转变为AI搜索引擎。当前,美团搜索整体架构主要由搜索数据平台、在线检索框架及云搜平台、在线AI服务及实验平台三大体系构成。在AI服务及实验平台中,模型训练平台
  • 行业算法版简介OpenSearch-行业算法版是基于阿里巴巴自主研发的大规模分布式搜索引擎搭建的一站式智能搜索业务开发平台,目前为包括淘宝、天猫在内的阿里集团核心业务提供搜索服务支持。通过内置各行业的查询语义理解、机器学习排序算法等能力,提供充分开放的引擎能力,助力开发者快速搭建智能搜索服务。Ope
学习大纲