首页 > 数据库 >数据库系列: 主流分库分表中间件介绍(图文总结)

数据库系列: 主流分库分表中间件介绍(图文总结)

时间:2024-11-13 19:31:27浏览次数:1  
标签:分库 系列 数据库 中间件 MySQL 分表

数据库系列: 主流分库分表中间件介绍(图文总结)

 

相关文章

数据库系列:MySQL慢查询分析和性能优化
数据库系列:MySQL索引优化总结(综合版)
数据库系列:高并发下的数据字段变更
数据库系列:覆盖索引和规避回表
数据库系列:数据库高可用及无损扩容
数据库系列:使用高区分度索引列提升性能
数据库系列:前缀索引和索引长度的取舍
数据库系列:MySQL引擎MyISAM和InnoDB的比较
数据库系列:InnoDB下实现高并发控制
数据库系列:事务的4种隔离级别
数据库系列:RR和RC下,快照读的区别
数据库系列:MySQL InnoDB锁机制介绍
数据库系列:MySQL不同操作分别用什么锁?
数据库系列:业内主流MySQL数据中间件梳理
数据库系列:巨量数据表的分页性能问题

1 介绍

物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时段大量连接同时执行操作,会导致数据库在处理上遇到性能瓶颈。为了解决这个问题,行业先驱门充分发扬了分而治之的思想,对大库表进行分割,
然后实施更好的控制和管理,同时使用多台机器的CPU、内存、存储,提供更好的性能。而分治有两种实现方式:垂直拆分和水平拆分。

  • 垂直拆分(Scale Up)分为垂直分库和垂直分表,主要按功能模块拆分,以解决各个库或者各个表之间的资源竞争。比如分为订单库、商品库、用户库...这种方式,多个数据库之间的表结构是不同的。
  • 水平拆分(Scale Out)又分为库内分表和分库分表,来解决单表中数据量增长出现的压力,这些数据库中的表结构完全相同。

详细可以参考笔者的这两篇文章:
MySQL全面瓦解28:分库分表
MySQL全面瓦解29:分库分表之Partition功能详解

2 常见主流中间件介绍

既然已经是实现了分库分表的方案,那么就需要有便捷的组件来支持管理.
分库分表中间件是数据库架构中用于解决高并发、大数据量等问题的关键组件。这些中间件通过数据分片、路由、负载均衡等功能,提高了数据库的性能和扩展性。以下是一些常见的分库分表中间件介绍:

2.1 ShardingSphere

概述

  • ShardingSphere是一款开源的分布式数据库中间件,提供了分库分表、读写分离、分布式事务等功能。
  • 它支持多种数据库,如MySQL、PostgreSQL、Oracle、SQL Server等,并且可以与现有的数据库系统无缝集成。

架构与原理

ShardingSphere由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar三个主要组件组成。

  • Sharding-JDBC:用于实现分库分表功能的模块,它可以在应用层通过简单的配置实现透明的分库分表操作。
  • Sharding-Proxy:用于实现数据库代理功能的模块,它可以将数据库请求路由到不同的数据库节点上,实现读写分离和负载均衡。
  • Sharding-Sidecar(规划中):定位为Kubernetes的云原生数据库代理,以Sidecar的形式代理所有对数据库的访问。

image

其原理是通过数据分片和路由来实现分库分表。数据分片是将数据划分为多个片段,每个片段存储在不同的数据库实例或数据表中;路由则是根据数据的分片规则将请求路由到对应的数据库实例或数据表上。

优势与适用场景

  • 灵活的扩展性:支持水平扩展和垂直扩展,可以根据业务需求灵活调整数据库的规模和性能。
  • 高可用性:支持主从复制和多活架构,提供高可用的数据库访问和数据保护。
  • 简化开发和维护:提供了简单易用的接口和配置,可以减少开发人员的工作量和维护成本。
  • 适用于高并发访问、大数据量存储、跨地域部署等场景。

2.2 MyCAT

概述

  • MyCAT是一个开源的分布式数据库中间件,基于Java编写,支持MySQL协议,可以作为MySQL的代理服务器使用。
  • 它支持分库分表、读写分离、全局序列号等功能,并且具有跨语言、跨平台、跨数据库的通用性。

架构与原理

  • MyCAT采用代理模式来实现数据库的路由和分片。
  • 它包括MyCAT-Server和MyCAT-DataNode两个主要部分。MyCAT-Server用于接收客户端的数据库请求,并将请求路由到不同的数据库节点上;MyCAT-DataNode则用于实际存储数据的数据库节点。

image

优势与适用场景

  • 易于部署和使用:对于项目来说是透明的,如果遇到升级之类的操作,只需要在中间件层面进行即可。
  • 适用于大规模MySQL集群的管理和扩展问题。
  • 但是,MyCAT的SQL支持相对较弱,可能需要对SQL语句进行一定的改写和优化。

2.3 Vitess

概述

  • Vitess是由YouTube开发的一个开源分布式数据库中间件,主要用于解决大规模MySQL集群的管理和扩展问题。

架构与原理

  • Vitess提供了数据分片、读写分离、水平扩展等功能,并且具有强大的负载均衡和故障恢复能力。
  • 它通过vtgate(Vitess的查询路由器)来实现对数据库的访问控制和负载均衡。

优势与适用场景

  • 适用于大规模MySQL集群的场景,具有强大的水平扩展和负载均衡功能。
  • 但是,Vitess对于非MySQL数据库的支持较弱,可能不适用于其他类型的数据库系统。

2.4 其他中间件介绍

除了上述三种常见的分库分表中间件外,还有其他一些中间件如Cobar(已逐渐被淘汰)、TDDL(淘宝分布式数据层)、Atlas(Qihoo 360开源)等。这些中间件在特定的历史时期或特定的业务场景下有一定的应用价值,但随着技术的发展和市场的变化,它们的使用范围和影响力逐渐减弱。

3 总结

在选择分库分表中间件时,需要根据具体的业务需求、技术栈、性能要求等因素进行综合考虑。ShardingSphere、MyCAT和Vitess是当前较为流行和成熟的中间件选择,它们各自具有不同的优势和适用场景。同时,也需要关注中间件的发展动态和社区支持情况,以便在后续的技术升级和维护中获得更好的支持。

标签:分库,系列,数据库,中间件,MySQL,分表
From: https://www.cnblogs.com/sexintercourse/p/18544631

相关文章

  • 中间件全球数据实时同步利器,EventGrid事件流重磅发布
    EventGrid事件流(简称EG)作为易用、稳定、高效的数据同步管道连接不同的系统与服务,支持中间件在线同步和实时同步。事件流围绕云中间件,降低了中间件之间数据流通的复杂性,有效地帮助您减少数据传输的成本。适用于上云、跨云数据搬迁和跨云、跨地域备份容灾等场景,为企业上云和容灾业务......
  • 从消息中间件架构发展趋势,探讨物联网平台如何支持亿级设备推送?
    本文分享自《华为云DTSE》第五期开源专刊,作者:贺张俭华为云IoT技术专家随着物联网平台业务的快速增长,基于传统消息中间件构筑面临着处理亿级设备连接和海量数据的挑战。本文分析了消息中间件的架构发展趋势以及核心优势,还探讨了ApachePulsar在华为云IoT平台上的实践应用,展示了华......
  • Kafka概述--消息中间件
    目录1.1定义1.2、kafka的中的组成成员1.3消息队列(中间件)1.3.1传统消息队列的应用场景1.3.2消息队列的两种模式1.4Kafka基础架构1.5、kafka的名词概念1.1定义kafka面试非常的重要,做实时或者准实时项目必用工具(绕不开)。Kafka就是用来存储消息的,消息中间件。......
  • 【国内中间件厂商排名及四大中间件对比分析】
    国内中间件厂商排名随着新兴技术的涌入,一批国产中间件厂商破土而出,并在短时间内迅速发展,我国中间件市场迎来洗牌,根据市占率,当前我国中间件厂商排名依次为:东方通、宝兰德、中创股份、金蝶天燕、普元信息。四大中间件对比以下将根据中间件厂商的主要产品、主要客户、营销方......
  • CentOS部署Kafka中间件
    CentOS部署Kafka中间件 1.环境及版本说明:系统版本:CentOSLinuxrelease7.6.1810(Core)Kafka版本:kafka_2.12-2.2.0JDK版本:1.8.0_2122.安装下载#wget下载安装包wgethttp://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.2.0/kafka_2.12-2.2.0.tgz#无法......
  • 在这个PASS平台上,我们可以在任何云上购买基础的计算、网络、存储资源 ,它提供的一键安
    1. 总体阐述1.1.  当前用户在IT领域的痛点当前的科技企业,在IT领域面临的一个痛点是基础设施的高度依赖性。特别是当企业在运营中 完全依赖某一家云厂商提供的IaaS和PaaS服务时,可能会面临以下问题:缺乏供应商多样性和灵活性,一旦云服务提供商出现故障或服务中断,企业的整个......
  • flaks 钩子函数 | 中间件 | 内置对象 | Flask类视图和RESTfu
    什么是钩子(中间件Middleware)钩子或叫钩子函数,是指在执行函数和目标函数之间挂载的函数,框架开发者给调用方提供一个point-挂载点,是一种AOP切面编程思想,常用的钩子函数before_first_request:处理第一次请求之前执行,before_request:在每次请求之前执行,通常使用这个钩子函......
  • laravel11:中间件传递参数
    一,官方的文档:参考地址:https://docs.golaravel.com/docs/middleware二,演示:功能:一个中间件负责验证用户是否已登录,    传递参数的作用是:在已登录基础是否验证真人身份核验,值为1时要核验,其他情况可以不用1,为中间件注册一个别名:bootstrap/app.php->withMidd......
  • 分库分表
    1.什么是分库分表分库:就是数据库分成多个数据库,部署到不同的机器上。例如:用户表,订单表,积分表,商品表:然后分到:用户库,订单库,积分库,商品库。分表:一个表分成多个表例如:订单表:分成分表1,分表2,分表3;为什么分库:在做任何事情之前我们都要思考,为什么做?为什么要拆分表,拆分表的原......
  • ubuntu-安装docker、中间件
    1、基本命令#查看ubuntu版本lsb_release-a#修改密码sudopasswdubuntu#修改远程端口vim/etc/ssh/sshd_configsudoservicesshrestart#基础软件安装sudoaptinstalliputils-ping-ysudoaptinstallnet-tools-ysudoaptinstallvim-ysudoaptinstallufw-y 2、......